コード例 #1
0
def snmp_pre_config():
    """
    SNMP pre config
    """
    global ipaddress
    ipaddress_list = basic_obj.get_ifconfig_inet(vars.D1, data.mgmt_int)
    st.log("Checking Ip address of the Device ")
    if not ipaddress_list:
        st.report_env_fail("ip_verification_fail")
    ipaddress = ipaddress_list[0]
    st.log("Device ip addresse - {}".format(ipaddress))
    snmp_obj.set_snmp_config(vars.D1,
                             snmp_rocommunity=data.ro_community,
                             snmp_location=data.location)
    if not st.is_community_build():
        ipfeature.configure_loopback(vars.D1,
                                     loopback_name="Loopback0",
                                     config="yes")
        ipfeature.config_ip_addr_interface(vars.D1,
                                           data.loopback0,
                                           data.loopback_addr,
                                           32,
                                           family=data.af_ipv4)
    if not ipfeature.ping(vars.D1, ipaddress, family='ipv4', external=True):
        st.error("Ping reachability is failed between SNMP server and Device.")
    if not snmp_obj.poll_for_snmp(vars.D1,
                                  data.wait_time,
                                  1,
                                  ipaddress=ipaddress,
                                  oid=data.oid_sysName,
                                  community_name=data.ro_community):
        st.log("Post SNMP config , snmp is not working")
        st.report_fail("operation_failed")
コード例 #2
0
def snmp_post_config():
    """
    SNMP post config
    """
    snmp_obj.restore_snmp_config(vars.D1)
    if not st.is_community_build():
        ipfeature.configure_loopback(vars.D1,
                                     loopback_name="Loopback0",
                                     config="no")
コード例 #3
0
def dut1_config(config=''):

    st.log('On DUT1 physical interface IPv4 and IPv6 addresses on it')
    ip_obj.config_ip_addr_interface(data.dut1_client, data.d1_d2_ports[0],
                                    data.dut1_dut2_ipv6[0],
                                    data.dut1_dut2_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut1_client, data.d1_d2_ports[0],
                                    data.dut1_dut2_ip[0],
                                    data.dut1_dut2_ip_subnet, 'ipv4')

    st.log('On DUT1 configure vlan and IPv4 and IPv6 addresses on it')
    vlan_obj.create_vlan(data.dut1_client, data.dut1_dut2_vlan[0])
    vlan_obj.add_vlan_member(data.dut1_client, data.dut1_dut2_vlan[0],
                             data.d1_d2_ports[1], True, True)
    ip_obj.config_ip_addr_interface(data.dut1_client,
                                    'Vlan' + data.dut1_dut2_vlan[0],
                                    data.dut1_dut2_ipv6[1],
                                    data.dut1_dut2_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut1_client,
                                    'Vlan' + data.dut1_dut2_vlan[0],
                                    data.dut1_dut2_ip[1],
                                    data.dut1_dut2_ip_subnet, 'ipv4')

    st.log('On DUT1 configure portchannel and IPv4 and IPv6 addresses on it')
    pc_obj.create_portchannel(data.dut1_client, data.portchannel)
    pc_obj.add_portchannel_member(data.dut1_client, data.portchannel,
                                  [data.d1_d2_ports[2], data.d1_d2_ports[3]])
    ip_obj.config_ip_addr_interface(data.dut1_client, data.portchannel,
                                    data.dut1_dut2_ipv6[2],
                                    data.dut1_dut2_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut1_client, data.portchannel,
                                    data.dut1_dut2_ip[2],
                                    data.dut1_dut2_ip_subnet, 'ipv4')

    st.log('On DUT1 configure loopback and IPv4 and IPv6 addresses on it')
    ip_obj.configure_loopback(data.dut1_client,
                              config='yes',
                              loopback_name=data.dut1_loopback[0])
    ip_obj.config_ip_addr_interface(data.dut1_client, data.dut1_loopback[0],
                                    data.dut1_loopback_ipv6[0],
                                    data.dut1_loopback_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut1_client, data.dut1_loopback[0],
                                    data.dut1_loopback_ip[0],
                                    data.dut1_loopback_ip_subnet, 'ipv4')

    st.log('IPv4 and IPv6 static routes for loopback reachability')
    ip_obj.create_static_route(data.dut1_client,
                               data.dut2_dut1_ip[0],
                               data.dut2_loopback_ip[0] + '/32',
                               family='ipv4')
    ip_obj.create_static_route(data.dut1_client,
                               data.dut2_dut1_ipv6[0],
                               data.dut2_loopback_ipv6[0] + '/128',
                               family='ipv6')

    return True
