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")
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")
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
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
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
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')
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
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
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
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
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
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")