mirror of
https://github.com/containers/podman-compose.git
synced 2024-11-25 09:23:31 +01:00
podman-compose down removes networks
Fixes #490 Signed-off-by: Timon de Groot <timon.degroot@hypernode.com>
This commit is contained in:
parent
a3fb4b373a
commit
db0aad97bd
1
newsfragments/down-removes-network.feature
Normal file
1
newsfragments/down-removes-network.feature
Normal file
@ -0,0 +1 @@
|
|||||||
|
podman-compose down removes networks.
|
@ -1452,6 +1452,24 @@ class Podman:
|
|||||||
log.info("exit code: %s", exit_code)
|
log.info("exit code: %s", exit_code)
|
||||||
return exit_code
|
return exit_code
|
||||||
|
|
||||||
|
async def network_ls(self):
|
||||||
|
output = (
|
||||||
|
await self.output(
|
||||||
|
[],
|
||||||
|
"network",
|
||||||
|
[
|
||||||
|
"ls",
|
||||||
|
"--noheading",
|
||||||
|
"--filter",
|
||||||
|
f"label=io.podman.compose.project={self.compose.project_name}",
|
||||||
|
"--format",
|
||||||
|
"{{.Name}}",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
).decode()
|
||||||
|
networks = output.splitlines()
|
||||||
|
return networks
|
||||||
|
|
||||||
async def volume_ls(self):
|
async def volume_ls(self):
|
||||||
output = (
|
output = (
|
||||||
await self.output(
|
await self.output(
|
||||||
@ -2612,7 +2630,7 @@ def get_volume_names(compose, cnt):
|
|||||||
|
|
||||||
|
|
||||||
@cmd_run(podman_compose, "down", "tear down entire stack")
|
@cmd_run(podman_compose, "down", "tear down entire stack")
|
||||||
async def compose_down(compose, args):
|
async def compose_down(compose: PodmanCompose, args):
|
||||||
excluded = get_excluded(compose, args)
|
excluded = get_excluded(compose, args)
|
||||||
podman_args = []
|
podman_args = []
|
||||||
timeout_global = getattr(args, "timeout", None)
|
timeout_global = getattr(args, "timeout", None)
|
||||||
@ -2678,6 +2696,8 @@ async def compose_down(compose, args):
|
|||||||
return
|
return
|
||||||
for pod in compose.pods:
|
for pod in compose.pods:
|
||||||
await compose.podman.run([], "pod", ["rm", pod["name"]])
|
await compose.podman.run([], "pod", ["rm", pod["name"]])
|
||||||
|
for network in await compose.podman.network_ls():
|
||||||
|
await compose.podman.run([], "network", ["rm", network])
|
||||||
|
|
||||||
|
|
||||||
@cmd_run(podman_compose, "ps", "show status of containers")
|
@cmd_run(podman_compose, "ps", "show status of containers")
|
||||||
|
23
tests/integration/network/docker-compose.yml
Normal file
23
tests/integration/network/docker-compose.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
version: "3"
|
||||||
|
networks:
|
||||||
|
mystack:
|
||||||
|
services:
|
||||||
|
web1:
|
||||||
|
image: busybox
|
||||||
|
hostname: web1
|
||||||
|
command: ["/bin/busybox", "httpd", "-f", "-h", "/var/www/html", "-p", "8001"]
|
||||||
|
working_dir: /var/www/html
|
||||||
|
ports:
|
||||||
|
- 8001:8001
|
||||||
|
volumes:
|
||||||
|
- ./test1.txt:/var/www/html/index.txt:ro,z
|
||||||
|
web2:
|
||||||
|
image: busybox
|
||||||
|
hostname: web2
|
||||||
|
command: ["/bin/busybox", "httpd", "-f", "-h", "/var/www/html", "-p", "8001"]
|
||||||
|
working_dir: /var/www/html
|
||||||
|
ports:
|
||||||
|
- 8002:8001
|
||||||
|
volumes:
|
||||||
|
- ./test2.txt:/var/www/html/index.txt:ro,z
|
||||||
|
|
1
tests/integration/network/test1.txt
Normal file
1
tests/integration/network/test1.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
test1
|
1
tests/integration/network/test2.txt
Normal file
1
tests/integration/network/test2.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
test2
|
@ -48,7 +48,7 @@ class TestPodmanCompose(unittest.TestCase, RunSubprocessMixin):
|
|||||||
]
|
]
|
||||||
|
|
||||||
out, _ = self.run_subprocess_assert_returncode(run_cmd)
|
out, _ = self.run_subprocess_assert_returncode(run_cmd)
|
||||||
self.assertIn(b'127.0.0.1\tlocalhost', out)
|
self.assertIn(b"127.0.0.1\tlocalhost", out)
|
||||||
|
|
||||||
# Run it again to make sure we can run it twice. I saw an issue where a second run, with
|
# Run it again to make sure we can run it twice. I saw an issue where a second run, with
|
||||||
# the container left up, would fail
|
# the container left up, would fail
|
||||||
@ -67,7 +67,7 @@ class TestPodmanCompose(unittest.TestCase, RunSubprocessMixin):
|
|||||||
]
|
]
|
||||||
|
|
||||||
out, _ = self.run_subprocess_assert_returncode(run_cmd)
|
out, _ = self.run_subprocess_assert_returncode(run_cmd)
|
||||||
self.assertIn(b'127.0.0.1\tlocalhost', out)
|
self.assertIn(b"127.0.0.1\tlocalhost", out)
|
||||||
|
|
||||||
# This leaves a container running. Not sure it's intended, but it matches docker-compose
|
# This leaves a container running. Not sure it's intended, but it matches docker-compose
|
||||||
down_cmd = [
|
down_cmd = [
|
||||||
@ -187,3 +187,28 @@ class TestPodmanCompose(unittest.TestCase, RunSubprocessMixin):
|
|||||||
],
|
],
|
||||||
1,
|
1,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_down_with_network(self):
|
||||||
|
try:
|
||||||
|
self.run_subprocess_assert_returncode([
|
||||||
|
"coverage",
|
||||||
|
"run",
|
||||||
|
podman_compose_path(),
|
||||||
|
"-f",
|
||||||
|
os.path.join(test_path(), "network", "docker-compose.yml"),
|
||||||
|
"up",
|
||||||
|
"-d",
|
||||||
|
])
|
||||||
|
output, _, _ = self.run_subprocess(["podman", "network", "ls"])
|
||||||
|
self.assertIn("network_mystack", output.decode())
|
||||||
|
finally:
|
||||||
|
self.run_subprocess_assert_returncode([
|
||||||
|
"coverage",
|
||||||
|
"run",
|
||||||
|
podman_compose_path(),
|
||||||
|
"-f",
|
||||||
|
os.path.join(test_path(), "network", "docker-compose.yml"),
|
||||||
|
"down",
|
||||||
|
])
|
||||||
|
output, _, _ = self.run_subprocess(["podman", "network", "ls"])
|
||||||
|
self.assertNotIn("network_mystack", output.decode())
|
||||||
|
Loading…
Reference in New Issue
Block a user