コード例 #4
0
def dut2_unconfig(config=''):

    st.log(
        'On DUT2 unconfigure loopback and remove IPv4 and IPv6 addresses on it'
    )
    ip_obj.delete_ip_interface(data.dut2_server, data.dut2_loopback[0],
                               data.dut2_loopback_ipv6[0],
                               data.dut2_loopback_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut2_server, data.dut2_loopback[0],
                               data.dut2_loopback_ip[0],
                               data.dut2_loopback_ip_subnet, 'ipv4')
    ip_obj.configure_loopback(data.dut2_server,
                              config='no',
                              loopback_name=data.dut2_loopback[0])

    st.log(
        'On DUT2 unconfigure portchannel and remove IPv4 and IPv6 addresses on it'
    )
    ip_obj.delete_ip_interface(data.dut2_server, data.portchannel,
                               data.dut2_dut1_ipv6[2],
                               data.dut2_dut1_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut2_server, data.portchannel,
                               data.dut2_dut1_ip[2], data.dut2_dut1_ip_subnet,
                               'ipv4')
    pc_obj.add_del_portchannel_member(
        data.dut2_server, data.portchannel,
        [data.d2_d1_ports[2], data.d2_d1_ports[3]], 'del')
    pc_obj.delete_portchannel(data.dut2_server, data.portchannel)

    st.log('On DUT2 unconfigure vlan and remove IPv4 and IPv6 addresses on it')
    ip_obj.delete_ip_interface(data.dut2_server,
                               'Vlan' + data.dut1_dut2_vlan[0],
                               data.dut2_dut1_ipv6[1],
                               data.dut2_dut1_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut2_server,
                               'Vlan' + data.dut1_dut2_vlan[0],
                               data.dut2_dut1_ip[1], data.dut2_dut1_ip_subnet,
                               'ipv4')
    vlan_obj.delete_vlan_member(data.dut2_server, data.dut1_dut2_vlan[0],
                                data.d2_d1_ports[1], True)
    vlan_obj.delete_vlan(data.dut2_server, data.dut1_dut2_vlan[0])

    st.log('On DUT2 remove IPv4 and IPv6 addresses on physical interface')
    ip_obj.delete_ip_interface(data.dut2_server, data.d2_d1_ports[0],
                               data.dut2_dut1_ipv6[0],
                               data.dut2_dut1_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut2_server, data.d2_d1_ports[0],
                               data.dut2_dut1_ip[0], data.dut2_dut1_ip_subnet,
                               'ipv4')

    st.log('On DUT2 remove IPv4 and IPv6 addresses on management interface')
    ip_obj.delete_ip_interface(data.dut2_server, data.mgmt_intf,
                               data.dut2_mgmt_ipv6[0],
                               data.dut2_mgmt_ipv6_subnet, 'ipv6')

    return True
コード例 #5
0
def dut1_unconfig(config=''):

    st.banner('Unconfigure IPv4 and IPv6 addresses on the loopback interfaces')
    ip_obj.delete_ip_interface(data.dut1_client, data.dut1_loopback[0],
                               data.dut1_loopback_ipv6[0],
                               data.dut1_loopback_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut1_client, data.dut1_loopback[0],
                               data.dut1_loopback_ip[0],
                               data.dut1_loopback_ip_subnet, 'ipv4')
    ip_obj.configure_loopback(data.dut1_client,
                              config='no',
                              loopback_name=data.dut1_loopback[0])

    st.banner('Unconfigure IPv4 and IPv6 addresses on portchannel of DUT1')
    ip_obj.delete_ip_interface(data.dut1_client, data.portchannel,
                               data.dut1_dut2_ipv6[2],
                               data.dut1_dut2_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut1_client, data.portchannel,
                               data.dut1_dut2_ip[2], data.dut1_dut2_ip_subnet,
                               'ipv4')
    pc_obj.add_del_portchannel_member(
        data.dut1_client, data.portchannel,
        [data.d1_d2_ports[2], data.d1_d2_ports[3]], 'del')
    pc_obj.delete_portchannel(data.dut1_client, data.portchannel)

    st.log('On DUT1 unconfigure vlan and IPv4 and IPv6 addresses on it')
    ip_obj.delete_ip_interface(data.dut1_client,
                               'Vlan' + data.dut1_dut2_vlan[0],
                               data.dut1_dut2_ipv6[1],
                               data.dut1_dut2_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut1_client,
                               'Vlan' + data.dut1_dut2_vlan[0],
                               data.dut1_dut2_ip[1], data.dut1_dut2_ip_subnet,
                               'ipv4')
    vlan_obj.delete_vlan_member(data.dut1_client, data.dut1_dut2_vlan[0],
                                data.d1_d2_ports[1], True)
    vlan_obj.create_vlan(data.dut1_client, data.dut1_dut2_vlan[0])

    st.banner(
        'Unconfigure IPv4 and IPv6 addresses on physical interface of DUT1')
    ip_obj.delete_ip_interface(data.dut1_client, data.d1_d2_ports[0],
                               data.dut1_dut2_ipv6[0],
                               data.dut1_dut2_ipv6_subnet, 'ipv6')
    ip_obj.delete_ip_interface(data.dut1_client, data.d1_d2_ports[0],
                               data.dut1_dut2_ip[0], data.dut1_dut2_ip_subnet,
                               'ipv4')

    st.log('Unconfigure IPv6 address on management interface of DUT1')
    ip_obj.delete_ip_interface(data.dut1_client, data.mgmt_intf,
                               data.dut1_mgmt_ipv6[0],
                               data.dut1_mgmt_ipv6_subnet, 'ipv6')

    return True
