def test_enabled_switchport_enabled(self):
        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxe')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/1')

        # Defining attributes section
        intf1.switchport_enable = True
        intf1.enabled = True

        # Check config
        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' no shutdown',
                ' switchport',
                ' exit',
            ]))

        # Check unconfig
        uncfg = intf1.build_unconfig(apply=False,
                                     attributes={
                                         "switchport_enable": True,
                                         "enabled": True
                                     })
        self.assertMultiLineEqual(
            str(uncfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' shutdown',
                ' no switchport',
                ' exit',
            ]))

        # Defining attributes section
        intf1.switchport_enable = False
        intf1.enabled = False

        # Check config
        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' shutdown',
                ' no switchport',
                ' exit',
            ]))

        # Check unconfig
        uncfg = intf1.build_unconfig(apply=False,
                                     attributes={
                                         "switchport_enable": True,
                                         "enabled": True
                                     })
        self.assertMultiLineEqual(
            str(uncfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' no shutdown',
                ' switchport',
                ' exit',
            ]))
Ejemplo n.º 2
0
def config_interface_subinterface_and_secondary_addresses(
    device,
    interface,
    sub_interface_num,
    ip_address,
    prefix,
    encap_type,
    start,
    end,
):
    """ Configure sub-interface and secondary addresses on device

        Args:
            device (`obj`): Device object
            interface (`str`): Interface name
            sub_interface_num (`int`): Subinterface to be added to
                                 interface name
            ip_address(`str`): IP addressed to be configured on interface
            prefix(`str`): prefix to be used in configuration
            encap_type (`str`): Encapsulation type
            start (`int`): start number on ip
            end (`int`): end number on ip

        Returns:
            None

        Raises:
            SubCommandFailure
    """
    # interface {interface}.999
    #  encapsulation dot1Q 999
    #  ip address 10.4.0.1 255.255.255.0
    #  ip address 1.1.x.1 255.255.255.0 secondary (x -> 1 to 15)
    name = interface + "." + str(sub_interface_num)
    sub_intf = Interface(device=device, name=name)
    sub_intf.eth_encap_type1 = encap_type
    sub_intf.eth_encap_val1 = sub_interface_num
    ipv4a = IPv4Addr(device=device)
    ipv4a.ipv4 = IPv4Address(ip_address.format(x=start))
    ipv4a.prefix_length = prefix
    sub_intf.add_ipv4addr(ipv4a)

    for x in range(end - start):
        ipv4b = IPv4Addr(device=device)
        ipv4b.ipv4 = IPv4Address(ip_address.format(x=x + 1))
        ipv4b.prefix_length = prefix
        ipv4b.ipv4_secondary = True
        sub_intf.add_ipv4addr(ipv4b)

    try:
        config = str(sub_intf.build_config(apply=False))
        sub_intf.build_config()
    except Exception as e:
        log.error(str(e))
        raise Exception("Failed to config \n {}".format(config))
    return config
    def test_TunnelTeInterface(self):
        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxe')
        lo0 = Interface(device=dev1, name='Loopback0')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/1')
        intf2 = Interface(device=dev1, name='GigabitEthernet0/0/2')
        intf1.ipv4 = '1.2.3.4/32'
        tun3 = Interface(device=dev1,
                         name='Tunnel101',
                         tunnel_mode='mpls traffic-eng')
        # tun3 = TunnelTeInterface(device=dev1, name='Tunnel101')
        self.assertTrue(isinstance(tun3, TunnelTeInterface))
        self.assertEqual(tun3.interface_number, 101)
        tun3.destination = intf1.ipv4.ip
        tun3.autoroute_announce = True
        tun3.ipv4_unnumbered_interface = dev1.interfaces['Loopback0']
        tun3.add_path_option(1)
        tun3.path_option_attr[1].dynamic = True
        tun3.add_path_option(2)
        tun3.path_option_attr[2].explicit_name = "exp_PE2_P1_PE1"
        cfg = tun3.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface Tunnel101',
                ' tunnel mode mpls traffic-eng',
                ' ip unnumbered Loopback0',
                ' tunnel destination 1.2.3.4',
                ' tunnel mpls traffic-eng autoroute announce',
                ' tunnel mpls traffic-eng path-option 1 dynamic',
                ' tunnel mpls traffic-eng path-option 2 explicit name exp_PE2_P1_PE1',
                ' exit',
            ]))

        uncfg = tun3.build_unconfig(apply=False)
        self.assertMultiLineEqual(str(uncfg), '\n'.join([
            'no interface Tunnel101',
        ]))

        partial_uncfg = tun3.build_unconfig(apply=False,
                                            attributes='autoroute_announce')
        self.assertMultiLineEqual(
            str(partial_uncfg), '\n'.join([
                'interface Tunnel101',
                ' no tunnel mpls traffic-eng autoroute announce',
                ' exit',
            ]))

        partial_cfg1 = tun3.build_config(apply=False,
                                         attributes='path_option_attr__2')
        self.assertMultiLineEqual(
            str(partial_cfg1), '\n'.join([
                'interface Tunnel101',
                ' tunnel mpls traffic-eng path-option 2 explicit name exp_PE2_P1_PE1',
                ' exit',
            ]))
    def test_EthernetInterface(self):
        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxe')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/1')
        intf1.ipv4 = '1.2.3.4/32'
        intf1.auto_negotiation = True
        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' ip address 1.2.3.4 255.255.255.255',
                ' negotiation auto',
                ' exit',
            ]))
        uncfg = intf1.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfg), '\n'.join([
                'default interface GigabitEthernet0/0/1',
                'interface GigabitEthernet0/0/1',
                'shutdown',
            ]))
        partial_uncfg1 = intf1.build_unconfig(apply=False,
                                              attributes="auto_negotiation")
        self.assertMultiLineEqual(
            str(partial_uncfg1), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' default negotiation auto',
                ' exit',
            ]))

        partial_uncfg2 = intf1.build_unconfig(apply=False, attributes="ipv4")
        self.assertMultiLineEqual(
            str(partial_uncfg2), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' no ip address 1.2.3.4 255.255.255.255',
                ' exit',
            ]))

        # FiftyGig interface
        intf2 = Interface(device=dev1, name='FiftyGigE6/0/1')
        intf2.ipv4 = '10.20.30.40/24'
        intf2.shutdown = False
        cfg = intf2.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface FiftyGigE6/0/1',
                ' ip address 10.20.30.40 255.255.255.0', ' no shutdown',
                ' exit'
            ]))
        uncfg = intf2.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfg), '\n'.join([
                'default interface FiftyGigE6/0/1', 'interface FiftyGigE6/0/1',
                'shutdown'
            ]))
