summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli
diff options
context:
space:
mode:
authorl0crian1 <ryan.claridge13@gmail.com>2025-08-28 15:24:45 -0400
committerl0crian1 <ryan.claridge13@gmail.com>2025-08-28 15:24:45 -0400
commit86b3b035b8559ee5dd8da8d4a57a11c041b32882 (patch)
tree2e67aca37d6e1eb6d3b60e8ad8ed06b9bc1a99ec /smoketest/scripts/cli
parent133cb0c65d5aa2ca5a96feba6ab7adc3a8f1de58 (diff)
downloadvyos-1x-86b3b035b8559ee5dd8da8d4a57a11c041b32882.tar.gz
vyos-1x-86b3b035b8559ee5dd8da8d4a57a11c041b32882.zip
container: T7186: Add macvlan network type for containers
Modified: - interface-definitions/container.xml.in: - Add macvlan network type - Add gateway option - python/vyos/utils/network.py: - Add gen_mac function to generate mac address - smoketest/scripts/cli/test_container.py: - Add test for container network types - src/conf_mode/container.py: - Add support for macvlan network type - Add gateway option
Diffstat (limited to 'smoketest/scripts/cli')
-rwxr-xr-xsmoketest/scripts/cli/test_container.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_container.py b/smoketest/scripts/cli/test_container.py
index 7590ed1cd..864207308 100755
--- a/smoketest/scripts/cli/test_container.py
+++ b/smoketest/scripts/cli/test_container.py
@@ -165,6 +165,64 @@ class TestContainer(VyOSUnitTestSHIM.TestCase):
# Check for running process
self.assertEqual(process_named_running(PROCESS_NAME), pid)
+ def test_network_types(self):
+ self.cli_set(['interfaces', 'ethernet', 'eth0', 'vif', '100'])
+ self.cli_set(['interfaces', 'ethernet', 'eth0', 'vif', '101'])
+
+ # MACVLAN Networks
+ self.cli_set(base_path + ['network', 'macvlan1', 'prefix', '10.0.0.0/24'])
+ self.cli_set(base_path + ['network', 'macvlan1', 'type', 'macvlan', 'parent', 'eth0'])
+ self.cli_set(base_path + ['network', 'macvlan1', 'type', 'macvlan', 'mode', 'bridge'])
+ self.cli_set(base_path + ['network', 'macvlan2', 'prefix', '10.0.100.0/24'])
+ self.cli_set(base_path + ['network', 'macvlan2', 'gateway', '10.0.100.5'])
+ self.cli_set(base_path + ['network', 'macvlan2', 'type', 'macvlan', 'parent', 'eth0.100'])
+ self.cli_set(base_path + ['network', 'macvlan2', 'type', 'macvlan', 'mode', 'private'])
+ self.cli_set(base_path + ['network', 'macvlan3', 'prefix', '2001::/64'])
+ self.cli_set(base_path + ['network', 'macvlan3', 'type', 'macvlan', 'parent', 'eth0.101'])
+ self.cli_set(base_path + ['network', 'macvlan3', 'type', 'macvlan', 'mode', 'vepa'])
+
+ # Bridge Network
+ self.cli_set(base_path + ['network', 'bridge1', 'prefix', '10.0.1.0/24'])
+ self.cli_set(base_path + ['network', 'bridge1', 'type', 'bridge'])
+
+ # Bridge Network before T7186; default network type is bridge
+ self.cli_set(base_path + ['network', 'bridge2', 'prefix', '10.0.2.0/24'])
+
+ self.cli_commit()
+
+ n = cmd_to_json(f'sudo podman network inspect macvlan1')
+ self.assertEqual(n['driver'], 'macvlan')
+ self.assertEqual(n['network_interface'], 'eth0')
+ self.assertEqual(n['options']['mode'], 'bridge')
+ self.assertEqual(n['subnets'][0]['subnet'], '10.0.0.0/24')
+ self.assertEqual(n['subnets'][0]['gateway'], '10.0.0.1')
+
+ n = cmd_to_json(f'sudo podman network inspect macvlan2')
+ self.assertEqual(n['driver'], 'macvlan')
+ self.assertEqual(n['network_interface'], 'eth0.100')
+ self.assertEqual(n['options']['mode'], 'private')
+ self.assertEqual(n['subnets'][0]['subnet'], '10.0.100.0/24')
+ self.assertEqual(n['subnets'][0]['gateway'], '10.0.100.5')
+
+ n = cmd_to_json(f'sudo podman network inspect macvlan3')
+ self.assertEqual(n['driver'], 'macvlan')
+ self.assertEqual(n['network_interface'], 'eth0.101')
+ self.assertEqual(n['options']['mode'], 'vepa')
+ self.assertEqual(n['subnets'][0]['subnet'], '2001::/64')
+ self.assertEqual(n['subnets'][0]['gateway'], '2001::1')
+
+ n = cmd_to_json(f'sudo podman network inspect bridge1')
+ self.assertEqual(n['driver'], 'bridge')
+ self.assertEqual(n['network_interface'], 'pod-bridge1')
+ self.assertEqual(n['subnets'][0]['subnet'], '10.0.1.0/24')
+ self.assertEqual(n['subnets'][0]['gateway'], '10.0.1.1')
+
+ n = cmd_to_json(f'sudo podman network inspect bridge2')
+ self.assertEqual(n['driver'], 'bridge')
+ self.assertEqual(n['network_interface'], 'pod-bridge2')
+ self.assertEqual(n['subnets'][0]['subnet'], '10.0.2.0/24')
+ self.assertEqual(n['subnets'][0]['gateway'], '10.0.2.1')
+
def test_ipv4_network(self):
prefix = '192.0.2.0/24'
base_name = 'ipv4'