def test_trm_cfg(self): Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='R2', os='nxos') vxlan = Vxlan() vxlan.device_attr[dev1].enabled_ngmvpn = True vxlan.device_attr[dev1].advertise_evpn_multicast = True self.assertIs(vxlan.testbed, testbed) dev1.add_feature(vxlan) cfgs = vxlan.build_config(apply=False) self.assertCountEqual(cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'feature ngmvpn', 'advertise evpn multicast', ])) un_cfgs = vxlan.build_unconfig(apply=False) self.assertCountEqual(un_cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertEqual( str(un_cfgs[dev1.name]), '\n'.join([ 'no feature ngmvpn', 'no advertise evpn multicast', ]))
def test_vxlan_basic_cfg(self): Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='nxos') vxlan = Vxlan() vxlan.device_attr[dev1].enabled_nv_overlay = True vxlan.device_attr[dev1].enabled_vn_segment_vlan_based = True vxlan.device_attr[dev1].enabled_nv_overlay_evpn = True vxlan.device_attr[dev1].fabric_fwd_anycast_gw_mac = '0002.0002.0002' self.assertIs(vxlan.testbed, testbed) dev1.add_feature(vxlan) cfgs = vxlan.build_config(apply=False) self.assertCountEqual(cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'feature nv overlay', 'feature vn-segment-vlan-based', 'nv overlay evpn', 'fabric forwarding anycast-gateway-mac 0002.0002.0002', ])) un_cfgs = vxlan.build_unconfig(apply=False) self.assertCountEqual(un_cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertEqual( str(un_cfgs[dev1.name]), '\n'.join([ 'no feature nv overlay', 'no feature vn-segment-vlan-based', 'no nv overlay evpn', ]))
def test_vxlan_enable_cfg(self): Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='nxos') vxlan = Vxlan() vxlan.device_attr[dev1].enabled = True self.assertIs(vxlan.testbed, testbed) dev1.add_feature(vxlan) cfgs = vxlan.build_config(apply=False) self.assertCountEqual(cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'feature nv overlay', 'feature vn-segment-vlan-based', 'nv overlay evpn', ])) un_cfgs = vxlan.build_unconfig(apply=False) self.assertCountEqual(un_cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertEqual( str(un_cfgs[dev1.name]), '\n'.join([ 'no feature nv overlay', 'no feature vn-segment-vlan-based', 'no nv overlay evpn', ]))
def test_vxlan_evpn_vni_route_type(self): Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='nxos') vxlan = Vxlan() vxlan.device_attr[dev1].evpn_attr[None].vni_attr[11].route_target_attr[ 'auto'].evpn_vni_rt_type = 'both' self.assertIs(vxlan.testbed, testbed) dev1.add_feature(vxlan) cfgs = vxlan.build_config(apply=False) self.assertCountEqual(cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'evpn', ' vni 11 l2', ' route-target both auto', ' exit', ' exit', ])) un_cfgs_partial = vxlan.build_unconfig( apply=False, attributes={ 'device_attr': { dev1.name: { 'evpn_attr': { '*': { 'vni_attr': { '*': { 'route_target_attr': { "*": None } } } } } } } }) self.assertCountEqual(un_cfgs_partial.keys(), [dev1.name]) self.maxDiff = None self.assertEqual( str(un_cfgs_partial[dev1.name]), '\n'.join([ 'evpn', ' vni 11 l2', ' no route-target both auto', ' exit', ' exit', ]))
def test_vxlan_evpn_msite_advertise_pip(self): Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='nxos') vxlan = Vxlan() vxlan.device_attr[dev1].evpn_msite_attr[ 11111].evpn_msite_dci_advertise_pip = True self.assertIs(vxlan.testbed, testbed) dev1.add_feature(vxlan) cfgs = vxlan.build_config(apply=False) self.assertCountEqual(cfgs.keys(), [dev1.name]) self.maxDiff = None print(str(cfgs[dev1.name])) self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'evpn multisite border-gateway 11111', ' dci-advertise-pip', ' exit' ])) uncfgs = vxlan.build_unconfig(apply=False) self.assertCountEqual(uncfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(uncfgs[dev1.name]), '\n'.join(['no evpn multisite border-gateway 11111'])) # uncfg with attributes uncfgs_1 = vxlan.build_unconfig( apply=False, attributes={ 'device_attr': { dev1: { 'evpn_msite_attr': { '*': { 'evpn_msite_dci_advertise_pip': True } } } } }) self.assertMultiLineEqual( str(uncfgs_1[dev1.name]), '\n'.join([ 'evpn multisite border-gateway 11111', ' no dci-advertise-pip', ' exit', ]))
def test_vxlan_evpn_msite(self): Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='nxos') vxlan = Vxlan() vxlan.device_attr[dev1].evpn_msite_attr[ 11111].evpn_msite_bgw_delay_restore_time = 30 self.assertIs(vxlan.testbed, testbed) dev1.add_feature(vxlan) cfgs = vxlan.build_config(apply=False) self.assertCountEqual(cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'evpn multisite border-gateway 11111', ' delay-restore time 30', ' exit', ])) uncfgs = vxlan.build_unconfig(apply=False) self.assertCountEqual(uncfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(uncfgs[dev1.name]), '\n'.join(['no evpn multisite border-gateway 11111'])) # uncfg with attributes uncfgs_1 = vxlan.build_unconfig( apply=False, attributes={ 'device_attr': { dev1: { 'evpn_msite_attr': { '*': { 'evpn_msite_bgw_delay_restore_time': None } } } } }) self.assertMultiLineEqual( str(uncfgs_1[dev1.name]), '\n'.join([ 'evpn multisite border-gateway 11111', ' no delay-restore time 30', ' exit', ]))
def test_vxlan_fabric_forwarding_cfg(self): Genie.testbed = testbed = Testbed() dev1 = Device(testbed=testbed, name='PE1', os='nxos') vxlan = Vxlan() vxlan.device_attr[dev1].fabric_fwd_anycast_gw_mac = '0002.0002.0002' self.assertIs(vxlan.testbed, testbed) dev1.add_feature(vxlan) cfgs = vxlan.build_config(apply=False) self.assertCountEqual(cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertMultiLineEqual( str(cfgs[dev1.name]), '\n'.join([ 'fabric forwarding anycast-gateway-mac 0002.0002.0002', ])) un_cfgs = vxlan.build_unconfig(apply=False) self.assertCountEqual(un_cfgs.keys(), [dev1.name]) self.maxDiff = None self.assertEqual( str(un_cfgs[dev1.name]), '\n'.join([ 'no fabric forwarding anycast-gateway-mac 0002.0002.0002', ]))