feat(canary): seed baseline canaries on MazeNET deckies
Topology deploys now plant the configured canary baseline set on every decky in the topology, mirroring the fleet-deploy hook. Containers are resolved via resolve_topology_container — <decky>-ssh when the decky exposes an ssh service, else the topology base container decnet_t_<id8>_<decky>. The planter's plant/revoke/seed_baseline grow an optional container= kwarg; default preserves the fleet <name>-ssh resolution.
This commit is contained in:
@@ -954,6 +954,18 @@ async def deploy_topology(repo, topology_id: str, *, dry_run: bool = False) -> N
|
||||
await transition_status(repo, topology_id, TopologyStatus.ACTIVE)
|
||||
log.info("topology %s deployed n_lans=%d", topology_id, len(lans))
|
||||
|
||||
# Best-effort canary baseline seed across every decky in the
|
||||
# topology. Same resilience contract as the fleet path: failures
|
||||
# surface as state=failed token rows, never abort the deploy.
|
||||
try:
|
||||
from decnet.canary import planter as _canary_planter
|
||||
await _canary_planter.seed_baseline_topology(repo, topology_id)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
log.warning(
|
||||
"canary baseline seed failed (best-effort) topology=%s err=%s",
|
||||
topology_id, exc,
|
||||
)
|
||||
|
||||
|
||||
@_traced("engine.teardown_topology")
|
||||
async def teardown_topology(repo, topology_id: str) -> None:
|
||||
|
||||
Reference in New Issue
Block a user