From ae6b2bef59cfee31ed2d86f771372d3bc2b2b986 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Thu, 20 Feb 2025 16:19:48 -0800 Subject: [PATCH] Fix compatibility issues with podman system (#415) - "dokcer inspect" doesn't return State/Status if container is not running - "docker remove" is not a command supported by podman - "docker logs" expect -f to be passed before container name --- arch/tools/cli/core.py | 2 +- arch/tools/cli/docker_cli.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/tools/cli/core.py b/arch/tools/cli/core.py index 291ca808..b263aed2 100644 --- a/arch/tools/cli/core.py +++ b/arch/tools/cli/core.py @@ -121,7 +121,7 @@ def stop_arch(): ["docker", "stop", ARCHGW_DOCKER_NAME], ) subprocess.run( - ["docker", "remove", ARCHGW_DOCKER_NAME], + ["docker", "rm", ARCHGW_DOCKER_NAME], ) log.info("Successfully shut down arch gateway service.") diff --git a/arch/tools/cli/docker_cli.py b/arch/tools/cli/docker_cli.py index edb8f764..6b8e3b59 100644 --- a/arch/tools/cli/docker_cli.py +++ b/arch/tools/cli/docker_cli.py @@ -15,7 +15,9 @@ def docker_container_status(container: str) -> str: ) if result.returncode != 0: return "not found" - return json.loads(result.stdout)[0]["State"]["Status"] + + container_status = json.loads(result.stdout)[0] + return container_status.get("State", {}).get("Status", "") def docker_stop_container(container: str) -> str: @@ -27,7 +29,7 @@ def docker_stop_container(container: str) -> str: def docker_remove_container(container: str) -> str: result = subprocess.run( - ["docker", "remove", container], capture_output=True, text=True, check=False + ["docker", "rm", container], capture_output=True, text=True, check=False ) return result.returncode @@ -90,9 +92,10 @@ def stream_gateway_logs(follow): """ log.info("Logs from arch gateway service.") - options = ["docker", "logs", ARCHGW_DOCKER_NAME] + options = ["docker", "logs"] if follow: options.append("-f") + options.append(ARCHGW_DOCKER_NAME) try: # Run `docker-compose logs` to stream logs from the gateway service subprocess.run(