Ejemplo n.º 5
0
    def test_uncfg_interface(self):
        
        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='nxos')
        intf1 = Interface(name='Ethernet3/7', device=dev1)
        intf2 = Interface(name='Vlan100', device=dev1)
        # vrf = Vrf(name='test', testbed=testbed)
        # dev1.add_feature(vrf)
        # make intf2 as L2 interface
        intf2.mtu = 500
        intf1.mtu = 500

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface Ethernet3/7',
                ' mtu 500',
                ' exit'
                ]))
        cfgs = intf2.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface Vlan100',
                ' mtu 500',
                ' exit'
                ]))

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'default interface Ethernet3/7',
                ]))
        uncfgs = intf2.build_unconfig(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'no interface Vlan100',
                ]))
Ejemplo n.º 6
0
    def test_BundleEtherInterface(self):

        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxr')
        lo0 = Interface(device=dev1, name='Loopback0')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/0/1')
        intf2 = Interface(device=dev1, name='GigabitEthernet0/0/0/2')

        bundle = Interface(device=dev1, name='Bundle-Ether1')
        self.assertEqual(bundle.interface_number, 1)
        bundle.ipv4 = '14.14.14.14/24'
        bundle.ipv6 = '14:14:14::4/64'
        bundle.lag_bfd_v4_destination = '5.0.0.97'
        bundle.lag_bfd_v4_fast_detect = True
        bundle.lag_bfd_v4_min_interval = 100
        bundle.lag_bfd_v6_destination = '6.0.0.98'
        bundle.lag_bfd_v6_fast_detect = True
        bundle.lag_bfd_v6_min_interval = 200

        intf1.bundle = bundle
        intf1.bundle_mode = 'active'

        intf2.bundle = bundle

        cfg = bundle.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface Bundle-Ether1',
                ' ipv4 address 14.14.14.14/24',
                ' ipv6 address 14:14:14::4/64',
                ' bfd address-family ipv4 destination 5.0.0.97',
                ' bfd address-family ipv4 fast-detect',
                ' bfd address-family ipv4 minimum-interval 100',
                ' bfd address-family ipv6 destination 6.0.0.98',
                ' bfd address-family ipv6 fast-detect',
                ' bfd address-family ipv6 minimum-interval 200',
                ' exit',
            ]))

        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/0/1',
                ' bundle id 1 mode active',
                ' exit',
            ]))

        cfg = intf2.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/0/2',
                ' bundle id 1',
                ' exit',
            ]))
