feat/fleet-e2e-harness-and-ping #286
Closed
johnride
wants to merge 18 commits from
feat/fleet-e2e-harness-and-ping into feat/iot-walking-skeleton
pull from: feat/fleet-e2e-harness-and-ping
merge into: NationTech:feat/iot-walking-skeleton
NationTech:master
NationTech:feat/fleet-ch2-operator-recovery
NationTech:feat/fleet-device-exec-logs
NationTech:feat/zitadel-web-pkce-and-human-user
NationTech:feat/jwt-bearer-openbao-auth
NationTech:feat/fleet-ch5-graceful-deploy-upgrade
NationTech:feat/fleet-ch4-agent-upgrade
NationTech:feat/fleet-ch3-log-streaming
NationTech:feat/add-claims-for-openbao
NationTech:refactor/move-zitadel-jwt-to-module
NationTech:feat/fleet-operator-real-data
NationTech:docs/fleet-secrets-device-access
NationTech:chore/fleet-operator-prune-mock-dtos
NationTech:chore/rename-release-to-publish
NationTech:refactor/config-namespace-env-var
NationTech:feat/fleet-staging-openbao
NationTech:feat/auth-add-next-url-redirect
NationTech:pr/harmony-sso-example
NationTech:feat/unified-config-and-secrets
NationTech:ci/fleet-argo-cd
NationTech:ci/fleet-operator-release-pipeline
NationTech:feat/on-device-key-gen
NationTech:feat/install-gitea
NationTech:feat/v0-3-logs-companion
NationTech:refactor/smoke-companion-minimal
NationTech:feat/smoke-test-contract
NationTech:feat/iobench-redpanda-profile
NationTech:feat/v0-3-dashboard-role-enforcement
NationTech:feat/v0-3-init-containers
NationTech:feat/v0-3-operator-restart-baseline
NationTech:feat/fleet-e2e-x86
NationTech:feat/ceph-score
NationTech:feat/opnsense-bootstrap-score
NationTech:feat/fleet-e2e
NationTech:feat/dashboard-auth
NationTech:feat/fleet-operator-web-frontend
NationTech:feat/deploy_fleet_server_side
NationTech:feat/openwebui
NationTech:feat/iot-aggregation-scale
NationTech:feat/iot-operator-helm-chart
NationTech:feat/removesideeffect
NationTech:feat/test-alert-receivers-sttest
NationTech:feat/brocade-client-add-vlans
NationTech:feat/agent-desired-state
NationTech:feat/opnsense-dns-implementation
NationTech:feat/named-config-instances
NationTech:worktree-bridge-cse_012j1jB37XfjXvDGHUjHrKSj
NationTech:chore/leftover-adr
NationTech:feat/config_e2e_zitadel_openbao
NationTech:example/vllm
NationTech:feat/config_sqlite
NationTech:chore/roadmap
NationTech:feature/kvm-module
NationTech:feat/rustfs
NationTech:feat/harmony_assets
NationTech:feat/brocade_assisted_setup
NationTech:feat/cluster_alerting_score
NationTech:e2e-tests-multicluster
NationTech:fix/refactor_alert_receivers
NationTech:feat/change-node-readiness-strategy
NationTech:feat/zitadel
NationTech:feat/improve-inventory-discovery
NationTech:fix/monitoring_abstractions_openshift
NationTech:feat/nats-jetstream
NationTech:adr-nats-creds
NationTech:feat/st_test
NationTech:feat/dockerAutoinstall
NationTech:chore/cleanup_hacluster
NationTech:doc/cert-management
NationTech:feat/certificate_management
NationTech:adr/017-staleness-failover
NationTech:fix/nats_non_root
NationTech:feat/rebuild_inventory
NationTech:fix/opnsense_update
NationTech:feat/unshedulable_control_planes
NationTech:feat/worker_okd_install
NationTech:doc-and-braindump
NationTech:fix/pxe_install
NationTech:switch-client
NationTech:okd_enable_user_workload_monitoring
NationTech:configure-switch
NationTech:fix/clippy
NationTech:feat/gen-ca-cert
NationTech:feat/okd_default_ingress_class
NationTech:fix/add_routes_to_domain
NationTech:secrets-prompt-editor
NationTech:feat/multisiteApplication
NationTech:feat/ceph-install-score
NationTech:feat/ceph-osd-score
NationTech:feat/ceph_validate_health
NationTech:better-indicatif-progress-grouped
NationTech:feat/crd-alertmanager-configs
NationTech:better-cli
NationTech:opnsense_upgrade
NationTech:feat/monitoring-application-feature
NationTech:dev/postgres
NationTech:feat/cd/localdeploymentdemo
NationTech:feat/webhook_receiver
NationTech:feat/kube-prometheus
NationTech:feat/init_k8s_tenant
NationTech:feat/discord-webhook-receiver
NationTech:feat/kube-prometheus-monitor
NationTech:feat/tenantScore
NationTech:feat/teams-integration
NationTech:feat/slack-notifs
NationTech:monitoring
NationTech:runtime-profiles
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "feat/fleet-e2e-harness-and-ping"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The previous e2e harness handrolled k8s manifests in `stack.rs`, bypassing the Score-Topology-Interpret machinery harmony exists to provide. This commit: 1. **ADR-023** codifies the rules: deploy with Scores (not manifests), e2e uses the same Scores as production, one Score per component, deploy blocks on smoke-test success, deploy logic lives in `*-deploy` crates, topologies are compile-time, thiserror over anyhow. CLAUDE.md mirrors the principles. 2. **New `fleet/harmony-fleet-deploy` crate** is the canonical home for fleet-component Scores: - `FleetOperatorScore` + helm-chart generator + `install_crds` moved out of `harmony::modules::fleet::operator` (they should never have lived in `harmony` core). `FleetServerScore` (composite of NATS + operator + Zitadel + callout) moved too. - New `FleetNatsScore` (preset over `NatsHelmChartScore` with fleet's required values; v1 supports `UserPass` auth, callout mode reserved on the public API for PR 1.5). - New `FleetAgentScore` with `FleetAgentTarget::Pod`; `Vm` target is a future variant that absorbs `FleetDeviceSetupScore`. - `harmony-fleet-deploy` binary built on the existing `harmony_cli` crate — no new CLI scaffolding. 3. **Operator runtime binary trimmed**: `Install` and `Chart` subcommands removed; both jobs now belong to `harmony-fleet-deploy`. The runtime binary becomes leaner. 4. **E2E harness rewritten** as a thin Score composer: `harmony-fleet-e2e/src/stack.rs` deploys the stack via `FleetNatsScore` + `FleetAgentScore`. The inline NATS manifest factory and the bespoke agent Pod renderer are gone. - Bring-up runs once per test binary via `shared_stack` + `tokio::sync::OnceCell` (matches the `fleet_e2e_demo` pattern). - Stale `e2e-*` namespaces from prior runs get pruned at startup so the leaks the OnceCell creates don't compound. 5. **`thiserror` for the agent's `CommandServer`** — replaces the anyhow-based surface with typed `CommandError` / `CommandServerError`. 6. **Memory** captures eight load-bearing principles (saved to `~/.claude/projects/.../memory/`) so future sessions don't drift back into manifest-handrolling. Verified: `cargo test -p harmony-fleet-e2e --test ping` green end-to-end against k3d in 25s warm.Big features, deserves some work to improve architecture quality but this ADR 23 and claude.md additions should help a lot.
@@ -0,0 +53,4 @@/// Concrete inputs for the `Pod` target.#[derive(Debug, Clone, Serialize)]pub struct PodTarget {This should be a type that actually lives in the agent crate, everything is rust so we can use the real types from the agent itself to wire its deployment as safely as possible.
@@ -0,0 +228,4 @@}s};let toml = format!(Can't we serialize a type to toml instead of building a fragile string here?
@@ -0,0 +151,4 @@// `service.merge.spec.ports` list is required — see that example's// comment for the upstream chart's `service.ports.<name>.merge`// quirk that forces this shape.format!(we already do some of this dangerous yaml crafting in the existing nats scores in harmony, can't we leverage proper types to setup the score instead of this dangerous inner yaml here?
Pull request closed