Skip to content

Commit 967bced

Browse files
committed
Fix dependency field selection in get_excluded() function
Previously, get_excluded() determined the dependency field based on args.command, but this caused issues during teardown actions where `podman-compose up` would pass `command=up` while needing dependents rather than dependencies. This change introduces an explicit dep_field parameter to eliminate the ambiguity and ensure correct dependency resolution. Signed-off-by: Songmin Li <[email protected]>
1 parent 4aa11de commit 967bced

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

podman_compose.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,7 +1438,7 @@ def calc_dependents(services: dict[str, Any]) -> None:
14381438
deps: set[ServiceDependency] = srv.get("_deps", set())
14391439
for dep in deps:
14401440
if dep.name in services:
1441-
services[dep.name].setdefault("_dependents", set()).add(
1441+
services[dep.name].setdefault(DependField.DEPENDENTS, set()).add(
14421442
ServiceDependency(name, dep.condition.value)
14431443
)
14441444

@@ -3036,11 +3036,19 @@ async def create_pods(compose: PodmanCompose) -> None:
30363036
await compose.podman.run([], "pod", podman_args)
30373037

30383038

3039-
def get_excluded(compose: PodmanCompose, args: argparse.Namespace) -> set[str]:
3039+
class DependField(str, Enum):
3040+
DEPENDENCIES = "_deps"
3041+
DEPENDENTS = "_dependents"
3042+
3043+
3044+
def get_excluded(
3045+
compose: PodmanCompose,
3046+
args: argparse.Namespace,
3047+
dep_field: DependField = DependField.DEPENDENCIES,
3048+
) -> set[str]:
30403049
excluded = set()
30413050
if args.services:
30423051
excluded = set(compose.services)
3043-
dep_field = "_dependents" if args.command in ["down"] else "_deps"
30443052
for service in args.services:
30453053
# we need 'getattr' as compose_down_parse dose not configure 'no_deps'
30463054
if service in compose.services and not getattr(args, "no_deps", False):
@@ -3335,7 +3343,7 @@ def get_volume_names(compose: PodmanCompose, cnt: dict) -> list[str]:
33353343

33363344
@cmd_run(podman_compose, "down", "tear down entire stack")
33373345
async def compose_down(compose: PodmanCompose, args: argparse.Namespace) -> None:
3338-
excluded = get_excluded(compose, args)
3346+
excluded = get_excluded(compose, args, DependField.DEPENDENTS)
33393347
podman_args: list[str] = []
33403348
timeout_global = getattr(args, "timeout", None)
33413349
containers = list(reversed(compose.containers))

0 commit comments

Comments
 (0)