コード例 #6
0
def config_ip_loopback(config='yes'):
    st.banner("{}Config Loopback Addresses on interfaces on D2".format(
        'Un' if config != 'yes' else ''))
    config = 'add' if config == 'yes' else 'remove'
    if config == 'add':
        ipapi.configure_loopback(vars.D2,
                                 loopback_name='Loopback1',
                                 config='yes')
    ipapi.config_ip_addr_interface(vars.D2,
                                   'Loopback1',
                                   eh_data.loopback4_1,
                                   32,
                                   family=eh_data.af_ipv4,
                                   config=config)
    ipapi.config_ip_addr_interface(vars.D2,
                                   "Loopback1",
                                   eh_data.loopback6_1,
                                   128,
                                   family=eh_data.af_ipv6,
                                   config=config)
    if config == 'remove':
        ipapi.configure_loopback(vars.D2,
                                 loopback_name='Loopback1',
                                 config='no')
コード例 #7
0
def dut3_config(config=''):
    st.log('On DUT3 physical interface IPv4 and IPv6 addresses on it')
    vrf_obj.config_vrf(dut=data.dut3_client,
                       vrf_name=data.dut3_vrf_phy,
                       config='yes')
    vrf_obj.bind_vrf_interface(dut=data.dut3_client,
                               vrf_name=data.dut3_vrf_phy,
                               intf_name=data.d3_d2_ports[0],
                               config='yes')
    ip_obj.config_ip_addr_interface(data.dut3_client, data.d3_d2_ports[0],
                                    data.dut3_dut2_ipv6[0],
                                    data.dut3_dut2_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut3_client, data.d3_d2_ports[0],
                                    data.dut3_dut2_ip[0],
                                    data.dut3_dut2_ip_subnet, 'ipv4')
    vlan_obj.create_vlan(data.dut3_client, data.dut2_dut3_vlan[0])
    vlan_obj.add_vlan_member(data.dut3_client, data.dut2_dut3_vlan[0],
                             data.d3_d2_ports[1], True, True)
    st.log('On DUT3 configure vlan and IPv4 and IPv6 addresses on it')
    vrf_obj.config_vrf(dut=data.dut3_client,
                       vrf_name=data.dut3_vrf_vlan,
                       config='yes')
    vrf_obj.bind_vrf_interface(dut=data.dut3_client,
                               vrf_name=data.dut3_vrf_vlan,
                               intf_name='Vlan' + data.dut2_dut3_vlan[0],
                               config='yes')
    ip_obj.config_ip_addr_interface(data.dut3_client,
                                    'Vlan' + data.dut2_dut3_vlan[0],
                                    data.dut3_dut2_ipv6[1],
                                    data.dut3_dut2_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut3_client,
                                    'Vlan' + data.dut2_dut3_vlan[0],
                                    data.dut3_dut2_ip[1],
                                    data.dut3_dut2_ip_subnet, 'ipv4')
    st.log('On DUT3 configure portchannel and IPv4 and IPv6 addresses on it')
    pc_obj.create_portchannel(data.dut3_client, data.portchannel_2)
    pc_obj.add_portchannel_member(data.dut3_client, data.portchannel_2,
                                  [data.d3_d2_ports[2], data.d3_d2_ports[3]])
    vrf_obj.config_vrf(dut=data.dut3_client,
                       vrf_name=data.dut3_vrf_pc,
                       config='yes')
    vrf_obj.bind_vrf_interface(dut=data.dut3_client,
                               vrf_name=data.dut3_vrf_pc,
                               intf_name=data.portchannel_2,
                               config='yes')
    ip_obj.config_ip_addr_interface(data.dut3_client, data.portchannel_2,
                                    data.dut3_dut2_ipv6[2],
                                    data.dut3_dut2_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut3_client, data.portchannel_2,
                                    data.dut3_dut2_ip[2],
                                    data.dut3_dut2_ip_subnet, 'ipv4')

    st.log('On DUT3 configure loopback and IPv4 and IPv6 addresses on it')
    ip_obj.configure_loopback(data.dut3_client,
                              config='yes',
                              loopback_name=data.dut3_loopback[1])
    vrf_obj.config_vrf(dut=data.dut3_client,
                       vrf_name=data.dut3_vrf_phy,
                       config='yes')
    vrf_obj.bind_vrf_interface(dut=data.dut3_client,
                               vrf_name=data.dut3_vrf_phy,
                               intf_name=data.dut3_loopback[1],
                               config='yes')
    ip_obj.config_ip_addr_interface(data.dut3_client, data.dut3_loopback[1],
                                    data.dut3_loopback_ipv6[1],
                                    data.dut3_loopback_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut3_client, data.dut3_loopback[1],
                                    data.dut3_loopback_ip[1],
                                    data.dut3_loopback_ip_subnet, 'ipv4')

    st.log('IPv4 and IPv6 static routes for loopback reachability')
    ip_obj.create_static_route(data.dut3_client,
                               data.dut2_dut3_ip[0],
                               data.dut2_loopback_ip[1] + '/32',
                               family='ipv4',
                               interface=data.d3_d2_ports[0],
                               vrf=data.dut3_vrf_phy)
    ip_obj.create_static_route(data.dut3_client,
                               data.dut2_dut3_ipv6[0],
                               data.dut2_loopback_ipv6[1] + '/128',
                               family='ipv6',
                               interface=data.d3_d2_ports[0],
                               vrf=data.dut3_vrf_phy)
    return True
