feat(mutator): live teardown for apply_remove_decky
Captures the decky's name and services list before delete_topology_decky runs (the helper needs both as compose targets even though the DB row is gone), then calls _materialise_decky_remove which stops + rm -f's the base + per-service containers via 'docker compose stop / rm -f'. Re-renders the per-topology compose AFTER the stop/rm so a future 'compose up -d' on the file doesn't try to bring the decky back.
This commit is contained in:
@@ -758,7 +758,15 @@ async def apply_remove_decky(
|
||||
decky = _decky_by_name(hydrated, payload["decky"])
|
||||
if decky is None:
|
||||
raise MutationError(f"decky {payload['decky']!r} not found")
|
||||
decky_name = decky["decky_config"]["name"]
|
||||
services_list = list(decky.get("services") or [])
|
||||
await repo.delete_topology_decky(decky["uuid"])
|
||||
# Live materialisation: stop + rm -f the decky's containers. We
|
||||
# capture decky_name + services BEFORE the delete so the helper
|
||||
# has the targets even though the row is gone.
|
||||
await _materialise_decky_remove(
|
||||
repo, topology_id, decky_name, services_list,
|
||||
)
|
||||
await _assert_valid_after(repo, topology_id)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user