Ejemplo n.º 7
0
    def test_ipv4_multiple_lines_confg(self):
        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='nxos')
        intf1 = Interface(name='Ethernet3/7', device=dev1, \
            aliases=['PE1_1'])
        vrf = Vrf(name='test', testbed=testbed)
        dev1.add_feature(vrf)

        # Apply configuration
        intf1.description = 'multiple lines config'

        ipv4a = IPv4Addr(device=dev1)
        ipv4a.ipv4 = IPv4Address('192.168.1.1')
        ipv4a.prefix_length = '24'
        intf1.add_ipv4addr(ipv4a)
        ipv4b = IPv4Addr(device=dev1)
        ipv4b.ipv4 = IPv4Address('192.168.1.2')
        ipv4b.prefix_length = '24'
        ipv4b.ipv4_secondary = True
        intf1.add_ipv4addr(ipv4b)
        intf1.shutdown = False
        # make intf2 as L3 interface
        intf1.switchport_enable = False

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface Ethernet3/7',
                ' description multiple lines config',
                ' no shutdown',
                ' no switchport',
                ' ip address 192.168.1.1/24',
                ' ip address 192.168.1.2/24 secondary',
                ' exit'
                ]))

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False, attributes={'switchport_enable': True,
                                                               'description': True,
                                                               'shutdown': True})
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'interface Ethernet3/7',
                ' no description',
                ' shutdown',
                ' switchport',
                ' exit'
                ]))        
Ejemplo n.º 8
0
    def test_tunnelencryption_interface(self):
        testbed = Genie.testbed = Testbed()
        dev1 = Device(testbed=testbed, name='PE1', os='nxos')
        intf1 = Interface(name='Ethernet0/0/1', device=dev1)

        # Defining attributes section
        intf1.evpn_multisite_dci_tracking = True
        intf1.tunnel_encryption = True

        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface Ethernet0/0/1',
                ' evpn multisite dci-tracking',
                ' tunnel-encryption',
                ' exit',
            ]))

        partial_uncfg = intf1.build_unconfig(apply=False,
                                             attributes={
                                                 "tunnel_encryption":
                                                 True,
                                                 "evpn_multisite_dci_tracking":
                                                 True,
                                             })
        self.assertMultiLineEqual(
            str(partial_uncfg), '\n'.join([
                'interface Ethernet0/0/1',
                ' no evpn multisite dci-tracking',
                ' no tunnel-encryption',
                ' exit',
            ]))
Ejemplo n.º 9
0
    def test_dot1q_tunnel_interface(self):
        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='BL1', testbed=testbed, os='nxos')
        intf1 = Interface(name='Ethernet2/22',
                          device=dev1,
                          description='dot1q tunnel testing',
                          enabled=True,
                          switchport_mode='dot1q-tunnel',
                          dot1q_access_vlan='1301',
                          switchport_enable=True)

        # Build config
        cfgs = intf1.build_config(apply=False)

        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs), '\n'.join([
                'interface Ethernet2/22', ' description dot1q tunnel testing',
                ' no shutdown', ' switchport', ' switchport mode dot1q-tunnel',
                ' switchport access vlan 1301', ' exit'
            ]))
Ejemplo n.º 10
0
    def test_ethernet(self):
        testbed = Testbed()
        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='ios')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/1')

        # Defining attributes section
        intf1.description = 'test desc'
        intf1.enabled = True

        # Check config
        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' description test desc',
                ' no shutdown',
                ' exit',
            ]))

        # Check unconfig without attribtues
        uncfg = intf1.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfg), '\n'.join([
                'default interface GigabitEthernet0/0/1',
            ]))
Ejemplo n.º 11
0
    def test_nve_interface_simple(self):
        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='BL1', testbed=testbed, os='nxos')
        intf1 = Interface(name='nve1', device=dev1)

        # Apply configuration
        intf1.enabled = False

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs), '\n'.join(['interface nve1', ' shutdown', ' exit']))

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False,
                                      attributes={'enabled': {
                                          False: None
                                      }})
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs), '\n'.join(['interface nve1', ' no shutdown',
                                    ' exit']))