コード例 #8
0
def dut1_config():

    result = True
    st.log('On DUT1 configure vrfs and loopbacks')
    result = vrf_obj.config_vrf(dut=data.dut1,
                                vrf_name=data.dut1_vrf[0],
                                config='yes')
    result = ip_obj.configure_loopback(data.dut1,
                                       config='yes',
                                       loopback_name=[
                                           data.dut1_loopback[0],
                                           data.dut1_loopback[1],
                                           data.dut1_loopback[2]
                                       ])

    st.log('On DUT1 configure vlan')
    result = vlan_obj.create_vlan(data.dut1, data.dut1_dut2_vlan[0])
    result = vlan_obj.add_vlan_member(data.dut1, data.dut1_dut2_vlan[0],
                                      data.d1_d2_ports[1], True, True)

    st.log('On DUT1 configure portchannel')
    result = pc_obj.create_portchannel(data.dut1, data.portchannel)
    result = pc_obj.add_portchannel_member(
        data.dut1, data.portchannel,
        [data.d1_d2_ports[2], data.d1_d2_ports[3]])

    st.log(
        'On DUT1 bind all the loopbacks, physical, vlan and portchannel interfaces between the DUTs to the VRF'
    )
    result = vrf_obj.bind_vrf_interface(
        dut=data.dut1,
        vrf_name=[
            data.dut1_vrf[0], data.dut1_vrf[0], data.dut1_vrf[0],
            data.dut1_vrf[0], data.dut1_vrf[0], data.dut1_vrf[0],
            data.dut1_vrf[0], data.dut1_vrf[0]
        ],
        intf_name=[
            data.dut1_tg_ports[0], data.dut1_loopback[0],
            data.dut1_loopback[1], data.dut1_loopback[2], data.d1_d2_ports[0],
            'Vlan' + data.dut1_dut2_vlan[0], data.portchannel
        ],
        config='yes')

    st.banner('On DUT1 verify vrf bindings for all the interfaces')
    output = vrf_obj.get_vrf_verbose(dut=data.dut1, vrfname=data.dut1_vrf[0])
    if data.dut1_vrf[0] in output['vrfname']:
        st.log('VRF configured on DUT1 is as expected', data.dut1_vrf[0])
    else:
        st.error('VRF name configured on DUT1 is as not expected',
                 data.dut1_vrf[0])
        result = False
    for value in output['interfaces']:
        if data.dut1_tg_ports[0] or data.dut1_loopback[
                0] or data.dut1_loopback[1] or data.dut1_loopback[
                    2] or data.d1_d2_ports[0] or 'Vlan' + data.dut1_dut2_vlan[
                        0] or data.portchannel == value:
            st.log('Bind to VRF is as expected', value)
        else:
            st.error('Bind to VRF is not as expected', value)
            result = False

    st.log(
        'On DUT1 configure OSPF router ID, ospf networks and add all the ospf interfaces'
    )
    result = ip_obj.config_ip_addr_interface(data.dut1, data.dut1_loopback[0],
                                             data.dut1_loopback_ipv6[0],
                                             data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.config_ip_addr_interface(data.dut1, data.dut1_loopback[0],
                                             data.dut1_loopback_ip[0],
                                             data.ip_loopback_prefix, 'ipv4')
    result = ip_obj.config_ip_addr_interface(data.dut1, data.dut1_loopback[1],
                                             data.dut1_loopback_ipv6[1],
                                             data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.config_ip_addr_interface(data.dut1, data.dut1_loopback[1],
                                             data.dut1_loopback_ip[1],
                                             data.ip_loopback_prefix, 'ipv4')
    result = ip_obj.config_ip_addr_interface(data.dut1, data.dut1_loopback[2],
                                             data.dut1_loopback_ipv6[2],
                                             data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.config_ip_addr_interface(data.dut1, data.dut1_loopback[2],
                                             data.dut1_loopback_ip[2],
                                             data.ip_loopback_prefix, 'ipv4')

    st.log(
        'On DUT1 configure OSPF router ID, ospf networks and add all the ospf interfaces'
    )
    result = ospf_obj.config_ospf_router_id(data.dut1,
                                            data.dut1_ospf_router_id,
                                            data.dut1_vrf[0], '', 'yes')
    result = ospf_obj.config_ospf_network(
        data.dut1, data.dut1_loopback_ip[0] + '/' + data.ip_loopback_prefix, 0,
        data.dut1_vrf[0], '', 'yes')
    result = ospf_obj.config_ospf_network(
        data.dut1, data.dut1_loopback_ip[1] + '/' + data.ip_loopback_prefix, 0,
        data.dut1_vrf[0], '', 'yes')
    result = ospf_obj.config_ospf_network(
        data.dut1, data.dut1_loopback_ip[2] + '/' + data.ip_loopback_prefix, 0,
        data.dut1_vrf[0], '', 'yes')
    result = ospf_obj.config_ospf_network(data.dut1, data.dut1_tg1_network_v4,
                                          0, data.dut1_vrf[0], '', 'yes')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut1, data.d1_d2_ports[0], 'point-to-point', data.dut1_vrf[0],
        'yes')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut1, 'Vlan' + data.dut1_dut2_vlan[0], 'point-to-point',
        data.dut1_vrf[0], 'yes')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut1, data.portchannel, 'point-to-point', data.dut1_vrf[0], 'yes')

    st.log('On DUT1 configure IP addresses on DUT - TG interfaces')
    ip_obj.config_ip_addr_interface(data.dut1, data.dut1_tg_ports[0],
                                    data.dut1_tg_ipv6[0], data.tg_ipv6_subnet,
                                    'ipv6')
    ip_obj.config_ip_addr_interface(data.dut1, data.dut1_tg_ports[0],
                                    data.dut1_tg_ip[0], data.tg_ip_subnet,
                                    'ipv4')
    return result
