Drop the procedural login → abort wizard → SSH → port → API-key sequence in `boot_vm` and `run_integration`, and replace the bootstrap leg with a single `harmony_cli::run_cli` invocation of `OPNsenseBootstrapScore` against `OPNsenseBootstrapTopology`. The diagnose_via_ssh fallback and the SSH-22 polling loop go away too — both are covered by the Score's own idempotency probe and the per-step error messages the Score emits. Credentials now round-trip through `SecretManager` rather than through local variables: the Score persists `OPNSenseApiCredentials` + `OPNSenseFirewallCredentials` from `--boot` / `--full`, and `run_integration` reads them back when constructing the production `OPNSenseFirewall` topology and the typed `OpnsenseClient` used by the verification step. `SecretManager` panics on a missing `HARMONY_SECRET_NAMESPACE`, so main() sets a binary-specific default if the operator hasn't already exported one. `harmony_secret` is added as a direct dependency. No behavior change for `--check` / `--download` / `--clean` / `--status`. `--boot` and `--full` now emit `[OPNsenseBootstrap/192.168.1.1]`-prefixed log lines from the Score's Interpret. Subsequent `--boot` runs against an already-bootstrapped VM NOOP through the idempotency check instead of re-running the dance. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
27 lines
750 B
TOML
27 lines
750 B
TOML
[package]
|
|
name = "opnsense-vm-integration"
|
|
version.workspace = true
|
|
edition = "2024"
|
|
license.workspace = true
|
|
|
|
[[bin]]
|
|
name = "opnsense-vm-integration"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
harmony = { path = "../../harmony" }
|
|
harmony_cli = { path = "../../harmony_cli" }
|
|
harmony_inventory_agent = { path = "../../harmony_inventory_agent" }
|
|
harmony_macros = { path = "../../harmony_macros" }
|
|
harmony_secret = { path = "../../harmony_secret" }
|
|
harmony_types = { path = "../../harmony_types" }
|
|
opnsense-api = { path = "../../opnsense-api" }
|
|
opnsense-config = { path = "../../opnsense-config" }
|
|
tokio.workspace = true
|
|
log.workspace = true
|
|
env_logger.workspace = true
|
|
reqwest.workspace = true
|
|
russh.workspace = true
|
|
serde_json.workspace = true
|
|
dirs = "6"
|