Ejemplo n.º 12
0
    def test_TunnelTeInterface(self):

        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxr')
        lo0 = Interface(device=dev1, name='Loopback0')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/0/1')
        intf2 = Interface(device=dev1, name='GigabitEthernet0/0/0/2')

        intf1.ipv4 = '1.2.3.4/32'
        tun3 = Interface(device=dev1, name='tunnel-te101')
        self.assertEqual(tun3.interface_number, 101)
        tun3.destination = intf1.ipv4.ip
        tun3.autoroute_announce = True
        tun3.ipv4_unnumbered_interface = dev1.interfaces['Loopback0']
        tun3.auto_bw_adj_threshold_pct = 1
        tun3.add_path_option(1)
        tun3.path_option_attr[1].dynamic = True
        tun3.add_path_option(2)
        tun3.path_option_attr[2].explicit_name = "exp_PE2_P1_PE1"
        cfg = tun3.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface tunnel-te101',
                ' destination 1.2.3.4',
                ' autoroute announce',
                ' auto-bw adjustment-threshold 1',
                ' ipv4 unnumbered Loopback0',
                ' path-option 1 dynamic',
                ' path-option 2 explicit name exp_PE2_P1_PE1',
                ' exit',
            ]))
Ejemplo n.º 13
0
    def test_switchport_enable_config(self):

        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='nxos')
        intf1 = Interface(name='Ethernet3/7', device=dev1, aliases=['PE1_1'])
        vrf = Vrf(name='test', testbed=testbed)
        dev1.add_feature(vrf)

        # make intf2 as L2 interface
        intf1.switchport_enable = True

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join(['interface Ethernet3/7', ' switchport', ' exit']))

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs), '\n'.join([
                'default interface Ethernet3/7',
            ]))
Ejemplo n.º 14
0
    def test_vxlan_interface(self):
        testbed = Genie.testbed = Testbed()
        dev1 = Device(testbed=testbed, name='PE1', os='nxos')
        intf1 = Interface(name='Ethernet0/0/1', device=dev1)

        # Defining attributes section
        intf1.evpn_multisite_fabric_tracking = True
        intf1.evpn_multisite_dci_tracking = True
        intf1.ip_forward = True

        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface Ethernet0/0/1',
                ' evpn multisite dci-tracking',
                ' evpn multisite fabric-tracking',
                ' ip forward',
                ' exit',
            ]))

        partial_uncfg = intf1.build_unconfig(
            apply=False,
            attributes={
                "evpn_multisite_fabric_tracking": True,
                "evpn_multisite_dci_tracking": True,
                "ip_forward": True
            })
        self.assertMultiLineEqual(
            str(partial_uncfg), '\n'.join([
                'interface Ethernet0/0/1',
                ' no evpn multisite dci-tracking',
                ' no evpn multisite fabric-tracking',
                ' no ip forward',
                ' exit',
            ]))
Ejemplo n.º 15
0
    def test_NveInterface_L3vni(self):
        testbed = Genie.testbed = Testbed()
        dev1 = Device(testbed=testbed, name='PE1', os='iosxe')
        intf1 = Interface(name='nve1', device=dev1)

        # Defining attributes section
        intf1.nve_bgp_host_reachability = True
        intf1.nve_src_intf_loopback = 'Loopback0'

        intf1.nve_vni = '30000'
        intf1.nve_vni_vrf = 'red'

        # Build config
        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface nve1', ' host-reachability protocol bgp',
                ' source-interface Loopback0', ' member vni 30000 vrf red',
                ' exit'
            ]))

        # Build unconfig
        uncfg = intf1.build_unconfig(apply=False,
                                     attributes={'nve_vni': '20000'})
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfg),
            '\n'.join(['interface nve1', ' no member vni 30000', ' exit']))