コード例 #9
0
def dut2_unconfig():

    result = 0
    st.log('On Configure IP addresses on DUT2 - TG interfaces')
    result = ip_obj.delete_ip_interface(data.dut2, data.dut2_tg_ports[0],
                                        data.dut2_tg_ipv6[0],
                                        data.tg_ipv6_subnet, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut2, data.dut2_tg_ports[0],
                                        data.dut2_tg_ip[0], data.tg_ip_subnet,
                                        'ipv4')
    result = arp_obj.config_static_ndp(data.dut2,
                                       data.tg_dut2_ipv6[0],
                                       '00:00:33:33:33:02',
                                       data.dut2_tg_ports[0],
                                       operation="del")
    result = arp_obj.delete_static_arp(data.dut2, data.tg_dut2_ip[0],
                                       '00:00:33:33:33:01')

    st.log(
        'On DUT2 unconfigure OSPF router ID, ospf networks and add all the ospf interfaces'
    )
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut2, data.d2_d1_ports[0], 'point-to-point', 'default', 'no')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut2, 'Vlan' + data.dut1_dut2_vlan[0], 'point-to-point',
        'default', 'no')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut2, data.portchannel, 'point-to-point', 'default', 'no')
    result = ospf_obj.config_ospf_network(
        data.dut2, data.dut2_loopback_ip[0] + '/' + data.ip_loopback_prefix, 0,
        'default', '', 'no')
    result = ospf_obj.config_ospf_router_id(data.dut2,
                                            data.dut2_ospf_router_id,
                                            'default', '', 'no')

    st.log(
        'On DUT2 unconfigure loopback and remove IPv4 and IPv6 addresses on it'
    )
    result = ip_obj.delete_ip_interface(data.dut2_server,
                                        data.dut2_loopback[0],
                                        data.dut2_loopback_ipv6[0],
                                        data.dut2_loopback_ipv6_subnet, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut2_server,
                                        data.dut2_loopback[0],
                                        data.dut2_loopback_ip[0],
                                        data.dut2_loopback_ip_subnet, 'ipv4')
    result = ip_obj.configure_loopback(data.dut2_server,
                                       config='no',
                                       loopback_name=data.dut2_loopback[0])

    st.log(
        'On DUT2 unconfigure portchannel and remove IPv4 and IPv6 addresses on it'
    )
    result = ip_obj.delete_ip_interface(data.dut2_server, data.portchannel,
                                        data.dut2_dut1_ipv6[2],
                                        data.dut2_dut1_ipv6_subnet, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut2_server, data.portchannel,
                                        data.dut2_dut1_ip[2],
                                        data.dut2_dut1_ip_subnet, 'ipv4')
    result = pc_obj.add_del_portchannel_member(
        data.dut2_server, data.portchannel,
        [data.d2_d1_ports[2], data.d2_d1_ports[3]], 'del')
    result = pc_obj.delete_portchannel(data.dut2_server, data.portchannel)

    st.log('On DUT2 unconfigure vlan and remove IPv4 and IPv6 addresses on it')
    result = ip_obj.delete_ip_interface(data.dut2,
                                        'Vlan' + data.dut1_dut2_vlan[0],
                                        data.dut2_dut1_ipv6[1],
                                        data.dut2_dut1_ipv6_subnet, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut2,
                                        'Vlan' + data.dut1_dut2_vlan[0],
                                        data.dut2_dut1_ip[1],
                                        data.dut2_dut1_ip_subnet, 'ipv4')
    result = vlan_obj.delete_vlan_member(data.dut2, data.dut1_dut2_vlan[0],
                                         data.d2_d1_ports[1], True)
    result = vlan_obj.delete_vlan(data.dut2, data.dut1_dut2_vlan[0])

    st.log('On DUT2 remove IPv4 and IPv6 addresses on physical interface')
    result = ip_obj.delete_ip_interface(data.dut2, data.d2_d1_ports[0],
                                        data.dut2_dut1_ipv6[0],
                                        data.dut2_dut1_ipv6_subnet, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut2, data.d2_d1_ports[0],
                                        data.dut2_dut1_ip[0],
                                        data.dut2_dut1_ip_subnet, 'ipv4')

    return result
