fix(topology): anchor compose path to run dir, stop install-dir litter
_topology_compose_path returned a CWD-relative Path, so every deploy/mutate/dry-run wrote decnet-topology-<id8>-compose.yml into the process CWD (the install dir). Teardown computed the same relative path against its own CWD, so when it differed the unlink() missed the orphan and files accumulated forever. Anchor to $DECNET_RUN_DIR (default /var/lib/decnet/topologies, tempdir fallback) so write and teardown always agree regardless of CWD.
This commit is contained in:
@@ -5,8 +5,10 @@ Deploy, teardown, and status via Docker SDK + subprocess docker compose.
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import subprocess # nosec B404
|
||||
import tempfile
|
||||
import time
|
||||
from pathlib import Path
|
||||
from typing import cast
|
||||
@@ -833,7 +835,16 @@ def _teardown_order(lans: list[dict]) -> list[str]:
|
||||
|
||||
|
||||
def _topology_compose_path(topology_id: str) -> Path:
|
||||
return Path(f"decnet-topology-{topology_id[:8]}-compose.yml")
|
||||
# Anchor to a stable absolute dir so write and teardown agree
|
||||
# regardless of process CWD — a CWD-relative path littered the
|
||||
# install tree and let teardown's unlink() miss orphaned files.
|
||||
base = Path(os.environ.get("DECNET_RUN_DIR", "/var/lib/decnet/topologies"))
|
||||
try:
|
||||
base.mkdir(parents=True, exist_ok=True)
|
||||
except OSError:
|
||||
base = Path(tempfile.gettempdir()) / "decnet-topologies"
|
||||
base.mkdir(parents=True, exist_ok=True)
|
||||
return base / f"decnet-topology-{topology_id[:8]}-compose.yml"
|
||||
|
||||
|
||||
def _topology_compose_project(topology_id: str) -> str:
|
||||
|
||||
Reference in New Issue
Block a user