Ejemplo n.º 16
0
    def test_VlanInterface(self):
        testbed = Genie.testbed = Testbed()
        dev1 = Device(testbed=testbed, name='PE1', os='iosxe')
        intf1 = Interface(name='Vlan100', device=dev1)

        # Defining attributes section
        intf1.mtu = 500
        intf1.ipv4 = '201.0.12.1'
        intf1.ipv4.netmask = '255.255.255.0'
        intf1.ipv6 = '2001::12:1'

        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface Vlan100',
                ' ip address 201.0.12.1 255.255.255.0',
                ' ipv6 address 2001::12:1/128',
                ' mtu 500',
                ' exit',
            ]))

        uncfg = intf1.build_unconfig(apply=False)
        self.assertMultiLineEqual(str(uncfg), '\n'.join([
            'no interface Vlan100',
        ]))

        partial_uncfg = intf1.build_unconfig(apply=False, attributes="mtu")
        self.assertMultiLineEqual(
            str(partial_uncfg), '\n'.join([
                'interface Vlan100',
                ' no mtu 500',
                ' exit',
            ]))
Ejemplo n.º 17
0
    def test_EthernetSubInterface(self):
        """Test subinterface support without usage of service_instance"""
        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxe')

        sub_intf = Interface(device=dev1, name='GigabitEthernet0/0/1.20')

        sub_intf.ipv4 = '10.10.0.1/24'
        sub_intf.eth_encap_type1 = 'dot1q'
        sub_intf.eth_encap_val1 = 20

        cfg = sub_intf.build_config(apply=False)

        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/1.20',
                ' encapsulation dot1q 20',
                ' ip address 10.10.0.1 255.255.255.0',
                ' exit',
            ]))

        uncfg = sub_intf.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfg), '\n'.join([
                'no interface GigabitEthernet0/0/1.20',
            ]))
Ejemplo n.º 18
0
    def test_EFPInterface(self):
        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxe')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/1')
        efp = Interface(device=dev1,
                        name='GigabitEthernet0/0/1.20',
                        service_instance=20)
        efp.eth_encap_val1 = 20
        efp.rewrite_ingress = 'pop 1 symmetric'
        cfg = efp.build_config(apply=False)

        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' service instance 20 ethernet',
                '  encapsulation dot1q 20',
                '  rewrite ingress tag pop 1 symmetric',
                '  exit',
                ' exit',
            ]))

        uncfg = efp.build_unconfig(apply=False)
        self.assertMultiLineEqual(
            str(uncfg), '\n'.join([
                'interface GigabitEthernet0/0/1',
                ' no service instance 20 ethernet',
                ' exit',
            ]))
Ejemplo n.º 19
0
    def test_native_vlans(self):
        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='BL1', testbed=testbed, os='nxos')
        intf1 = Interface(name='Ethernet2/22',
                          device=dev1,
                          description='Native vlan testing',
                          enabled=True,
                          switchport_mode='trunk',
                          trunk_vlans='101-120,131-140,151-170,200-209',
                          native_vlan='1',
                          switchport_enable=True)

        # Build config
        cfgs = intf1.build_config(apply=False)

        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs), '\n'.join([
                'interface Ethernet2/22', ' description Native vlan testing',
                ' no shutdown', ' switchport', ' switchport mode trunk',
                ' switchport trunk allowed vlan 101-120,131-140,151-170,200-209',
                ' switchport trunk native vlan 1', ' exit'
            ]))
Ejemplo n.º 20
0
    def test_nve_interface(self):

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='BL1', testbed=testbed, os='nxos')
        intf1 = Interface(name='nve1', device=dev1)

        # Apply configuration
        intf1.nve_host_reachability_protocol = NveInterface.HOST_REACHABILTY_PROTOCOL.bgp
        intf1.nve_adv_virtual_rmac = True
        intf1.nve_src_intf_loopback = 'loopback1'
        intf1.nve_multisite_bgw_intf = 'loopback100'

        intf1.nve_vni = 4096
        intf1.nve_vni_associate_vrf = True
        intf1.nve_vni_suppress_arp = True
        intf1.nve_vni_multisite_ingress_replication = True
        intf1.nve_vni_mcast_group = '233.1.1.1'

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs), '\n'.join([
                'interface nve1', ' host-reachability protocol bgp',
                ' advertise virtual-rmac', ' source-interface loopback1',
                ' multisite border-gateway interface loopback100',
                ' member vni 4096 associate-vrf', '  suppress-arp',
                '  multisite ingress-replication', '  mcast-group 233.1.1.1',
                '  exit', ' exit'
            ]))

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False,
                                      attributes={'nve_vni': '4096'})
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join(['interface nve1', ' no member vni 4096', ' exit']))

        # Build unconfig
        uncfgs = intf1.build_unconfig(
            apply=False,
            attributes={
                'nve_host_reachability_protocol':
                NveInterface.HOST_REACHABILTY_PROTOCOL.bgp,
                'nve_vni':
                '4096',
                'nve_vni_suppress_arp':
                True
            })
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs), '\n'.join([
                'interface nve1', ' no host-reachability protocol bgp',
                ' member vni 4096', '  no suppress-arp', '  exit', ' exit'
            ]))