コード例 #10
0
def dut2_config():

    result = True
    st.log('On DUT2 configure loopback')
    result = ip_obj.configure_loopback(data.dut2,
                                       config='yes',
                                       loopback_name=[
                                           data.dut2_loopback[0],
                                           data.dut2_loopback[1],
                                           data.dut2_loopback[2]
                                       ])

    st.log('On DUT2 configure vlan')
    result = vlan_obj.create_vlan(data.dut2, data.dut1_dut2_vlan[0])
    result = vlan_obj.add_vlan_member(data.dut2, data.dut1_dut2_vlan[0],
                                      data.d2_d1_ports[1], True, True)

    st.log('On DUT2 configure portchannel')
    result = pc_obj.create_portchannel(data.dut2, data.portchannel)
    result = pc_obj.add_portchannel_member(
        data.dut2, data.portchannel,
        [data.d2_d1_ports[2], data.d2_d1_ports[3]])

    st.log(
        'On DUT2 configure OSPF router ID, ospf networks and add all the ospf interfaces'
    )
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_loopback[0],
                                             data.dut2_loopback_ipv6[0],
                                             data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_loopback[0],
                                             data.dut2_loopback_ip[0],
                                             data.ip_loopback_prefix, 'ipv4')
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_loopback[1],
                                             data.dut2_loopback_ipv6[1],
                                             data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_loopback[1],
                                             data.dut2_loopback_ip[1],
                                             data.ip_loopback_prefix, 'ipv4')
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_loopback[2],
                                             data.dut2_loopback_ipv6[2],
                                             data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_loopback[2],
                                             data.dut2_loopback_ip[2],
                                             data.ip_loopback_prefix, 'ipv4')

    st.log(
        'On DUT2 configure OSPF router ID, ospf networks and add all the ospf interfaces'
    )
    result = ospf_obj.config_ospf_router_id(data.dut2,
                                            data.dut2_ospf_router_id,
                                            'default', '', 'yes')
    result = ospf_obj.config_ospf_network(
        data.dut2, data.dut2_loopback_ip[0] + '/' + data.ip_loopback_prefix, 0,
        'default', '', 'yes')
    result = ospf_obj.config_ospf_network(
        data.dut2, data.dut2_loopback_ip[1] + '/' + data.ip_loopback_prefix, 0,
        'default', '', 'yes')
    result = ospf_obj.config_ospf_network(
        data.dut2, data.dut2_loopback_ip[2] + '/' + data.ip_loopback_prefix, 0,
        'default', '', 'yes')
    result = ospf_obj.config_ospf_network(data.dut2, data.dut2_tg1_network_v4,
                                          0, 'default', '', 'yes')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut2, data.d2_d1_ports[0], 'point-to-point', 'default', 'yes')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut2, 'Vlan' + data.dut1_dut2_vlan[0], 'point-to-point',
        'default', 'yes')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut2, data.portchannel, 'point-to-point', 'default', 'yes')

    st.log('On DUT2 configure IP addresses on DUT2 - TG interfaces')
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_tg_ports[0],
                                             data.dut2_tg_ipv6[0],
                                             data.tg_ipv6_subnet, 'ipv6')
    result = ip_obj.config_ip_addr_interface(data.dut2, data.dut2_tg_ports[0],
                                             data.dut2_tg_ip[0],
                                             data.tg_ip_subnet, 'ipv4')
    result = arp_obj.add_static_arp(data.dut2, data.tg_dut2_ip[0],
                                    '00:00:33:33:33:01', data.dut2_tg_ports[0])

    return result
