Exemple #1
0
    def test_enable_disable(self):

        # For failures
        self.maxDiff = None

        # Set testbed
        Genie.testbed = testbed = Testbed()
        dev1 = Device(testbed=testbed, name='PE1', os='nxos')

        # Create Vlan object
        vlan1 = Vlan()
        dev1.add_feature(vlan1)
        vlan1.device_attr[dev1].enabled = True

        # Check config strings built correctly
        cfgs = vlan1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfgs[dev1.name]),
            '\n'.join([
                'feature interface-vlan',
                'feature vn-segment-vlan-based',
            ]))

        # Unconfigure
        uncfgs = vlan1.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfgs[dev1.name]),
            '\n'.join([
                'no feature interface-vlan',
                'no feature vn-segment-vlan-based',
            ]))

        dev1.remove_feature(vlan1)

        # Create Vlan object
        vlan2 = Vlan()
        dev1.add_feature(vlan2)
        vlan2.device_attr[dev1].enabled_interface_vlan = True

        # Check config strings built correctly
        cfgs = vlan2.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfgs[dev1.name]),
            '\n'.join([
                'feature interface-vlan',
            ]))

        # Unconfigure
        uncfgs = vlan2.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfgs[dev1.name]),
            '\n'.join([
                'no feature interface-vlan',
            ]))

        # Remove feature
        dev1.remove_feature(vlan2)

        # Create Vlan object
        vlan3 = Vlan()
        dev1.add_feature(vlan3)
        vlan3.device_attr[dev1].enabled_vn_segment_vlan_based = True

        # Build config
        cfgs = vlan3.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfgs[dev1.name]),
            '\n'.join([
                'feature vn-segment-vlan-based',
            ]))

        # Unconfigure
        uncfgs = vlan3.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfgs[dev1.name]),
            '\n'.join([
                'no feature vn-segment-vlan-based',
            ]))
Exemple #2
0
    def test_init(self):

        testbed = Genie.testbed = Testbed()
        dev1 = Device(testbed=testbed, name='PE1', os='iosxr')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/0/1')
        intf2 = Interface(device=dev1, name='GigabitEthernet0/0/0/2')
        dev2 = Device(testbed=testbed, name='PE2', os='iosxr')
        intf3 = Interface(device=dev2, name='GigabitEthernet0/0/0/3')
        intf4 = Interface(device=dev2, name='GigabitEthernet0/0/0/4')

        with self.assertRaises(TypeError):
            evi1 = Evi()

        with self.assertRaises(TypeError):
            evi1 = Evi(device=dev1)

        with self.assertRaises(TypeError):
            evi1 = Evi(evi_id=1)

        with self.assertRaises(AssertionError):
            evi1 = Evi(device=dev1, evi_id=1)

        evpn = Evpn()
        self.assertSetEqual(evpn.evis, set())

        dev2.add_feature(evpn)

        with self.assertRaises(AssertionError):
            evi1 = Evi(device=dev1, evi_id=1)

        dev1.add_feature(evpn)
        evi1 = Evi(device=dev1, evi_id=1)
        self.assertIs(evi1.testbed, testbed)
        self.assertIsInstance(evpn.evis, typedset)
        self.assertSetEqual(evpn.evis, set([evi1]))
        self.assertIs(type(evpn.device_attr[dev1].evis), types.GeneratorType)
        self.assertCountEqual(evpn.device_attr[dev1].evis, [evi1])
        self.assertCountEqual(evpn.device_attr[dev2].evis, [])

        self.assertIsNotNone(evi1.bgp)
        with self.assertRaises(AttributeError):
            evi1.bgp = None

        self.assertIsNotNone(evi1.load_balancing)
        with self.assertRaises(AttributeError):
            evi1.load_balancing = None

        self.assertFalse(evi1.load_balancing.enabled)
        evpn.load_balancing.enabled = True
        self.assertTrue(evi1.load_balancing.enabled)
        with self.assertRaises(AttributeError):
            del evi1.load_balancing.enabled
        evi1.load_balancing.enabled = False
        self.assertFalse(evi1.load_balancing.enabled)
        del evi1.load_balancing.enabled
        self.assertTrue(evi1.load_balancing.enabled)

        cfgs = evpn.build_config(apply=False)
        self.assertDictEqual(
            cfgs, {
                dev1.name:
                '\n'.join([
                    'evpn',
                    ' evi 1',
                    '  load-balancing',
                    '   exit',
                    '  exit',
                    ' load-balancing',
                    '  exit',
                    ' exit',
                ]),
                dev2.name:
                '\n'.join([
                    'evpn',
                    ' load-balancing',
                    '  exit',
                    ' exit',
                ]),
            })

        dev2.remove_feature(evpn)
        cfgs = evpn.build_config(apply=False)
        self.assertDictEqual(
            cfgs, {
                dev1.name:
                '\n'.join([
                    'evpn',
                    ' evi 1',
                    '  load-balancing',
                    '   exit',
                    '  exit',
                    ' load-balancing',
                    '  exit',
                    ' exit',
                ]),
            })

        evi1.load_balancing.enabled = False
        cfgs = evpn.build_config(apply=False)
        self.assertDictEqual(
            cfgs, {
                dev1.name:
                '\n'.join([
                    'evpn',
                    ' evi 1',
                    '  exit',
                    ' load-balancing',
                    '  exit',
                    ' exit',
                ]),
            })

        # XXXJST
        # cfg = evi1.build_config(apply=False)
        # self.assertMultiLineEqual(cfg, '\n'.join([
        #     'evpn',
        #     ' evi 1',
        #     '  exit',
        #     ' exit',
        #     ]))

        cfg = evi1.build_config(apply=False)
        self.assertMultiLineEqual(str(cfg), '\n'.join([
            'evi 1',
            ' exit',
        ]))