diff options
| -rwxr-xr-x | smoketest/scripts/cli/test_interfaces_macsec.py | 23 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_system_ip.py | 11 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_system_ipv6.py | 11 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_vrf.py | 28 | ||||
| -rwxr-xr-x | src/conf_mode/container.py | 1 | ||||
| -rwxr-xr-x | src/conf_mode/system-ip.py | 24 | ||||
| -rwxr-xr-x | src/conf_mode/system-ipv6.py | 22 | 
7 files changed, 75 insertions, 45 deletions
| diff --git a/smoketest/scripts/cli/test_interfaces_macsec.py b/smoketest/scripts/cli/test_interfaces_macsec.py index 30d1ad659..ea0f00071 100755 --- a/smoketest/scripts/cli/test_interfaces_macsec.py +++ b/smoketest/scripts/cli/test_interfaces_macsec.py @@ -139,15 +139,9 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):          # final commit and verify          self.cli_commit()          self.assertIn(interface, interfaces()) -        self.assertIn(interface, interfaces()) -        self.assertEqual(cipher, get_cipher(interface)) -        # check that we use the new macsec_csindex option (T4537) -        tmp = get_config_value(src_interface, 'macsec_csindex') -        self.assertIn("0", tmp) - -        # Check for running process -        self.assertTrue(process_named_running(PROCESS_NAME)) +        # Verify proper cipher suite (T4537) +        self.assertEqual(cipher, get_cipher(interface))      def test_macsec_gcm_aes_256(self):          src_interface = 'eth0' @@ -168,18 +162,12 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):          # final commit and verify          self.cli_commit()          self.assertIn(interface, interfaces()) -        self.assertEqual(cipher, get_cipher(interface)) - -        # check that we use the new macsec_csindex option (T4537) -        tmp = get_config_value(src_interface, 'macsec_csindex') -        self.assertIn("1", tmp) -        # Check for running process -        self.assertTrue(process_named_running(PROCESS_NAME)) +        # Verify proper cipher suite (T4537) +        self.assertEqual(cipher, get_cipher(interface))      def test_macsec_source_interface(self):          # Ensure source-interface can bot be part of any other bond or bridge -          base_bridge = ['interfaces', 'bridge', 'br200']          base_bond = ['interfaces', 'bonding', 'bond200'] @@ -205,9 +193,6 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):              self.cli_commit()              self.assertIn(interface, interfaces()) -        # Check for running process -        self.assertTrue(process_named_running(PROCESS_NAME)) -      def test_macsec_static_keys(self):          src_interface = 'eth0'          interface = 'macsec5' diff --git a/smoketest/scripts/cli/test_system_ip.py b/smoketest/scripts/cli/test_system_ip.py index bd2531084..567416774 100755 --- a/smoketest/scripts/cli/test_system_ip.py +++ b/smoketest/scripts/cli/test_system_ip.py @@ -98,6 +98,16 @@ class TestSystemIP(VyOSUnitTestSHIM.TestCase):          for protocol in protocols:              self.assertIn(f'ip protocol {protocol} route-map route-map-{protocol}', frrconfig) +        # Delete route-maps +        self.cli_delete(['policy', 'route-map']) +        self.cli_delete(base_path + ['protocol']) + +        self.cli_commit() + +        # Verify route-map properly applied to FRR +        frrconfig = self.getFRRconfig('ip protocol', end='', daemon='zebra') +        self.assertNotIn(f'ip protocol', frrconfig) +      def test_system_ip_protocol_non_existing_route_map(self):          non_existing = 'non-existing'          self.cli_set(base_path + ['protocol', 'static', 'route-map', non_existing]) @@ -106,6 +116,7 @@ class TestSystemIP(VyOSUnitTestSHIM.TestCase):          with self.assertRaises(ConfigSessionError):              self.cli_commit()          self.cli_set(['policy', 'route-map', non_existing, 'rule', '10', 'action', 'deny']) +          # Commit again          self.cli_commit() diff --git a/smoketest/scripts/cli/test_system_ipv6.py b/smoketest/scripts/cli/test_system_ipv6.py index 978af3766..225c2d666 100755 --- a/smoketest/scripts/cli/test_system_ipv6.py +++ b/smoketest/scripts/cli/test_system_ipv6.py @@ -109,6 +109,16 @@ class TestSystemIPv6(VyOSUnitTestSHIM.TestCase):                  protocol = 'ospf6'              self.assertIn(f'ipv6 protocol {protocol} route-map route-map-{protocol}', frrconfig) +        # Delete route-maps +        self.cli_delete(['policy', 'route-map']) +        self.cli_delete(base_path + ['protocol']) + +        self.cli_commit() + +        # Verify route-map properly applied to FRR +        frrconfig = self.getFRRconfig('ipv6 protocol', end='', daemon='zebra') +        self.assertNotIn(f'ipv6 protocol', frrconfig) +      def test_system_ipv6_protocol_non_existing_route_map(self):          non_existing = 'non-existing6'          self.cli_set(base_path + ['protocol', 'static', 'route-map', non_existing]) @@ -117,6 +127,7 @@ class TestSystemIPv6(VyOSUnitTestSHIM.TestCase):          with self.assertRaises(ConfigSessionError):              self.cli_commit()          self.cli_set(['policy', 'route-map', non_existing, 'rule', '10', 'action', 'deny']) +          # Commit again          self.cli_commit() diff --git a/smoketest/scripts/cli/test_vrf.py b/smoketest/scripts/cli/test_vrf.py index 5fb599a87..0f658f366 100755 --- a/smoketest/scripts/cli/test_vrf.py +++ b/smoketest/scripts/cli/test_vrf.py @@ -315,6 +315,19 @@ class VRFTest(VyOSUnitTestSHIM.TestCase):              for protocol in v4_protocols:                  self.assertIn(f' ip protocol {protocol} route-map route-map-{vrf}-{protocol}', frrconfig) +        # Delete route-maps +        for vrf in vrfs: +            base = base_path + ['name', vrf] +            self.cli_delete(['policy', 'route-map', f'route-map-{vrf}-{protocol}']) +            self.cli_delete(base + ['ip', 'protocol']) + +        self.cli_commit() + +        # Verify route-map properly is removed from FRR +        for vrf in vrfs: +            frrconfig = self.getFRRconfig(f'vrf {vrf}', daemon='zebra') +            self.assertNotIn(f'vrf {vrf}', frrconfig) +      def test_vrf_ip_ipv6_protocol_non_existing_route_map(self):          table = '6100'          non_existing = 'non-existing' @@ -369,6 +382,19 @@ class VRFTest(VyOSUnitTestSHIM.TestCase):                  route_map = f'route-map-{vrf}-{protocol}'                  self.assertIn(f' ipv6 protocol {protocol} route-map {route_map}', frrconfig) +        # Delete route-maps +        for vrf in vrfs: +            base = base_path + ['name', vrf] +            self.cli_delete(['policy', 'route-map', f'route-map-{vrf}-{protocol}']) +            self.cli_delete(base + ['ipv6', 'protocol']) + +        self.cli_commit() + +        # Verify route-map properly is removed from FRR +        for vrf in vrfs: +            frrconfig = self.getFRRconfig(f'vrf {vrf}', daemon='zebra') +            self.assertNotIn(f'vrf {vrf}', frrconfig) +      def test_vrf_vni_duplicates(self):          base_table = '6300'          table = base_table @@ -463,4 +489,4 @@ class VRFTest(VyOSUnitTestSHIM.TestCase):  if __name__ == '__main__': -    unittest.main(verbosity=2) +    unittest.main(verbosity=2, failfast=True) diff --git a/src/conf_mode/container.py b/src/conf_mode/container.py index 478868a9a..754742c37 100755 --- a/src/conf_mode/container.py +++ b/src/conf_mode/container.py @@ -463,6 +463,7 @@ def apply(container):              # it to a VRF as there's no consumer, yet.              if os.path.exists(f'/sys/class/net/{network_name}'):                  tmp = Interface(network_name) +                tmp.add_ipv6_eui64_address('fe80::/64')                  tmp.set_vrf(network_config.get('vrf', ''))      return None diff --git a/src/conf_mode/system-ip.py b/src/conf_mode/system-ip.py index 9ed34c735..5e4e5ec28 100755 --- a/src/conf_mode/system-ip.py +++ b/src/conf_mode/system-ip.py @@ -61,8 +61,7 @@ def verify(opt):      return  def generate(opt): -    if 'protocol' in opt: -        opt['frr_zebra_config'] = render_to_string('frr/zebra.route-map.frr.j2', opt) +    opt['frr_zebra_config'] = render_to_string('frr/zebra.route-map.frr.j2', opt)      return  def apply(opt): @@ -116,17 +115,16 @@ def apply(opt):      value = '48' if (tmp is None) else tmp      sysctl_write('net.ipv4.tcp_mtu_probe_floor', value) -    if 'protocol' in opt: -        zebra_daemon = 'zebra' -        # Save original configuration prior to starting any commit actions -        frr_cfg = frr.FRRConfig() - -        # The route-map used for the FIB (zebra) is part of the zebra daemon -        frr_cfg.load_configuration(zebra_daemon) -        frr_cfg.modify_section(r'ip protocol \w+ route-map [-a-zA-Z0-9.]+', stop_pattern='(\s|!)') -        if 'frr_zebra_config' in opt: -            frr_cfg.add_before(frr.default_add_before, opt['frr_zebra_config']) -        frr_cfg.commit_configuration(zebra_daemon) +    zebra_daemon = 'zebra' +    # Save original configuration prior to starting any commit actions +    frr_cfg = frr.FRRConfig() + +    # The route-map used for the FIB (zebra) is part of the zebra daemon +    frr_cfg.load_configuration(zebra_daemon) +    frr_cfg.modify_section(r'ip protocol \w+ route-map [-a-zA-Z0-9.]+', stop_pattern='(\s|!)') +    if 'frr_zebra_config' in opt: +        frr_cfg.add_before(frr.default_add_before, opt['frr_zebra_config']) +    frr_cfg.commit_configuration(zebra_daemon)  if __name__ == '__main__':      try: diff --git a/src/conf_mode/system-ipv6.py b/src/conf_mode/system-ipv6.py index 8a4df11fa..e40ed38e2 100755 --- a/src/conf_mode/system-ipv6.py +++ b/src/conf_mode/system-ipv6.py @@ -61,8 +61,7 @@ def verify(opt):      return  def generate(opt): -    if 'protocol' in opt: -        opt['frr_zebra_config'] = render_to_string('frr/zebra.route-map.frr.j2', opt) +    opt['frr_zebra_config'] = render_to_string('frr/zebra.route-map.frr.j2', opt)      return  def apply(opt): @@ -94,17 +93,16 @@ def apply(opt):              if name == 'accept_dad':                  write_file(os.path.join(root, name), value) -    if 'protocol' in opt: -        zebra_daemon = 'zebra' -        # Save original configuration prior to starting any commit actions -        frr_cfg = frr.FRRConfig() +    zebra_daemon = 'zebra' +    # Save original configuration prior to starting any commit actions +    frr_cfg = frr.FRRConfig() -        # The route-map used for the FIB (zebra) is part of the zebra daemon -        frr_cfg.load_configuration(zebra_daemon) -        frr_cfg.modify_section(r'ipv6 protocol \w+ route-map [-a-zA-Z0-9.]+', stop_pattern='(\s|!)') -        if 'frr_zebra_config' in opt: -            frr_cfg.add_before(frr.default_add_before, opt['frr_zebra_config']) -        frr_cfg.commit_configuration(zebra_daemon) +    # The route-map used for the FIB (zebra) is part of the zebra daemon +    frr_cfg.load_configuration(zebra_daemon) +    frr_cfg.modify_section(r'ipv6 protocol \w+ route-map [-a-zA-Z0-9.]+', stop_pattern='(\s|!)') +    if 'frr_zebra_config' in opt: +        frr_cfg.add_before(frr.default_add_before, opt['frr_zebra_config']) +    frr_cfg.commit_configuration(zebra_daemon)  if __name__ == '__main__':      try: | 