コード例 #11
0
def dut1_unconfig():

    result = 0
    st.log('On DUT1 unconfigure IP addresses on DUT - TG interfaces')
    ip_obj.delete_ip_interface(data.dut1, data.dut1_tg_ports[0],
                               data.dut1_tg_ipv6[0], data.tg_ipv6_subnet,
                               'ipv6')
    ip_obj.delete_ip_interface(data.dut1, data.dut1_tg_ports[0],
                               data.dut1_tg_ip[0], data.tg_ip_subnet, 'ipv4')

    st.log(
        'On DUT1 Unonfigure OSPF router ID, ospf network and add all the ospf interfaces'
    )
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut1, data.d1_d2_ports[0], 'point-to-point', data.dut1_vrf[0],
        'no')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut1, 'Vlan' + data.dut1_dut2_vlan[0], 'point-to-point',
        data.dut1_vrf[0], 'no')
    result = ospf_obj.config_interface_ip_ospf_network_type(
        data.dut1, data.portchannel, 'point-to-point', data.dut1_vrf[0], 'no')
    result = ospf_obj.config_ospf_network(
        data.dut1, data.dut1_loopback_ip[0] + '/' + data.ip_loopback_prefix, 0,
        data.dut1_vrf[0], '', 'no')
    result = ospf_obj.config_ospf_network(
        data.dut1, data.dut1_loopback_ip[1] + '/' + data.ip_loopback_prefix, 0,
        data.dut1_vrf[0], '', 'no')
    result = ospf_obj.config_ospf_network(
        data.dut1, data.dut1_loopback_ip[2] + '/' + data.ip_loopback_prefix, 0,
        data.dut1_vrf[0], '', 'no')
    result = ospf_obj.config_ospf_router_id(data.dut1,
                                            data.dut1_ospf_router_id,
                                            data.dut1_vrf[0], '', 'no')

    st.banner('Unconfigure IPv4 and IPv6 addresses on the loopback interfaces')
    result = ip_obj.delete_ip_interface(data.dut1, data.dut1_loopback[0],
                                        data.dut1_loopback_ipv6[0],
                                        data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut1, data.dut1_loopback[0],
                                        data.dut1_loopback_ip[0],
                                        data.ip_loopback_prefix, 'ipv4')
    result = ip_obj.delete_ip_interface(data.dut1, data.dut1_loopback[1],
                                        data.dut1_loopback_ipv6[1],
                                        data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut1, data.dut1_loopback[1],
                                        data.dut1_loopback_ip[1],
                                        data.ip_loopback_prefix, 'ipv4')
    result = ip_obj.delete_ip_interface(data.dut1, data.dut1_loopback[2],
                                        data.dut1_loopback_ipv6[2],
                                        data.ipv6_loopback_prefix, 'ipv6')
    result = ip_obj.delete_ip_interface(data.dut1, data.dut1_loopback[2],
                                        data.dut1_loopback_ip[2],
                                        data.ip_loopback_prefix, 'ipv4')

    st.log(
        'On DUT1 unbind all the loopbacks, physical, vlan and portchannel interfaces to the VRF'
    )
    result = vrf_obj.bind_vrf_interface(
        dut=data.dut1,
        vrf_name=data.dut1_vrf[0],
        intf_name=[
            data.dut1_loopback[0], data.dut1_loopback[1],
            data.dut1_loopback[2], data.d1_d2_ports[0],
            'Vlan' + data.dut1_dut2_vlan[0], data.portchannel
        ],
        config='no')

    st.log('On DUT1 unconfigure vlan')
    result = vlan_obj.delete_vlan_member(data.dut1_client,
                                         data.dut1_dut2_vlan[0],
                                         data.d1_d2_ports[1], True)
    result = vlan_obj.create_vlan(data.dut1_client, data.dut1_dut2_vlan[0])

    st.banner('Unconfigure portchannel on DUT1')
    result = pc_obj.add_del_portchannel_member(
        data.dut1_client, data.portchannel,
        [data.d1_d2_ports[2], data.d1_d2_ports[3]], 'del')
    result = pc_obj.delete_portchannel(data.dut1_client, data.portchannel)

    st.log('On DUT1 unconfigure vrfs and loopbacks')
    result = ip_obj.configure_loopback(data.dut1,
                                       config='no',
                                       loopback_name=[
                                           data.dut1_loopback[0],
                                           data.dut1_loopback[1],
                                           data.dut1_loopback[2]
                                       ])
    result = vrf_obj.config_vrf(dut=data.dut3_client,
                                vrf_name=data.dut1_vrf[0],
                                config='no')

    return result
