summaryrefslogtreecommitdiff
path: root/smoketest/scripts/cli/test_interfaces_vxlan.py
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2024-07-26 12:51:49 +0200
committerGitHub <noreply@github.com>2024-07-26 12:51:49 +0200
commit6b96def0e8760f6ff6a90cae5179600d674bbcbd (patch)
tree75d0be0397a65892640c2d6032658cffaa8abe11 /smoketest/scripts/cli/test_interfaces_vxlan.py
parent609f4b9c1bb7f3144a997f76e74e86bef0559b23 (diff)
parentce5460f0380a60eb07f70dfed29d1b011636448a (diff)
downloadvyos-1x-6b96def0e8760f6ff6a90cae5179600d674bbcbd.tar.gz
vyos-1x-6b96def0e8760f6ff6a90cae5179600d674bbcbd.zip
Merge pull request #3881 from vyos/mergify/bp/circinus/pr-3756
vxlan: T6505: Support VXLAN VLAN-VNI range mapping in CLI (backport #3756)
Diffstat (limited to 'smoketest/scripts/cli/test_interfaces_vxlan.py')
-rwxr-xr-xsmoketest/scripts/cli/test_interfaces_vxlan.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_interfaces_vxlan.py b/smoketest/scripts/cli/test_interfaces_vxlan.py
index 18676491b..b2076b43b 100755
--- a/smoketest/scripts/cli/test_interfaces_vxlan.py
+++ b/smoketest/scripts/cli/test_interfaces_vxlan.py
@@ -27,6 +27,13 @@ from vyos.utils.network import get_vxlan_vni_filter
from vyos.template import is_ipv6
from base_interfaces_test import BasicInterfaceTest
+def convert_to_list(ranges_to_convert):
+ result_list = []
+ for r in ranges_to_convert:
+ ranges = r.split('-')
+ result_list.extend([str(i) for i in range(int(ranges[0]), int(ranges[1]) + 1)])
+ return result_list
+
class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
@classmethod
def setUpClass(cls):
@@ -153,6 +160,11 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
'31': '10031',
}
+ vlan_to_vni_ranges = {
+ '40-43': '10040-10043',
+ '45-47': '10045-10047'
+ }
+
self.cli_set(self._base_path + [interface, 'parameters', 'external'])
self.cli_set(self._base_path + [interface, 'source-address', source_address])
@@ -185,6 +197,26 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
tmp = get_vxlan_vlan_tunnels('vxlan0')
self.assertEqual(tmp, list(vlan_to_vni))
+ # add ranged VLAN - VNI mapping
+ for vlan, vni in vlan_to_vni_ranges.items():
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', vlan, 'vni', vni])
+ self.cli_commit()
+
+ tmp = get_vxlan_vlan_tunnels('vxlan0')
+ vlans_list = convert_to_list(vlan_to_vni_ranges.keys())
+ self.assertEqual(tmp, list(vlan_to_vni) + vlans_list)
+
+ # check validate() - cannot map VNI range to a single VLAN id
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', '100', 'vni', '100-102'])
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+ self.cli_delete(self._base_path + [interface, 'vlan-to-vni', '100'])
+
+ # check validate() - cannot map VLAN to VNI with different ranges
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', '100-102', 'vni', '100-105'])
+ with self.assertRaises(ConfigSessionError):
+ self.cli_commit()
+
self.cli_delete(['interfaces', 'bridge', bridge])
def test_vxlan_neighbor_suppress(self):
@@ -287,6 +319,12 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
'60': '10060',
'69': '10069',
}
+
+ vlan_to_vni_ranges = {
+ '70-73': '10070-10073',
+ '75-77': '10075-10077'
+ }
+
for vlan, vni in vlan_to_vni.items():
self.cli_set(self._base_path + [interface, 'vlan-to-vni', vlan, 'vni', vni])
# we need a bridge ...
@@ -313,6 +351,15 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):
tmp = get_vxlan_vni_filter(interface)
self.assertListEqual(list(vlan_to_vni.values()), tmp)
+ # add ranged VLAN - VNI mapping
+ for vlan, vni in vlan_to_vni_ranges.items():
+ self.cli_set(self._base_path + [interface, 'vlan-to-vni', vlan, 'vni', vni])
+ self.cli_commit()
+
+ tmp = get_vxlan_vni_filter(interface)
+ vnis_list = convert_to_list(vlan_to_vni_ranges.values())
+ self.assertListEqual(list(vlan_to_vni.values()) + vnis_list, tmp)
+
self.cli_delete(['interfaces', 'bridge', bridge])
if __name__ == '__main__':