From 9baea704d769e457113d2bd2eccaf0ba9ce95201 Mon Sep 17 00:00:00 2001 From: Bas Zoetekouw Date: Thu, 21 Mar 2024 16:28:15 +0100 Subject: [PATCH] use preferred format of podman command line options Specifically: - use "--network=foo" instead of "--network foo" - specify "--network-alias" multiple times instead of concatenating values Signed-off-by: Bas Zoetekouw --- podman_compose.py | 22 +++--- pytests/test_container_to_args.py | 36 +++------ pytests/test_get_net_args.py | 118 +++++++++++++----------------- 3 files changed, 74 insertions(+), 102 deletions(-) diff --git a/podman_compose.py b/podman_compose.py index f005501..29cc86f 100755 --- a/podman_compose.py +++ b/podman_compose.py @@ -786,18 +786,18 @@ def get_net_args(compose, cnt): if net == "none": is_bridge = False elif net == "host": - net_args.extend(["--network", net]) + net_args.append(f"--network={net}") elif net.startswith("slirp4netns:"): - net_args.extend(["--network", net]) + net_args.append(f"--network={net}") elif net.startswith("ns:"): - net_args.extend(["--network", net]) + net_args.append(f"--network={net}") elif net.startswith("service:"): other_srv = net.split(":", 1)[1].strip() other_cnt = compose.container_names_by_service[other_srv][0] - net_args.extend(["--network", f"container:{other_cnt}"]) + net_args.append(f"--network=container:{other_cnt}") elif net.startswith("container:"): other_cnt = net.split(":", 1)[1].strip() - net_args.extend(["--network", f"container:{other_cnt}"]) + net_args.append(f"--network=container:{other_cnt}") elif net.startswith("bridge"): is_bridge = True else: @@ -905,12 +905,15 @@ def get_net_args(compose, cnt): net_options.append(f"mac={mac}") if net_options: - net_args.extend(["--network", f"{net_name}:" + ",".join(net_options)]) + net_args.append(f"--network={net_name}:" + ",".join(net_options)) else: - net_args.extend(["--network", f"{net_name}"]) + net_args.append(f"--network={net_name}") else: if is_bridge: - net_args.extend(["--network", net_names_str]) + if net_names_str: + net_args.append(f"--network={net_names_str}") + else: + net_args.append("--network=bridge") if ip: net_args.append(f"--ip={ip}") if ip6: @@ -919,7 +922,8 @@ def get_net_args(compose, cnt): net_args.append(f"--mac-address={mac_address}") if is_bridge: - net_args.extend(["--network-alias", ",".join(aliases)]) + for alias in aliases: + net_args.extend([f"--network-alias={alias}"]) return net_args diff --git a/pytests/test_container_to_args.py b/pytests/test_container_to_args.py index 5bfb8c5..4fd8077 100644 --- a/pytests/test_container_to_args.py +++ b/pytests/test_container_to_args.py @@ -37,10 +37,8 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase): [ "--name=project_name_service_name1", "-d", - "--network", - "", - "--network-alias", - "service_name", + "--network=bridge", + "--network-alias=service_name", "busybox", ], ) @@ -57,10 +55,8 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase): [ "--name=project_name_service_name1", "-d", - "--network", - "", - "--network-alias", - "service_name", + "--network=bridge", + "--network-alias=service_name", "--runtime", "runsc", "busybox", @@ -82,10 +78,8 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase): [ "--name=project_name_service_name1", "-d", - "--network", - "", - "--network-alias", - "service_name", + "--network=bridge", + "--network-alias=service_name", "--sysctl", "net.core.somaxconn=1024", "--sysctl", @@ -109,10 +103,8 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase): [ "--name=project_name_service_name1", "-d", - "--network", - "", - "--network-alias", - "service_name", + "--network=bridge", + "--network-alias=service_name", "--sysctl", "net.core.somaxconn=1024", "--sysctl", @@ -143,10 +135,8 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase): [ "--name=project_name_service_name1", "-d", - "--network", - "", - "--network-alias", - "service_name", + "--network=bridge", + "--network-alias=service_name", "--pid", "host", "busybox", @@ -166,10 +156,8 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase): "--name=project_name_service_name1", "-d", "--http-proxy=false", - "--network", - "", - "--network-alias", - "service_name", + "--network=bridge", + "--network-alias=service_name", "busybox", ], ) diff --git a/pytests/test_get_net_args.py b/pytests/test_get_net_args.py index 94cfff3..51970c9 100644 --- a/pytests/test_get_net_args.py +++ b/pytests/test_get_net_args.py @@ -38,13 +38,22 @@ class TestGetNetArgs(unittest.TestCase): def test_minimal(self): compose = get_networked_compose() container = get_minimal_container() + + expected_args = [ + "--network=bridge", + f"--network-alias={SERVICE_NAME}", + ] + args = get_net_args(compose, container) + self.assertListEqual(expected_args, args) + + def test_one_net(self): + compose = get_networked_compose() + container = get_minimal_container() container["networks"] = {"net0": {}} expected_args = [ - "--network", - f"{PROJECT_NAME}_net0", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -56,10 +65,10 @@ class TestGetNetArgs(unittest.TestCase): container["_aliases"] = ["alias1", "alias2"] expected_args = [ - "--network", - f"{PROJECT_NAME}_net0", - "--network-alias", - f"{SERVICE_NAME},alias1,alias2", + f"--network={PROJECT_NAME}_net0", + f"--network-alias={SERVICE_NAME}", + "--network-alias=alias1", + "--network-alias=alias2", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -71,11 +80,9 @@ class TestGetNetArgs(unittest.TestCase): container["networks"] = {"net0": {"ipv4_address": ip}} expected_args = [ - "--network", - f"{PROJECT_NAME}_net0", - "--ip=" + ip, - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0", + f"--ip={ip}", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertEqual(expected_args, args) @@ -87,11 +94,9 @@ class TestGetNetArgs(unittest.TestCase): container["networks"] = {"net0": {"ipv6_address": ipv6_address}} expected_args = [ - "--network", - f"{PROJECT_NAME}_net0", - "--ip6=" + ipv6_address, - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0", + f"--ip6={ipv6_address}", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -104,11 +109,9 @@ class TestGetNetArgs(unittest.TestCase): container["mac_address"] = mac expected_args = [ - "--network", - f"{PROJECT_NAME}_net0", - "--mac-address=" + mac, - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0", + f"--mac-address={mac}", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -121,12 +124,9 @@ class TestGetNetArgs(unittest.TestCase): container["mac_address"] = mac expected_args = [ - "--network", - f"{PROJECT_NAME}_net0:mac={mac}", - "--network", - f"{PROJECT_NAME}_net1", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0:mac={mac}", + f"--network={PROJECT_NAME}_net1", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -137,12 +137,9 @@ class TestGetNetArgs(unittest.TestCase): container["networks"] = {"net0": {}, "net1": {}} expected_args = [ - "--network", - f"{PROJECT_NAME}_net0", - "--network", - f"{PROJECT_NAME}_net1", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0", + f"--network={PROJECT_NAME}_net1", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -153,12 +150,9 @@ class TestGetNetArgs(unittest.TestCase): container["networks"] = ["net0", "net1"] expected_args = [ - "--network", - f"{PROJECT_NAME}_net0", - "--network", - f"{PROJECT_NAME}_net1", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0", + f"--network={PROJECT_NAME}_net1", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -171,12 +165,9 @@ class TestGetNetArgs(unittest.TestCase): container["networks"] = {"net0": {"ipv4_address": ip0}, "net1": {"ipv4_address": ip1}} expected_args = [ - "--network", - f"{PROJECT_NAME}_net0:ip={ip0}", - "--network", - f"{PROJECT_NAME}_net1:ip={ip1}", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0:ip={ip0}", + f"--network={PROJECT_NAME}_net1:ip={ip1}", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -189,12 +180,9 @@ class TestGetNetArgs(unittest.TestCase): container["networks"] = {"net0": {"ipv6_address": ip0}, "net1": {"ipv6_address": ip1}} expected_args = [ - "--network", - f"{PROJECT_NAME}_net0:ip={ip0}", - "--network", - f"{PROJECT_NAME}_net1:ip={ip1}", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0:ip={ip0}", + f"--network={PROJECT_NAME}_net1:ip={ip1}", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -211,12 +199,9 @@ class TestGetNetArgs(unittest.TestCase): } expected_args = [ - "--network", - f"{PROJECT_NAME}_net0:mac={mac0}", - "--network", - f"{PROJECT_NAME}_net1:mac={mac1}", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0:mac={mac0}", + f"--network={PROJECT_NAME}_net1:mac={mac1}", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args) @@ -259,16 +244,11 @@ class TestGetNetArgs(unittest.TestCase): container["mac_address"] = mac expected_args = [ - "--network", - f"{PROJECT_NAME}_net0:ip={ip4_0},ip={ip6_0},mac={mac}", - "--network", - f"{PROJECT_NAME}_net1:ip={ip4_1}", - "--network", - f"{PROJECT_NAME}_net2:ip={ip6_2}", - "--network", - f"{PROJECT_NAME}_net3", - "--network-alias", - SERVICE_NAME, + f"--network={PROJECT_NAME}_net0:ip={ip4_0},ip={ip6_0},mac={mac}", + f"--network={PROJECT_NAME}_net1:ip={ip4_1}", + f"--network={PROJECT_NAME}_net2:ip={ip6_2}", + f"--network={PROJECT_NAME}_net3", + f"--network-alias={SERVICE_NAME}", ] args = get_net_args(compose, container) self.assertListEqual(expected_args, args)