Ejemplo n.º 21
0
    def test_virtual(self):
        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxe')
        intf1 = Interface(device=dev1, name='Vlan100')
        intf2 = Interface(device=dev1, name='Loopback10')

        # Defining attributes section
        intf1.enabled = True
        intf2.enabled = False

        # Check config
        cfg1 = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg1), '\n'.join([
                'interface Vlan100',
                ' no shutdown',
                ' exit',
            ]))
        # Check unconfig
        uncfg1 = intf1.build_unconfig(apply=False)
        self.assertMultiLineEqual(str(uncfg1), '\n'.join([
            'no interface Vlan100',
        ]))

        # Check config
        cfg2 = intf2.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg2), '\n'.join([
                'interface Loopback10',
                ' shutdown',
                ' exit',
            ]))

        # Check unconfig
        uncfg2 = intf2.build_unconfig(apply=False)
        self.assertMultiLineEqual(str(uncfg2), '\n'.join([
            'no interface Loopback10',
        ]))

        # Check unconfig with attributes
        uncfg2 = intf2.build_unconfig(apply=False, attributes="enabled")
        self.assertMultiLineEqual(
            str(uncfg2), '\n'.join([
                'interface Loopback10',
                ' no shutdown',
                ' exit',
            ]))
Ejemplo n.º 22
0
    def test_single_line_config(self):

        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='iosxr')
        intf1 = Interface(name='GigabitEthernet0/0/0/0', device=dev1, aliases=['PE1_1'])
        subif1 = Interface(name='GigabitEthernet0/0/0/1.10', device=dev1, aliases=['PE1_1'])
        vrf = Vrf(name='test', testbed=testbed)
        dev1.add_feature(vrf)

        # Apply configuration
        intf1.description = 'test'
        intf1.enabled = True
        intf1.mtu = 1492
        intf1.vrf = vrf
        intf1.mac_address = 'aabb.ccdd.eeff'
        intf1.bandwidth = 8192
        intf1.load_interval = 33
        intf1.unnumbered_intf_ref = 'GigabitEthernet0/0/0/1.10'
        intf1.ipv6_autoconf = True
        intf1.medium = 'p2p'

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface GigabitEthernet0/0/0/0',
                ' bandwidth 8192',
                ' description test',
                ' vrf test',
                ' ipv4 point-to-point',
                ' ipv4 unnumbered GigabitEthernet0/0/0/1.10',
                ' ipv6 address autoconfig',
                ' load-interval 33',
                ' mtu 1492',
                ' no shutdown',
                ' mac-address aabb.ccdd.eeff',
                ' exit'
                ]))

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'no interface GigabitEthernet0/0/0/0',
                ]))
Ejemplo n.º 23
0
    def test_BundleEtherInterface(self):

        Genie.testbed = Testbed()
        dev1 = Device(name='PE1', os='iosxr')
        lo0 = Interface(device=dev1, name='Loopback0')
        intf1 = Interface(device=dev1, name='GigabitEthernet0/0/0/1')
        intf2 = Interface(device=dev1, name='GigabitEthernet0/0/0/2')

        bundle = Interface(device=dev1, name='Bundle-Ether1')
        self.assertEqual(bundle.interface_number, 1)
        bundle.ipv4 = '14.14.14.14/24'
        bundle.ipv6 = '14:14:14::4/64'

        intf1.bundle = bundle
        intf1.bundle_mode = 'active'

        intf2.bundle = bundle

        cfg = bundle.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface Bundle-Ether1',
                ' ipv4 address 14.14.14.14/24',
                ' ipv6 address 14:14:14::4/64',
                ' exit',
            ]))

        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/0/1',
                ' bundle id 1 mode active',
                ' exit',
            ]))

        cfg = intf2.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface GigabitEthernet0/0/0/2',
                ' bundle id 1',
                ' exit',
            ]))
