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 test_ft_verify_static_portchannel_enable_disable_with_MTU_Value(): ''' Author: Venkatesh Terli <*****@*****.**> Scenario - 3.1.4 Verify that mtu value is configured and enable/disable the portchannel. ''' st.log( 'Scenario - 3.1.4 Verify that mtu value is configured and enable/disable the portchannel.' ) portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1, 'del') intfobj.interface_properties_set( vars.D1, static_data.members_dut1 + [static_data.portchannel_name], 'mtu', '4096') portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1) portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1, 'del') intfobj.interface_properties_set( vars.D1, static_data.members_dut1 + [static_data.portchannel_name], 'mtu', static_data.mtu_default) portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1) intfobj.interface_operation(vars.D1, static_data.portchannel_name, operation="shutdown") if not intfobj.interface_operation( vars.D1, static_data.portchannel_name, operation="startup"): st.report_fail('portchannel_state_fail', static_data.portchannel_name, vars.D1, 'down') st.report_pass('Enable_disable_portchannel_with_mtu', static_data.portchannel_name)
def test_ft_ipv6_link_local_nh_change(): report_flag = 0 st.log("Clearing all interface counters") utils.exec_all(True, [[intf_obj.clear_interface_counters, vars.D1], [intf_obj.clear_interface_counters, vars.D2]]) st.log("clearing TG stats") tgapi.traffic_action_control(tg_handler, actions=['clear_stats']) st.log("Remove the vlan participation to bring down the Vlan routing intf") vlan_obj.delete_vlan_member(vars.D1, data.vlan_li[0], vars.D1D2P2, tagging_mode=True) vlan_obj.add_vlan_member(vars.D1, data.vlan_li[0], vars.D1D2P2, tagging_mode=True) if not ip_obj.get_link_local_addresses(vars.D1, data.vlan_in_1): st.error("ipv6 link local addr is not auto generated after remove and re add of vlan routing intf") report_flag = 1 pc_obj.add_del_portchannel_member(vars.D1, data.prt_chnl, [vars.D1D2P3, vars.D1D2P4], flag="del", skip_verify=True) pc_obj.add_del_portchannel_member(vars.D1, data.prt_chnl, [vars.D1D2P3, vars.D1D2P4], flag="add", skip_verify=True) if not ip_obj.get_link_local_addresses(vars.D1, data.prt_chnl): st.error("ipv6 link local addr is not auto generated for {} after remove and re add of members".format(data.prt_chnl)) report_flag = 1 if not ip_obj.ping(vars.D1, d2_prt_link_local[0], family='ipv6', interface = vars.D1D2P1): st.log("Ipv6 Ping over Link Local address via the Port based routing interface is failed.") report_flag = 1 if not ip_obj.ping(vars.D1, d2_prt_link_local[0], family='ipv6', interface = data.vlan_in_1): st.log("Ipv6 Ping over Link Local address via the Vlan based routing interface is failed.") report_flag =1 if not ip_obj.ping(vars.D1, d2_prt_link_local[0], family='ipv6', interface = data.prt_chnl): st.log("Ipv6 Ping over Link Local address via the Port Channel based routing interface is failed.") report_flag =1 utils.exec_all(True, [[get_mac, vars.D1] ,[get_mac, vars.D2]]) st.log("Checking the IPv6 traffic forwarding over ECMP next hops after remove and re adding of next hop interfaces") tg1.tg_traffic_control(action='run', handle=tg_str_data[1]["tg1_ipv6_data_str_id_1"]) st.wait(data.pkts_tx_time) tg1.tg_traffic_control(action='stop', handle=tg_str_data[1]["tg1_ipv6_data_str_id_1"]) ecmp_cntrs = verify_traffic_hash(vars.D1, [vars.D1D2P1, vars.D1D2P2, vars.D1D2P3, vars.D1D2P4], data.pkts_per_port) st.log("Counter stats on next hop interfaces - {}".format(ecmp_cntrs)) traffic_details = { '1': { 'tx_ports': [vars.T1D1P1], 'tx_obj': [tg1], 'exp_ratio': [1], 'rx_ports': [vars.T1D2P1], 'rx_obj': [tg2], } } filter_result = tgapi.validate_tgen_traffic(traffic_details=traffic_details, mode='aggregate', comp_type='packet_count') if not filter_result: st.log("After flap in next hop interfaces, traffic loss observed for ipv6 traffic forwarded via ipv6 link local next hop") report_flag = 1 if report_flag: st.report_fail("ip6_traffic_over_link_local_nh_fail") st.report_pass("test_case_passed")
def test_ft_verify_static_portchannel_add_member_to_other_portchannel(): ''' Author: Venkatesh Terli <*****@*****.**> Scenario - 3.2.5 A member port already part of a port-channel shouldn't be allowed to add it to another port-channel. ''' st.log( "Scenario - 3.2.5 A member port already part of a port-channel shouldn't be allowed to add it to another port-channel." ) if not portchannelobj.create_portchannel( vars.D1, static_data.portchannel_name2, static=True): st.report_fail('portchannel_create_failed', static_data.portchannel_name2, vars.D1) portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name2, static_data.members_dut1[0], skip_verify=False, skip_err_check=True) portchannelobj.delete_portchannel(vars.D1, static_data.portchannel_name2) st.report_pass('add_member_ports_to_other_portchannel')
def test_ft_bgp_unnumbered_pc_mem_add_rem(): # ################ Author Details ################ # Name: Kiran Vedula # Email: [email protected] # ################################################ utils_obj.banner_log('FtOtSoRtBgpUnFn003,FtOtSoRtBgpUnFn008') result = 0 if not utils.poll_wait(bgp_obj.verify_bgp_summary, data.wait_timer, vars.D1, family='ipv6', shell=bgp_cli_type, neighbor=data.portchannel_name, state='Established'): st.log("Failed to form BGP unnumbered peering using IPv6 link local") result += 1 ip_obj.config_interface_ip6_link_local(vars.D1, data.portchannel_name, 'disable') pc_obj.add_del_portchannel_member(vars.D1, data.portchannel_name, [vars.D1D2P3, vars.D1D2P4], 'del') st.wait(data.wait) pc_obj.add_del_portchannel_member(vars.D1, data.portchannel_name, [vars.D1D2P3, vars.D1D2P4], 'add') ip_obj.config_interface_ip6_link_local(vars.D1, data.portchannel_name, 'enable') st.wait(data.wait) if not utils.poll_wait(bgp_obj.verify_bgp_summary, data.wait_timer, vars.D1, family='ipv6', shell=bgp_cli_type, neighbor=data.portchannel_name, state='Established'): st.log("Failed to form BGP unnumbered peering using IPv6 link local") result += 1 if result == 0: st.report_pass("test_case_passed") else: st.log( "BGP unnumbered neighborship failed after PC member del and re-add" ) st.report_fail("test_case_failed")
def test_ft_verify_static_portchannel_is_up_or_not_with_one_active_member(): ''' Author: Venkatesh Terli <*****@*****.**> Scenario - 3.1.8 Verify that the status of the Port Channel is Up as long as at least one of its member ports is in Link Up state ''' st.log( 'Scenario - 3.1.8: Verify that the status of the Port Channel is Up as long as at least one of its member ports is in Link Up state.' ) portchannelobj.delete_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1[1:]) if not portchannelobj.poll_for_portchannel_status( vars.D1, static_data.portchannel_name, 'up', iteration=10): portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1[1:]) st.report_fail('portchannel_state_fail', static_data.portchannel_name, vars.D1, 'down') st.report_pass('portchannel_state_with_atlease_one_link', static_data.portchannel_name)
def test_ft_verify_static_portchannel_is_up_with_active_members_when_no_lag_in_partner( ): ''' Author: Venkatesh Terli <*****@*****.**> Scenario - 3.1.7 Verify that the static LAG in main DUT is UP with lag configured with active members when LAG is not created at partner DUT. ''' st.log( 'Scenario - 3.1.7 Verifying that the static LAG in main DUT is UP with lag configured with active members when LAG is not created at partner DUT' ) portchannelobj.add_del_portchannel_member(vars.D2, static_data.portchannel_name, static_data.members_dut2, 'del') delete_vlan_member(vars.D2, static_data.vid, static_data.portchannel_name, tagging_mode=True) portchannelobj.delete_portchannel(vars.D2, static_data.portchannel_name) if not portchannelobj.poll_for_portchannel_status( vars.D1, static_data.portchannel_name, 'up', iteration=10): st.report_fail('portchannel_state_fail', static_data.portchannel_name, vars.D1, 'down') st.report_pass('portchannel_state_with_partner_dut', static_data.portchannel_name)
def portchannel_func_hooks(request): yield if st.get_func_name( request ) == 'test_ft_verify_static_portchannel_is_up_or_not_with_one_active_member': portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1[1:]) if st.get_func_name( request ) == 'test_ft_verify_static_portchannel_is_up_with_active_members_when_no_lag_in_partner': portchannelobj.create_portchannel(vars.D2, static_data.portchannel_name, static=True) portchannelobj.add_del_portchannel_member(vars.D2, static_data.portchannel_name, static_data.members_dut2) add_vlan_member(vars.D2, static_data.vid, static_data.portchannel_name, tagging_mode=True) if st.get_func_name( request ) == 'test_ft_verify_fallback_is_configure_or_not_on_static_portchannel': if portchannelobj.get_portchannel(vars.D1, static_data.portchannel_name2): portchannelobj.delete_portchannel(vars.D1, static_data.portchannel_name2) if st.get_func_name( request ) == 'test_ft_verify_static_portchannel_del_from_ip_assigned_vlan': st.wait(2) ipobj.config_ip_addr_interface(vars.D1, 'Vlan{}'.format(static_data.vid), static_data.ip41, static_data.ip_mask, config='remove') portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1) if st.get_func_name(request) == 'test_ft_del_ip_assigned_portchannel': if not portchannelobj.get_portchannel(vars.D1, static_data.portchannel_name): portchannelobj.create_portchannel(vars.D1, static_data.portchannel_name, static=True) ipobj.delete_ip_interface(vars.D1, static_data.portchannel_name, static_data.ip41, static_data.ip_mask, skip_error=True) portchannelobj.add_del_portchannel_member(vars.D1, static_data.portchannel_name, static_data.members_dut1) exceptions = exec_all(True, [[ add_vlan_member, vars.D1, static_data.vid, static_data.portchannel_name, True ], [ add_vlan_member, vars.D2, static_data.vid, static_data.portchannel_name, True ]])[1] ensure_no_exception(exceptions) if st.get_func_name( request ) == 'test_ft_verify_static_portchannel_l3_hash_sip_dip_l4port': arpobj.delete_static_arp(vars.D2, static_data.ip42, interface=vars.D2T1P1, mac=static_data.remote_mac2) ipobj.clear_ip_configuration([vars.D1, vars.D2], family='ipv4', thread=True) exceptions = exec_all( True, [[ add_vlan_member, vars.D1, static_data.vid, [static_data.portchannel_name, vars.D1T1P1], True ], [ add_vlan_member, vars.D2, static_data.vid, [static_data.portchannel_name, vars.D2T1P1], True ]])[1] ensure_no_exception(exceptions) if st.get_func_name( request ) == 'test_ft_verify_static_portchannel_vlan_routing_l3_traffic': arpobj.delete_static_arp(vars.D2, static_data.ip42, interface=vars.D2T1P1, mac=static_data.remote_mac2) ipobj.clear_ip_configuration([vars.D1, vars.D2], family='ipv4', thread=True) exceptions = exec_all(True, [[ add_vlan_member, vars.D1, static_data.vid, vars.D1T1P1, True ], [add_vlan_member, vars.D2, static_data.vid, vars.D2T1P1, True]])[1] ensure_no_exception(exceptions)
def f4(): pc_obj.add_del_portchannel_member(data.d4, data.d4_d1_pc_1, data.d4_d1_intf_1, 'del') pc_obj.add_del_portchannel_member(data.d4, data.d4_d1_pc_1, data.d4_d1_intf_2, 'del') pc_obj.delete_portchannel(data.d4, data.d4_d1_pc_1)
def f3(): pc_obj.add_del_portchannel_member(data.d3, data.d3_d2_pc_1, data.d3_d2_intf_1, 'del') pc_obj.add_del_portchannel_member(data.d3, data.d3_d2_pc_1, data.d3_d2_intf_2, 'del') pc_obj.delete_portchannel(data.d3, data.d3_d2_pc_1)
def f2(): pc_obj.add_del_portchannel_member(data.d2, data.d2_d3_pc_1, data.d2_d3_intf_1, 'del') pc_obj.add_del_portchannel_member(data.d2, data.d2_d3_pc_1, data.d2_d3_intf_2, 'del') pc_obj.delete_portchannel(data.d2, data.d2_d3_pc_1)
def f1(): pc_obj.add_del_portchannel_member(data.d1, data.d1_d4_pc_1, data.d1_d4_intf_1, 'del') pc_obj.add_del_portchannel_member(data.d1, data.d1_d4_pc_1, data.d1_d4_intf_2, 'del') pc_obj.delete_portchannel(data.d1, data.d1_d4_pc_1)
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 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