コード例 #12
0
def bind_vrf_interface(dut, **kwargs):
    """
    #Sonic cmd: Config interface <bind |unbind> <interface-name> <vrf-name>
    eg: bind_vrf_interface(dut = dut1, vrf_name = 'Vrf-test', intf_name ='Ethernet8', config = 'no')
    """
    st.log('API to bind interface to VRF')
    if 'config' in kwargs:
        config = kwargs['config']
    else:
        config = 'yes'
    if 'vrf_name' in kwargs:
        if not isinstance(kwargs['vrf_name'], list):
            vrf_name = [kwargs['vrf_name']]
        else:
            vrf_name = kwargs['vrf_name']
    else:
        st.log("Mandatory parameter vrfname is not found")
    if 'intf_name' in kwargs:
        if not isinstance(kwargs['intf_name'], list):
            intf_name = [kwargs['intf_name']]
        else:
            intf_name = kwargs['intf_name']
    else:
        st.log("Mandatory parameter intf_name is not found")
    if 'skip_error' in kwargs:
        skip_error = kwargs['skip_error']
    else:
        skip_error = False

    cli_type = kwargs.pop('cli_type', st.get_ui_type(dut))
    if cli_type == 'click':
        my_cmd = ''
        if config.lower() == 'yes':
            for vrf, intf in zip(vrf_name, intf_name):
                if 'Loopback' in intf:
                    if not st.is_feature_supported(
                            "config-loopback-add-command", dut):
                        st.log(
                            "Community build doesn't need Loopback interface configuration"
                        )
                    else:
                        my_cmd += 'sudo config loopback add {}\n'.format(intf)
                my_cmd += 'sudo config interface vrf bind {} {}\n'.format(
                    intf, vrf)
        else:
            for vrf, intf in zip(vrf_name, intf_name):
                if not st.is_feature_supported("vrf-needed-for-unbind", dut):
                    my_cmd += 'sudo config interface vrf unbind {}\n'.format(
                        intf)
                else:
                    my_cmd += 'sudo config interface vrf unbind {} {}\n'.format(
                        intf, vrf)
                if 'Loopback' in intf:
                    if not st.is_feature_supported(
                            "config-loopback-add-command", dut):
                        st.log(
                            "Community build doesn't need Loopback interface un-configuration"
                        )
                    else:
                        my_cmd += 'sudo config loopback del {}\n'.format(intf)
        if skip_error:
            st.config(dut, my_cmd, skip_error_check=True)
            return True
        else:
            st.config(dut, my_cmd)
            return True
    elif cli_type == 'klish':
        command = ''
        if config.lower() == 'yes':
            for vrf, intf in zip(vrf_name, intf_name):
                intfv = get_interface_number_from_name(intf)
                command = command + "\n" + "interface {} {}".format(
                    intfv['type'], intfv['number'])
                command = command + "\n" + "ip vrf forwarding {}".format(vrf)
                command = command + "\n" + "exit"
        else:
            for vrf, intf in zip(vrf_name, intf_name):
                intfv = get_interface_number_from_name(intf)
                command = command + "\n" + "interface {} {}".format(
                    intfv['type'], intfv['number'])
                command = command + "\n" + "no ip vrf forwarding {}".format(
                    vrf)
                command = command + "\n" + "exit"
                if 'Loopback' in intf:
                    command = command + "\n" + "no interface {} {}".format(
                        intfv['type'], intfv['number'])
        output = st.config(dut,
                           command,
                           skip_error_check=skip_error,
                           type="klish",
                           conf=True)
        if "Could not connect to Management REST Server" in output:
            st.error("klish mode not working.")
            return False
        return True
    elif cli_type in ['rest-patch', 'rest-put']:
        http_method = kwargs.pop('http_method', cli_type)
        rest_urls = st.get_datastore(dut, 'rest_urls')
        if config.lower() == 'yes':
            for vrf, intf in zip(vrf_name, intf_name):
                intfv = get_interface_number_from_name(intf)
                if 'Loopback' in intfv['type']:
                    configure_loopback(dut, loopback_name=intf, config='yes')
                rest_url = rest_urls['vrf_bind_config'].format(vrf, intf)
                ocdata = {
                    "openconfig-network-instance:interface": [{
                        "id": intf,
                        "config": {
                            "id": intf,
                            "interface": intf
                        }
                    }]
                }
                response = config_rest(dut,
                                       http_method=http_method,
                                       rest_url=rest_url,
                                       json_data=ocdata)
                if not response:
                    st.log(response)
                    return False
        elif config.lower() == 'no':
            for vrf, intf in zip(vrf_name, intf_name):
                rest_url = rest_urls['vrf_bind_config'].format(vrf, intf)
                response = delete_rest(dut, rest_url=rest_url)
                if not response:
                    st.log(response)
                    return False
                intfv = get_interface_number_from_name(intf)
                if 'Loopback' in intfv['type']:
                    configure_loopback(dut, loopback_name=intf, config='no')
        return True
    else:
        st.log("Unsupported cli")