Ejemplo n.º 24
0
    def test_ipv6_multiple_lines_confg(self):
        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='iosxr')
        intf1 = Interface(name='GigabitEthernet0/0/0/0', device=dev1, \
            aliases=['PE1_1'])
        vrf = Vrf(name='test', testbed=testbed)
        dev1.add_feature(vrf)

        # Apply configuration
        intf1.description = 'multiple lines config'
        intf1.enabled = False

        ipv6a = IPv6Addr(device=dev1)
        ipv6a.ipv6 = IPv6Address('2001:db1:1::1')
        ipv6a.ipv6_prefix_length = '64'
        intf1.add_ipv6addr(ipv6a)
        ipv6b = IPv6Addr(device=dev1)
        ipv6b.ipv6 = IPv6Address('2001:db1:2::2')
        ipv6b.ipv6_prefix_length = '64'
        intf1.add_ipv6addr(ipv6b)

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface GigabitEthernet0/0/0/0',
                ' ipv6 address 2001:db1:1::1/64',
                ' ipv6 address 2001:db1:2::2/64',
                ' description multiple lines config',
                ' shutdown',
                ' exit'
                ]))        

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False, attributes={'ipv6addr':None})
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'interface GigabitEthernet0/0/0/0',
                ' no ipv6 address 2001:db1:1::1/64',
                ' no ipv6 address 2001:db1:2::2/64',
                ' exit'
                ]))        
Ejemplo n.º 25
0
    def test_ipv6_multiple_lines_confg(self):
        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='nxos')
        intf1 = Interface(name='Ethernet3/7', device=dev1, \
            aliases=['PE1_1'])
        vrf = Vrf(name='test', testbed=testbed)
        dev1.add_feature(vrf)

        # Apply configuration
        intf1.description = 'multiple lines config'

        ipv6a = IPv6Addr(device=dev1)
        ipv6a.ipv6 = IPv6Address('2001:db1:1::1')
        ipv6a.ipv6_prefix_length = '64'
        intf1.add_ipv6addr(ipv6a)
        ipv6b = IPv6Addr(device=dev1)
        ipv6b.ipv6 = IPv6Address('2001:db1:2::2')
        ipv6b.ipv6_prefix_length = '64'
        intf1.add_ipv6addr(ipv6b)
        intf1.shutdown = False
        # make intf2 as L3 interface
        intf1.switchport_enable = False

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface Ethernet3/7',
                ' description multiple lines config',
                ' no shutdown',
                ' no switchport',
                ' ipv6 address 2001:db1:1::1/64',
                ' ipv6 address 2001:db1:2::2/64',
                ' exit'
                ]))        

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'default interface Ethernet3/7',
                ]))
Ejemplo n.º 26
0
    def test_port_channel_interface(self):
        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='nxos')
        intf1 = Interface(name='port-channel10', device=dev1)

        # Apply configuration
        intf1.channel_group_mode = 'on'
        intf1.switchport_enable = False         
        intf1.ipv4 = '11.0.1.1/24'
        intf1.shutdown = False
        intf1.switchport_enable = False
        intf1.mtu = 9111
        uut1_int3 = Interface(name='Ethernet0/0/1',device=dev1)
        intf1.add_member(uut1_int3)

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface Ethernet0/0/1',
                ' channel-group 10 mode on',
                ' exit',
                'interface port-channel10',
                ' mtu 9111',
                ' no shutdown',
                ' no switchport',
                ' ip address 11.0.1.1 255.255.255.0',
                ' exit'
                ]))        

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'interface Ethernet0/0/1',
                ' no channel-group 10 mode on',
                ' exit',
                'no interface port-channel10'
                ]))
Ejemplo n.º 27
0
def configure_l3_interface(dev, name, ip, mask, remove=False, apply=True):
    """
    creates an l3 interface `name` on `dev` with ip `ip` and mask `mask`

    booleans can also be passed

    configure_l3_interface(... apply=True) (default)
    configure_l3_interface(... remove=True)

    """
    from genie.conf.base import Interface
    if not dev.is_connected():
        dev.connect()
    if name not in dev.interfaces:
        interface = Interface(device=dev, name=name)
    else:
        interface = dev.interfaces[intf]
    # this is a bug....shouldn't have to do this...
    # Add some configuration
    interface.switchport_enable = False
    interface.ipv4 = ip
    interface.ipv4.netmask = mask

    if apply and not remove:
        print("\n")
        print("******************************************************")
        print("Configuring interface {} on {}  ".format(
            dev.name, interface.name))
        print("******************************************************")
        interface.build_config(apply=apply)
    if remove:
        print("\n")
        print("******************************************************")
        print("Removing interface {} on {}  ".format(dev.name, interface.name))
        print("******************************************************")
        interface.build_unconfig(apply=apply)
    return interface
Ejemplo n.º 28
0
    def test_vni_lines_confg(self):
        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='iosxr')
        intf1 = Interface(name='nve100', device=dev1, \
            aliases=['PE1_1'])

        # Apply configuration
        intf1.source_interface = Interface(name='Loopback0', device=dev1)
        vni = Vni(100, device=dev1)
        vni.mcast_group = '225.1.1.1 0.0.0.0'
        intf1.add_vni(vni)

        # Build config
        cfgs = intf1.build_config(apply=False)

        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs),
            '\n'.join([
                'interface nve100',
                ' member vni 100',
                '  mcast-group 225.1.1.1 0.0.0.0',
                '  exit',
                ' source-interface Loopback0',
                ' exit'
                ]))        

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False, attributes={'vnis':None})
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs),
            '\n'.join([
                'interface nve100',
                ' no member vni 100',
                ' exit'
                ]))  
Ejemplo n.º 29
0
    def test_NveInterface_L2vni_mcast(self):
        testbed = Genie.testbed = Testbed()
        dev1 = Device(testbed=testbed, name='PE1', os='iosxe')
        intf1 = Interface(name='nve1', device=dev1)

        # Defining attributes section
        intf1.nve_bgp_host_reachability = True
        intf1.nve_src_intf_loopback = 'Loopback0'

        intf1.nve_vni = '20000'
        intf1.nve_vni_mcast_group = '239.1.1.2'
        intf1.nve_vni_local_routing = True

        # Build config
        cfg = intf1.build_config(apply=False)
        self.assertMultiLineEqual(
            str(cfg), '\n'.join([
                'interface nve1', ' host-reachability protocol bgp',
                ' source-interface Loopback0', ' member vni 20000',
                '  mcast-group 239.1.1.2 local-routing', '  exit', ' exit'
            ]))

        # Build unconfig
        partial_uncfg_1 = intf1.build_unconfig(apply=False,
                                               attributes={
                                                   'nve_bgp_host_reachability':
                                                   True,
                                                   'nve_vni': '20000'
                                               })
        # Check config build correctly
        self.assertMultiLineEqual(
            str(partial_uncfg_1), '\n'.join([
                'interface nve1', ' no host-reachability protocol bgp',
                ' no member vni 20000', ' exit'
            ]))

        # Build unconfig
        partial_uncfg_2 = intf1.build_unconfig(
            apply=False, attributes={'nve_src_intf_loopback': 'Loopback0'})
        # Check config build correctly
        self.assertMultiLineEqual(
            str(partial_uncfg_2), '\n'.join(
                ['interface nve1', ' no source-interface Loopback0', ' exit']))
Ejemplo n.º 30
0
    def test_port_channel_interface_trunk_vlans(self):
        # For failures
        self.maxDiff = None

        # Set Genie Tb
        testbed = Testbed()
        Genie.testbed = testbed

        # Device
        dev1 = Device(name='PE1', testbed=testbed, os='nxos')
        intf1 = Interface(name='port-channel10', device=dev1)

        # Apply configuration
        intf1.channel_group_mode = 'active'
        intf1.enabled = True
        intf1.switchport_enable = True
        intf1.switchport_mode = 'trunk'
        intf1.trunk_vlans = "2-5,11-105,111-205"

        uut1_int3 = Interface(name='Ethernet0/0/1', device=dev1)
        intf1.add_member(uut1_int3)

        # Build config
        cfgs = intf1.build_config(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(cfgs), '\n'.join([
                'interface Ethernet0/0/1', ' channel-group 10 mode active',
                ' exit', 'interface port-channel10', ' no shutdown',
                ' switchport', ' switchport mode trunk',
                ' switchport trunk allowed vlan 2-5,11-105,111-205', ' exit'
            ]))

        # Build unconfig
        uncfgs = intf1.build_unconfig(apply=False)
        # Check config build correctly
        self.assertMultiLineEqual(
            str(uncfgs), '\n'.join([
                'interface Ethernet0/0/1', ' no channel-group 10 mode active',
                ' exit', 'no interface port-channel10'
            ]))