Exemple #1
0
def sf_module_prolog():
    clear_vlan_configuration(vars.D1)
    sf_data.vlan = str(random_vlan_list()[0])
    create_vlan(vars.D1, sf_data.vlan)
    add_vlan_member(vars.D1,
                    sf_data.vlan,
                    port_list=sf_data.port_list,
                    tagging_mode=True)
    sf_data.tg, sf_data.tg_ph_list, sf_data.stream_sf_data = sf_tg_stream_config(
    )
def config_rpvst_vlan(dut, mode, vlan_id, new_fwd_delay, new_hello_time, new_max_age, new_priority):

  vlan_obj.create_vlan(dut, g_vlan_id)
  vlan_obj.add_vlan_member(dut, g_vlan_id, port_list=[g_port1], tagging_mode=True)

  stp_obj.config_stp_vlan_param(dut, cfgdictionary={'': [mode, str(vlan_id)]})
  stp_obj.config_stp_vlan_param(dut, cfgdictionary={'forward_delay': [str(vlan_id), str(new_fwd_delay)]})
  stp_obj.config_stp_vlan_param(dut, cfgdictionary={'hello': [str(vlan_id), str(new_hello_time)]})
  stp_obj.config_stp_vlan_param(dut, cfgdictionary={'max_age': [str(vlan_id), str(new_max_age)]})
  stp_obj.config_stp_vlan_param(dut, cfgdictionary={'priority': [str(vlan_id), str(new_priority)]})

  return True
Exemple #3
0
def copp_fixture_igmp(request, copp_module_hooks):
    # copp fixture for igmp
    ip_obj.delete_ip_interface(dut=vars.D1,
                               interface_name=d1_p1,
                               ip_address='1.1.1.2',
                               subnet='24')
    vlan_obj.add_vlan_member(vars.D1, vlan_igmp, [vars.D1T1P1])
    yield
    st.log("### CLEANUP for copp igmp ###")
    vlan_obj.delete_vlan_member(vars.D1, vlan_igmp, [vars.D1T1P1], "access")
    ip_obj.config_ip_addr_interface(dut=vars.D1,
                                    interface_name=d1_p1,
                                    ip_address='1.1.1.2',
                                    subnet='24')
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")
Exemple #5
0
def test_ft_vlan_delete_with_member():
    """
    Author: Surendra Kumar Vella ([email protected])

    Verify that user is not able to delete a valn till its members are deleted

    """
    vars = st.ensure_min_topology("D1T1:1")
    st.log(
        "Adding TGen connected interfaces to newly created vlan in tagging mode."
    )
    if not vlan.add_vlan_member(vars.D1,
                                sc_data.vlan, [vars.D1D2P1],
                                tagging_mode=True,
                                cli_type=sc_data.cli_type):
        st.report_fail("vlan_tagged_member_fail", vars.D1D2P1, sc_data.vlan)
    st.log("checking whether vlan with member is deleted or not ")
    if not st.is_community_build(vars.D1):
        if vlan.delete_vlan(vars.D1, sc_data.vlan, cli_type="click"):
            st.report_fail("vlan_deletion_successfull_albiet_having_member",
                           sc_data.vlan)
        if not vlan.delete_vlan_member(
                vars.D1, sc_data.vlan, vars.D1D2P1, cli_type=sc_data.cli_type):
            st.report_fail("vlan_tagged_member_fail", vars.D1D2P1,
                           sc_data.vlan)
    else:
        if not vlan.delete_vlan(vars.D1, sc_data.vlan, cli_type="click"):
            st.report_fail("vlan_delete_fail", sc_data.vlan)
    st.log("deleting the vlan after its member deletion")
    st.report_pass("test_case_passed")
Exemple #6
0
def test_ft_add_unknownvlan_interface():
    """
    Author: Surendra Kumar Vella ([email protected])

    verify that DUT should not assign unknown pvid

    """
    st.log(" Adding TGen connected interface {} to non-existing vlan {} with untagged mode".format(vars.D1D2P1,
                                                                                                   sc_data.vlan_id))
    if vlan.add_vlan_member(vars.D1, sc_data.vlan_id, [vars.D1D2P1], tagging_mode=False, skip_error=True):
        st.report_fail("unknown_vlan_untagged_member_add_fail", vars.D1D2P1, sc_data.vlan_id)
    if not vlan.add_vlan_member(vars.D1, sc_data.vlan, [vars.D1D2P1], tagging_mode=True):
        st.report_fail("vlan_tagged_member_fail", vars.D1D2P1, sc_data.vlan)
    if not vlan.delete_vlan_member(vars.D1, sc_data.vlan, vars.D1D2P1, tagging_mode=True):
        st.report_fail("vlan_tagged_member_fail", vars.D1D2P1, sc_data.vlan)
    st.report_pass("test_case_passed")
Exemple #7
0
def vlan_preconfig():
    if not vlan_obj.create_vlan(vars.D1, data.vlan):
        st.report_fail("vlan_create_fail", data.vlan)
    if not st.is_community_build():
        mac_obj.config_mac(vars.D1, data.source_mac, data.vlan, vars.D1T1P1)
    st.log(
        "Adding TGen-1 connected interface to newly created vlan in un tagging mode."
    )
    if not vlan_obj.add_vlan_member(
            vars.D1, data.vlan, vars.D1T1P1, tagging_mode=False):
        st.report_fail("vlan_untagged_member_fail", vars.D1T1P1, data.vlan)
    st.log(
        "Adding TGen-2 connected interface to newly created vlan in tagging mode."
    )
    if not vlan_obj.add_vlan_member(
            vars.D1, data.vlan, vars.D1T1P2, tagging_mode=True):
        st.report_fail("vlan_untagged_member_fail", vars.D1T1P2, data.vlan)
Exemple #8
0
def tf_module_config(config='yes'):
    if config == 'yes':
        tf_data.vlan = str(random_vlan_list()[0])
        vapi.create_vlan(vars.D1, tf_data.vlan)
        vapi.add_vlan_member(vars.D1,
                             tf_data.vlan,
                             port_list=tf_data.port_list,
                             tagging_mode=True)
        tf_data.tg, tf_data.tg_ph_list, tf_data.stream_tf_data = tf_tg_stream_config(
        )
        tfapi.threshold_feature_debug(vars.D1, mode='port_map')
    else:
        vapi.delete_vlan_member(vars.D1,
                                tf_data.vlan,
                                port_list=tf_data.port_list,
                                tagging_mode=True)
        vapi.delete_vlan(vars.D1, tf_data.vlan)
Exemple #9
0
def ceta_31902_fixture(request, ip_module_hooks):
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1T1P2,
                                       data.ip6_addr[1],
                                       96,
                                       family=data.af_ipv6,
                                       config="remove")
    vlan_obj.create_vlan(vars.D1, [data.host1_vlan, data.host2_vlan])
    vlan_obj.add_vlan_member(vars.D1,
                             data.host1_vlan, [vars.D1T1P1, vars.D1T1P2],
                             tagging_mode=True)
    vlan_obj.add_vlan_member(vars.D1,
                             data.host2_vlan, [vars.D1T1P1, vars.D1T1P2],
                             tagging_mode=True)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       "Vlan" + data.host1_vlan,
                                       data.vlan1_ip,
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       "Vlan" + data.host2_vlan,
                                       data.vlan2_ip,
                                       24,
                                       family=data.af_ipv4)
    yield
    ipfeature.delete_ip_interface(vars.D1,
                                  "Vlan" + data.host1_vlan,
                                  data.vlan1_ip,
                                  "24",
                                  family="ipv4")
    ipfeature.delete_ip_interface(vars.D1,
                                  "Vlan" + data.host2_vlan,
                                  data.vlan2_ip,
                                  "24",
                                  family="ipv4")
    vlan_obj.delete_vlan_member(vars.D1, data.host1_vlan,
                                [vars.D1T1P1, vars.D1T1P2], True)
    vlan_obj.delete_vlan_member(vars.D1, data.host2_vlan,
                                [vars.D1T1P1, vars.D1T1P2], True)
    vlan_obj.delete_vlan(vars.D1, [data.host1_vlan, data.host2_vlan])
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1T1P2,
                                       data.ip6_addr[1],
                                       96,
                                       family=data.af_ipv6)
Exemple #10
0
def arp_module_hooks(request):
    global vars, tg_handler, tg, dut1, d1_mac_addr, h1, h2

    # Min topology verification
    vars = st.ensure_min_topology("D1T1:2")

    # Initialize TG and TG port handlers
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2")
    tg = tg_handler["tg"]

    # Test setup details
    data.my_dut_list = st.get_dut_names()
    dut1 = data.my_dut_list[0]

    # Test variables
    d1_mac_addr = mac.get_sbin_intf_mac(dut1, "eth0")

    # ARP module configuration
    st.log("ARP module configuration.")
    ip_obj.config_ip_addr_interface(dut1, vars.D1T1P1, data.d1t1_ip_addr, data.mask)
    vlan_obj.create_vlan(dut1, data.vlan_1)
    vlan_obj.add_vlan_member(dut1, data.vlan_1, vars.D1T1P2, True)
    ip_obj.config_ip_addr_interface(dut1, data.vlan_int_1, data.d1t2_ip_addr, data.mask)

    # TG ports reset
    st.log("Resetting the TG ports")
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])

    # TG protocol interface creation
    st.log("TG protocol interface creation")
    h1 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_1"], mode='config',
            intf_ip_addr=data.t1d1_ip_addr,gateway=data.d1t1_ip_addr,
            src_mac_addr=data.t1d1_mac_addr,arp_send_req='1')
    st.log("INTFCONF: "+str(h1))
    h2 = tg.tg_interface_config(port_handle=tg_handler["tg_ph_2"], mode='config',
            intf_ip_addr=data.t2d1_ip_addr,gateway=data.d1t2_ip_addr,
            src_mac_addr=data.t2d1_mac_addr,arp_send_req='1',vlan_id=data.vlan_1,vlan=1)
    st.log("INTFCONF: "+str(h2))

    yield
    # ARP module cleanup
    st.log("ARP module cleanup.")
    ip_obj.clear_ip_configuration(dut1,family="ipv4",thread=data.clear_parallel)
    vlan_obj.clear_vlan_configuration(dut1,thread= data.clear_parallel)
Exemple #11
0
def vlan_config():
    vlan_obj.create_vlan(vars.D1, data.vlan)
    st.log(
        "Adding TGen port connected interface to the vlan with tagging mode")
    if not vlan_obj.add_vlan_member(vars.D1,
                                    data.vlan,
                                    [vars.D1T1P1, vars.D1T1P2, vars.D1T1P3],
                                    tagging_mode=True):
        st.report_fail("vlan_tagged_member_fail")
    if not vlan_obj.verify_vlan_brief(vars.D1, data.vlan):
        st.report_fail("vlan_create_fail", data.vlan)
Exemple #12
0
def interface_module_hooks(request):
    global vars
    vars = st.ensure_min_topology("D1D2:2", "D1T1:2")
    initialize_variables()
    if not vlanapi.create_vlan(vars.D1, intf_data.vlan_id):
        st.report_fail("vlan_create_fail", intf_data.vlan_id)
    if not vlanapi.add_vlan_member(vars.D1, intf_data.vlan_id, [vars.D1T1P1, vars.D1T1P2]):
        st.report_fail("vlan_untagged_member_fail", [vars.D1T1P1, vars.D1T1P2], intf_data.vlan_id)
    st.log("Getting TG handlers")

    _, intf_data.tg_ph_1 = tgapi.get_handle_byname("T1D1P1")
    _, intf_data.tg_ph_2 = tgapi.get_handle_byname("T1D1P2")
    intf_data.tg = tgapi.get_chassis(vars)

    st.log("Reset and clear statistics of TG ports")
    intf_data.tg.tg_traffic_control(action='reset', port_handle=[intf_data.tg_ph_1, intf_data.tg_ph_2])
    intf_data.tg.tg_traffic_control(action='clear_stats', port_handle=[intf_data.tg_ph_1, intf_data.tg_ph_2])

    st.log("Creating TG streams")
    intf_data.streams = {}
    stream = intf_data.tg.tg_traffic_config(port_handle=intf_data.tg_ph_1, mode='create', port_handle2=intf_data.tg_ph_2,
                                            length_mode='fixed', rate_pps=100, frame_size=intf_data.mtu1,
                                            l2_encap='ethernet_ii_vlan', transmit_mode='single_burst',
                                            pkts_per_burst=100, vlan_id=intf_data.vlan_id,
                                            mac_src=intf_data.source_mac, mac_dst=intf_data.destination_mac,
                                            vlan="enable")
    st.log('Stream output:{}'.format(stream))
    intf_data.streams['mtu1'] = stream['stream_id']

    stream = intf_data.tg.tg_traffic_config(port_handle=intf_data.tg_ph_1, mode='create', port_handle2=intf_data.tg_ph_2,
                                            length_mode='fixed', rate_pps=100, frame_size=intf_data.mtu2,
                                            l2_encap='ethernet_ii_vlan', transmit_mode='single_burst',
                                            pkts_per_burst=100, vlan_id=intf_data.vlan_id,
                                            mac_src=intf_data.source_mac, mac_dst=intf_data.destination_mac,
                                            vlan="enable")
    st.log('Stream output:{}'.format(stream))
    intf_data.streams['mtu2'] = stream['stream_id']

    stream = intf_data.tg.tg_traffic_config(port_handle=intf_data.tg_ph_1, mode='create',
                                            length_mode='fixed', frame_size='5000',
                                            transmit_mode='continuous')
    st.log('Stream output:{}'.format(stream))
    intf_data.streams['traffic_tg1'] = stream['stream_id']

    stream = intf_data.tg.tg_traffic_config(port_handle=intf_data.tg_ph_2, mode='create',
                                            length_mode='fixed', frame_size='5000',
                                            transmit_mode='continuous')
    st.log('Stream output:{}'.format(stream))
    intf_data.streams['traffic_tg2'] = stream['stream_id']

    yield
    vlanapi.clear_vlan_configuration(st.get_dut_names(), thread=True)
    # intf_data.tg.tg_traffic_control(action='stop', port_handle=[intf_data.tg_ph_1, intf_data.tg_ph_2])
    intf_data.tg.tg_traffic_control(action='reset', port_handle=[intf_data.tg_ph_1, intf_data.tg_ph_2])
def vlan_config():
    st.log("creating random vlan")
    if not vlan_obj.create_vlan(vars.D1, data.vlan):
        st.report_fail("vlan_create_fail", data.vlan)
    else:
        st.log("vlan creation is successful")
    st.log(
        "Adding Ixia port connected interface to the vlan with tagging mode")
    if not vlan_obj.add_vlan_member(
            vars.D1, data.vlan, [vars.D1T1P1, vars.D1T1P2], tagging_mode=True):
        st.report_fail("vlan_tagged_member_fail", [vars.D1T1P1, vars.D1T1P2],
                       data.vlan)
    else:
        st.log("Adding ports in the vlan is successful")
Exemple #14
0
def test_ft_stormcontrol_portchannel_intf():
    status = 1
    msg_id = "storm_control_portchannel_verification_successful"
    portchannel_name = 'PortChannel13'
    vlan_info = [{
        "dut": [vars.D2],
        "vlan_id": sc_data.vlan,
        "tagged": [vars.D2T1P1, vars.D2T1P2, portchannel_name]
    }]
    portchannel_interfaces_dut1 = [vars.D1D2P1, vars.D1D2P2]
    portchannel_interfaces_dut2 = [vars.D2D1P1, vars.D2D1P2]
    portchannel.config_portchannel(vars.D1,
                                   vars.D2,
                                   portchannel_name,
                                   portchannel_interfaces_dut1,
                                   portchannel_interfaces_dut2,
                                   config="add",
                                   thread=True)
    vlan.add_vlan_member(vars.D1,
                         sc_data.vlan,
                         portchannel_name,
                         tagging_mode=True)
    vlan.create_vlan_and_add_members(vlan_info)
    st.log(
        "Verifying whether stormcontrol config can be applied on portchannel {} interfaces"
        .format(portchannel_name))
    if scapi.config(vars.D1,
                    type="broadcast",
                    action="add",
                    interface_name=portchannel_name,
                    rate=sc_data.kbps,
                    skip_error_check=True):
        st.error(
            "storm-control config can be applied on portchannel interface")
        status = 0
    else:
        st.log(
            "storm-control config cannot be applied on portchannel interface.")
    if status:
        st.report_tc_pass('ft_stormcontrol_neg_config_vlan_portchannel',
                          'test_case_passed')
    else:
        st.report_tc_fail('ft_stormcontrol_neg_config_vlan_portchannel',
                          'test_case_failed')
    status = 1
    st.log("configuring bum stormcontrol on portchannel interfaces")
    scapi.config(vars.D1,
                 type="broadcast",
                 action="del",
                 interface_name=vars.D1T1P1,
                 bits_per_sec=sc_data.kbps)
    scapi.config(vars.D1,
                 type="broadcast",
                 action="del",
                 interface_name=vars.D1T1P2,
                 bits_per_sec=sc_data.kbps)
    scapi.config(vars.D2,
                 type="broadcast",
                 action="add",
                 interface_name=vars.D2D1P1,
                 bits_per_sec=sc_data.kbps)
    scapi.config(vars.D2,
                 type="broadcast",
                 action="add",
                 interface_name=vars.D2D1P2,
                 bits_per_sec=sc_data.kbps)
    verify_bum_traffic_mode('broadcast',
                            tg_info['tg1_stream_id'],
                            skip_traffic_verify=True)
    st.log("Clearing interface counters")
    ifapi.clear_interface_counters(vars.D2)
    tg.tg_traffic_control(action='run',
                          stream_handle=tg_info['tg1_stream_id'],
                          duration=10)
    st.wait(sc_data.wait_stream_run)
    st.log("Stopping of traffic from TGen to get interface counters")
    tg.tg_traffic_control(action='stop',
                          stream_handle=tg_info['tg1_stream_id'])
    st.wait(sc_data.wait_for_stats)
    tg_1_stats = tgapi.get_traffic_stats(tg,
                                         mode='aggregate',
                                         port_handle=tg_handler["tg_ph_1"])
    tg_3_stats = tgapi.get_traffic_stats(tg,
                                         mode='aggregate',
                                         port_handle=tg_handler["tg_ph_3"])
    counter = tg_3_stats.rx.total_packets
    counter2 = tg_1_stats.tx.total_packets
    try:
        time = int(counter2 / sc_data.rate_pps)
        counters_avg = counter / time
    except Exception:
        counters_avg = 0
    st.log("Average of counters are : {}".format(counters_avg))
    st.log("Higher packet count value is : {}".format(
        sc_data.higher_pkt_count))
    st.log("Lower packet count value is : {}".format(sc_data.lower_pkt_count))
    st.log("value of status is : {}".format(status))
    if counters_avg > sc_data.higher_pkt_count or counters_avg < sc_data.lower_pkt_count:
        st.error("storm control traffic verification failed")
        status = 0
    if status:
        st.report_tc_pass('ft_stormcontrol_portchannel_intf',
                          'test_case_passed')
    else:
        st.report_tc_fail('ft_stormcontrol_portchannel_intf',
                          'test_case_failed')
    status = 1
    st.log("Configuring stormcontrol without providing bps value")
    if scapi.config(vars.D1,
                    type="broadcast",
                    action="add",
                    interface_name=vars.D1T1P1,
                    skip_error_check=True):
        st.error("Storm-control config is accepting not throwing any error")
        status = 0
    else:
        st.log("Config is not accepted and thrown an error")
    if status:
        st.report_tc_pass('ft_stormcontrol_neg_config_without_bpsvalue',
                          'test_case_passed')
    else:
        st.report_tc_fail('ft_stormcontrol_neg_config_without_bpsvalue',
                          'test_case_failed')
    status = 1
    st.log("unconfiguring of bum stormcontrol type by providing bps value")
    if scapi.config(vars.D1,
                    type="broadcast",
                    action="del",
                    interface_name=vars.D1T1P1,
                    rate=sc_data.kbps,
                    skip_error_check=True):
        st.error("Storm-control config is removed and not throwing any error")
        status = 0
    else:
        st.log("Config is not accepted and thrown an error")
    if status:
        st.report_tc_pass('ft_stormcontrol_neg_unconfig_with_bpsvalue',
                          'test_case_passed')
    else:
        st.report_tc_fail('ft_stormcontrol_neg_unconfig_with_bpsvalue',
                          'test_case_failed')

    st.log("Back to module config")
    scapi.config(vars.D2,
                 type="broadcast",
                 action="del",
                 interface_name=vars.D2D1P1,
                 bits_per_sec=sc_data.kbps)
    scapi.config(vars.D2,
                 type="broadcast",
                 action="del",
                 interface_name=vars.D2D1P2,
                 bits_per_sec=sc_data.kbps)
    scapi.config(vars.D1,
                 type="broadcast",
                 action="add",
                 interface_name=vars.D1T1P1,
                 bits_per_sec=sc_data.kbps)
    scapi.config(vars.D1,
                 type="broadcast",
                 action="add",
                 interface_name=vars.D1T1P2,
                 bits_per_sec=sc_data.kbps)
    st.log(
        "Unconfiguring portchannel config in both devices and only vlan configuration in device2"
    )
    vlan.clear_vlan_configuration(vars.D2)
    vlan.delete_vlan_member(vars.D1,
                            sc_data.vlan,
                            portchannel_name,
                            tagging_mode=True)
    portchannel.clear_portchannel_configuration(st.get_dut_names(),
                                                thread=True)
    if not status:
        msg_id = "storm_control_portchannel_verification_failed"
    report_result(status, msg_id)
Exemple #15
0
def dut2_config(config=''):

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

    st.log('On DUT2 configure vlan and add IPv4 and IPv6 addresses to it')
    vlan_obj.create_vlan(data.dut2_server, data.dut1_dut2_vlan[0])
    vlan_obj.add_vlan_member(data.dut2_server, data.dut1_dut2_vlan[0],
                             data.d2_d1_ports[1], True, True)
    ip_obj.config_ip_addr_interface(data.dut2_server,
                                    'Vlan' + data.dut1_dut2_vlan[0],
                                    data.dut2_dut1_ipv6[1],
                                    data.dut2_dut1_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut2_server,
                                    'Vlan' + data.dut1_dut2_vlan[0],
                                    data.dut2_dut1_ip[1],
                                    data.dut2_dut1_ip_subnet, 'ipv4')

    st.log(
        'On DUT2 configure portchannel and add IPv4 and IPv6 addresses to it')
    pc_obj.create_portchannel(data.dut2_server, data.portchannel)
    pc_obj.add_portchannel_member(data.dut2_server, data.portchannel,
                                  [data.d2_d1_ports[2], data.d2_d1_ports[3]])
    ip_obj.config_ip_addr_interface(data.dut2_server, data.portchannel,
                                    data.dut2_dut1_ipv6[2],
                                    data.dut2_dut1_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut2_server, data.portchannel,
                                    data.dut2_dut1_ip[2],
                                    data.dut2_dut1_ip_subnet, 'ipv4')

    st.log('On DUT2 configure loopback and add IPv4 and IPv6 addresses to it')
    ip_obj.configure_loopback(data.dut2_server,
                              config='yes',
                              loopback_name=data.dut2_loopback[0])
    ip_obj.config_ip_addr_interface(data.dut2_server, data.dut2_loopback[0],
                                    data.dut2_loopback_ipv6[0],
                                    data.dut2_loopback_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut2_server, data.dut2_loopback[0],
                                    data.dut2_loopback_ip[0],
                                    data.dut2_loopback_ip_subnet, 'ipv4')

    st.log('IPv4 and IPv6 static routes for loopback reachability')
    ip_obj.create_static_route(data.dut2_server,
                               data.dut1_dut2_ip[0],
                               data.dut1_loopback_ip[0] + '/32',
                               family='ipv4')
    ip_obj.create_static_route(data.dut2_server,
                               data.dut1_dut2_ipv6[0],
                               data.dut1_loopback_ipv6[0] + '/128',
                               family='ipv6')

    ####
    ip_obj.config_ip_addr_interface(data.dut2_server, data.d2_d3_ports[0],
                                    data.dut2_dut3_ip[0],
                                    data.dut2_dut3_ip_subnet, 'ipv4')
    ip_obj.config_ip_addr_interface(data.dut2_server, data.d2_d3_ports[0],
                                    data.dut2_dut3_ipv6[0],
                                    data.dut2_dut3_ipv6_subnet, 'ipv6')

    vlan_obj.create_vlan(data.dut2_server, data.dut2_dut3_vlan[0])
    vlan_obj.add_vlan_member(data.dut2_server, data.dut2_dut3_vlan[0],
                             data.d2_d3_ports[1], True, True)
    ip_obj.config_ip_addr_interface(data.dut2_server,
                                    'Vlan' + data.dut2_dut3_vlan[0],
                                    data.dut2_dut3_ipv6[1],
                                    data.dut2_dut3_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut2_server,
                                    'Vlan' + data.dut2_dut3_vlan[0],
                                    data.dut2_dut3_ip[1],
                                    data.dut2_dut3_ip_subnet, 'ipv4')

    st.log('On DUT2 configure portchannel and IPv4 and IPv6 addresses on it')
    pc_obj.create_portchannel(data.dut2_server, data.portchannel_2)
    pc_obj.add_portchannel_member(data.dut2_server, data.portchannel_2,
                                  [data.d2_d3_ports[2], data.d2_d3_ports[3]])
    ip_obj.config_ip_addr_interface(data.dut2_server, data.portchannel_2,
                                    data.dut2_dut3_ipv6[2],
                                    data.dut2_dut3_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut2_server, data.portchannel_2,
                                    data.dut2_dut3_ip[2],
                                    data.dut2_dut3_ip_subnet, 'ipv4')

    st.log('On DUT2 configure loopback and IPv4 and IPv6 addresses on it')
    ip_obj.configure_loopback(data.dut2_server,
                              config='yes',
                              loopback_name=data.dut2_loopback[1])
    ip_obj.config_ip_addr_interface(data.dut2_server, data.dut2_loopback[1],
                                    data.dut2_loopback_ipv6[1],
                                    data.dut2_loopback_ipv6_subnet, 'ipv6')
    ip_obj.config_ip_addr_interface(data.dut2_server, data.dut2_loopback[1],
                                    data.dut2_loopback_ip[1],
                                    data.dut2_loopback_ip_subnet, 'ipv4')

    st.log('IPv4 and IPv6 static routes for loopback reachability')
    ip_obj.create_static_route(data.dut2_server,
                               data.dut3_dut2_ip[0],
                               data.dut3_loopback_ip[0] + '/32',
                               family='ipv4')
    ip_obj.create_static_route(data.dut2_server,
                               data.dut3_dut2_ipv6[0],
                               data.dut3_loopback_ipv6[0] + '/128',
                               family='ipv6')

    return True
Exemple #16
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
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
Exemple #18
0
def config_ip(config='yes'):
    if config == 'yes':
        api_name = ip_api.config_ip_addr_interface
        config_str = "Configure"
    else:
        api_name = ip_api.delete_ip_interface
        config_str = "Delete"

    hdrMsg("Bring-up the port on dut3 which is connected to dhcp server ")
    interface_api.interface_operation(data.dut3,
                                      data.dhcp_server_port,
                                      operation="startup")

    ##########################################################################
    hdrMsg(
        "IP-config: {} IP address between dut2 interface {} and dut3 interface {}"
        .format(config_str, data.d2d3_ports, data.d3d2_ports))
    ##########################################################################
    utils.exec_all(True, [[
        api_name, data.dut2, data.d2d3_ports[0], dut2_3_ip_list[0], mask_24
    ], [api_name, data.dut3, data.d3d2_ports[0], dut3_2_ip_list[0], mask_24]])

    if config == 'yes':
        st.banner('Install L2 DHCP rules on dhcp client device')
        copp_api.bind_class_action_copp_policy(data.dut4,
                                               classifier='copp-system-dhcpl2',
                                               action_group='copp-system-dhcp')
        ##########################################################################
        hdrMsg("Create loopback interfaces on dut1, dut2 and dut3")
        ##########################################################################
        parallel.exec_parallel(True, [data.dut1, data.dut2, data.dut3],
                               ip_api.configure_loopback,
                               [{
                                   'loopback_name': 'Loopback1'
                               }] * 3)

        ##########################################################################
        hdrMsg("Loopback-config: {} IP address on Loopback interface".format(
            config_str))
        ##########################################################################
        utils.exec_all(True, [[
            api_name, data.dut1, "Loopback1", dut1_loopback_ip_list[0], '32'
        ], [
            api_name, data.dut2, "Loopback1", dut2_loopback_ip_list[0], '32'
        ], [api_name, data.dut3, "Loopback1", dut3_loopback_ip_list[0], '32']])

        ##########################################
        hdrMsg("config required vlan to test on dut2 and dut4")
        ##########################################
        utils.exec_all(True, [[vlan_api.create_vlan, data.dut2, ['100']],
                              [vlan_api.create_vlan, data.dut4, ['100']]])
        vlan_api.create_vlan(data.dut4, ['200', '300'])

        ##########################################
        hdrMsg("Add vlan members")
        ##########################################
        utils.exec_all(True, [[
            vlan_api.add_vlan_member, data.dut2, '100', data.d2d4_ports[0],
            True
        ],
                              [
                                  vlan_api.add_vlan_member, data.dut4, '100',
                                  data.d4d2_ports[0], True
                              ]])

        #########################################################
        hdrMsg("LAG-Config: Create portchannel on dut2 and dut4")
        #########################################################
        utils.exec_all(True,
                       [[pc.create_portchannel, data.dut2, ['PortChannel12']],
                        [pc.create_portchannel, data.dut4, ['PortChannel12']]])

        #########################################################
        hdrMsg("LAG-Config: add member ports to portchannel")
        #########################################################
        utils.exec_all(True, [[
            pc.add_del_portchannel_member, data.dut2, 'PortChannel12',
            data.d2d4_ports[2], 'add'
        ],
                              [
                                  pc.add_del_portchannel_member, data.dut4,
                                  'PortChannel12', data.d4d2_ports[2], 'add'
                              ]])

        #########################################################
        hdrMsg("LAG-Config: Create portchannel on dut3 and dut1")
        #########################################################
        utils.exec_all(True,
                       [[pc.create_portchannel, data.dut3, ['PortChannel14']],
                        [pc.create_portchannel, data.dut1, ['PortChannel14']]])

        #########################################################
        hdrMsg("LAG-Config: add member ports to portchannel")
        #########################################################
        utils.exec_all(True, [[
            pc.add_del_portchannel_member, data.dut3, 'PortChannel14',
            data.d3d1_ports[0], 'add'
        ],
                              [
                                  pc.add_del_portchannel_member, data.dut1,
                                  'PortChannel14', data.d1d3_ports[0], 'add'
                              ]])

        ip_api.config_ip_addr_interface(data.dut2, 'Vlan100',
                                        dut2_4_ip_list[0], mask_24)
        ip_api.config_ip_addr_interface(data.dut2, data.d2d4_ports[1],
                                        dut2_4_ip_list[1], mask_24)
        ip_api.config_ip_addr_interface(data.dut2, 'PortChannel12',
                                        dut2_4_ip_list[2], mask_24)
        ip_api.config_ip_addr_interface(data.dut1,
                                        'PortChannel14',
                                        data.dhcp_server_ipv6,
                                        mask_v6,
                                        family='ipv6')

        #########################################
        hdrMsg("Add vlan members on DUT4")
        #########################################
        vlan_api.add_vlan_member(data.dut4, '200', data.d4d2_ports[1])
        vlan_api.add_vlan_member(data.dut4, '300', 'PortChannel12')

        st.exec_all([[create_static_route_dut2], [create_static_route_dut3]])
    else:
        st.banner('Remove L2 DHCP rules on dhcp client device')
        copp_api.bind_class_action_copp_policy(data.dut4,
                                               classifier='copp-system-dhcpl2',
                                               action_group='copp-system-dhcp',
                                               config='no')
        ##########################################################################
        hdrMsg("Loopback-config: {} IP address on Loopback interface".format(
            config_str))
        ##########################################################################
        utils.exec_all(True, [[
            api_name, data.dut1, "Loopback1", dut1_loopback_ip_list[0], '32'
        ], [
            api_name, data.dut2, "Loopback1", dut2_loopback_ip_list[0], '32'
        ], [api_name, data.dut3, "Loopback1", dut3_loopback_ip_list[0], '32']])

        ##########################################################################
        hdrMsg("Delete loopback interfaces on dut1, dut2 and dut3")
        ##########################################################################
        parallel.exec_parallel(True, [data.dut1, data.dut2, data.dut3],
                               ip_api.configure_loopback, [{
                                   'loopback_name': 'Loopback1',
                                   'config': 'no'
                               }] * 3)

        st.exec_all([[delete_static_route_dut2], [delete_static_route_dut3]])

        hdrMsg(" Remove all ip configs on dut2")
        ip_api.delete_ip_interface(data.dut2, 'Vlan100', dut2_4_ip_list[0],
                                   mask_24)
        ip_api.delete_ip_interface(data.dut2, data.d2d4_ports[1],
                                   dut2_4_ip_list[1], mask_24)
        ip_api.delete_ip_interface(data.dut2, 'PortChannel12',
                                   dut2_4_ip_list[2], mask_24)
        ip_api.delete_ip_interface(data.dut1,
                                   'PortChannel14',
                                   data.dhcp_server_ipv6,
                                   mask_v6,
                                   family='ipv6')

        ###########################################################
        hdrMsg("LAG-unConfig: delete member ports to portchannel")
        ###########################################################
        utils.exec_all(True, [[
            pc.add_del_portchannel_member, data.dut2, 'PortChannel12',
            data.d2d4_ports[2], 'del'
        ],
                              [
                                  pc.add_del_portchannel_member, data.dut4,
                                  'PortChannel12', data.d4d2_ports[2], 'del'
                              ]])
        utils.exec_all(True, [[
            pc.add_del_portchannel_member, data.dut3, 'PortChannel14',
            data.d3d1_ports[0], 'del'
        ],
                              [
                                  pc.add_del_portchannel_member, data.dut1,
                                  'PortChannel14', data.d1d3_ports[0], 'del'
                              ]])

        vlan_api.delete_vlan_member(data.dut4, '300', 'PortChannel12')
        #######################################################
        hdrMsg("LAG-UnConfig: Delete portchannel on dut2 and dut4")
        #######################################################
        utils.exec_all(True,
                       [[pc.delete_portchannel, data.dut2, ['PortChannel12']],
                        [pc.delete_portchannel, data.dut4, ['PortChannel12']]])
        utils.exec_all(True,
                       [[pc.delete_portchannel, data.dut3, ['PortChannel14']],
                        [pc.delete_portchannel, data.dut1, ['PortChannel14']]])

        ########################################
        hdrMsg("Delete vlan member ports")
        ########################################
        utils.exec_all(True, [[
            vlan_api.delete_vlan_member, data.dut2, '100', data.d2d4_ports[0],
            True
        ],
                              [
                                  vlan_api.delete_vlan_member, data.dut4,
                                  '100', data.d4d2_ports[0], True
                              ]])
        vlan_api.delete_vlan_member(data.dut4, '200', data.d4d2_ports[1])

        ####################################
        hdrMsg("Unconfig vlan fron dut2 and dut4")
        ###################################
        utils.exec_all(True, [[vlan_api.delete_vlan, data.dut2, ['100']],
                              [vlan_api.delete_vlan, data.dut4, ['100']]])
        vlan_api.delete_vlan(data.dut4, ['200', '300'])
def dut_vrf_bind(**kwargs):
    vars = st.get_testbed_vars()

    dut1 = st.get_dut_names()[0]
    dut2 = st.get_dut_names()[1]

    if 'config' in kwargs:
        config = kwargs['config']
    else:
        config = ''

    if config == '':
        st.log(
            '######------Configure vlans on the PE--PE side - DUT1 -- DUT2------######'
        )
        for vlan in data.dut1_dut2_vlan[0:3]:
            vlan_obj.create_vlan(dut1, vlan)
            vlan_obj.add_vlan_member(dut1, vlan, vars.D1D2P1, True, True)
        for vlan in data.dut2_dut1_vlan[0:3]:
            vlan_obj.create_vlan(dut2, vlan)
            vlan_obj.add_vlan_member(dut2, vlan, vars.D2D1P1, True, True)

        st.log(
            '######------Bind DUT1 <--> DUT2 vlans to vrf, assign v4 and v6 address------######'
        )
        for vlan, ip, ip2, ipv6, ipv6_2, vrf in zip(
                data.dut1_dut2_vlan[0:3], data.dut1_dut2_vrf_ip[0:3],
                data.dut2_dut1_vrf_ip[0:3], data.dut1_dut2_vrf_ipv6[0:3],
                data.dut2_dut1_vrf_ipv6[0:3], data.vrf_name[0:3]):
            dict1 = {
                'vrf_name': vrf,
                'intf_name': 'Vlan' + vlan,
                'skip_error': True
            }
            dict2 = {
                'vrf_name': vrf,
                'intf_name': 'Vlan' + vlan,
                'skip_error': True
            }
            parallel.exec_parallel(True, [dut1, dut2],
                                   vrf_api.bind_vrf_interface, [dict1, dict2])

            parallel.exec_all(
                True,
                [[
                    ipfeature.config_ip_addr_interface, dut1, 'Vlan' + vlan,
                    ip, data.dut1_dut2_vrf_ip_subnet, 'ipv4'
                ],
                 [
                     ipfeature.config_ip_addr_interface, dut2, 'Vlan' + vlan,
                     ip2, data.dut2_dut1_vrf_ip_subnet, 'ipv4'
                 ]])

            parallel.exec_all(
                True,
                [[
                    ipfeature.config_ip_addr_interface, dut1, 'Vlan' + vlan,
                    ipv6, data.dut1_dut2_vrf_ipv6_subnet, 'ipv6'
                ],
                 [
                     ipfeature.config_ip_addr_interface, dut2, 'Vlan' + vlan,
                     ipv6_2, data.dut2_dut1_vrf_ipv6_subnet, 'ipv6'
                 ]])
            '''
            vrf_api.bind_vrf_interface(dut = dut1, vrf_name = vrf, intf_name = 'Vlan'+vlan, skip_error = True)
            ipfeature.config_ip_addr_interface(dut1, 'Vlan'+vlan, ip, data.dut1_dut2_vrf_ip_subnet, 'ipv4')
            ipfeature.config_ip_addr_interface(dut1, 'Vlan'+vlan, ipv6, data.dut1_dut2_vrf_ipv6_subnet, 'ipv6')
            '''
        '''
        st.log('######------Bind DUT2 <--> DUT1 virtual interfaces to vrf and config IP addresses------######')
        for vlan, ip, ipv6, vrf in zip(data.dut2_dut1_vlan[0:3], data.dut2_dut1_vrf_ip[0:3], data.dut2_dut1_vrf_ipv6[0:3],data.vrf_name[0:3]):
            vrf_api.bind_vrf_interface(dut = dut2, vrf_name = vrf, intf_name = 'Vlan'+vlan, skip_error = True)
            ipfeature.config_ip_addr_interface(dut2, 'Vlan'+vlan, ip, data.dut2_dut1_vrf_ip_subnet, 'ipv4')
            ipfeature.config_ip_addr_interface(dut2, 'Vlan'+vlan, ipv6, data.dut2_dut1_vrf_ipv6_subnet, 'ipv6')
        '''

    elif config == 'no':
        '''
        st.log('######------Unbind DUT1 <--> DUT2 vlans to vrf, assign v4 and v6 address------######')
        for vlan, ip, ipv6, vrf in zip(data.dut1_dut2_vlan[0:3], data.dut1_dut2_vrf_ip[0:3], data.dut1_dut2_vrf_ipv6[0:3],data.vrf_name[0:3]):
            vrf_api.bind_vrf_interface(dut = dut1, vrf_name = vrf, intf_name = 'Vlan'+vlan, skip_error = True, config = 'no')
            ipfeature.delete_ip_interface(dut1, 'Vlan'+vlan, ip, data.dut1_dut2_vrf_ip_subnet, 'ipv4')
            ipfeature.delete_ip_interface(dut1, 'Vlan'+vlan, ipv6, data.dut1_dut2_vrf_ipv6_subnet, 'ipv6')

        st.log('######------Unbind DUT2 <--> DUT1 physical interfaces to vrf and config IP addresses------######')
        for vlan, ip, ipv6, vrf in zip(data.dut2_dut1_vlan[0:3], data.dut2_dut1_vrf_ip[0:3], data.dut2_dut1_vrf_ipv6[0:3],data.vrf_name[0:3]):
            vrf_api.bind_vrf_interface(dut = dut2, vrf_name = vrf, intf_name = 'Vlan'+vlan, skip_error = True, config = 'no')
            ipfeature.delete_ip_interface(dut2, 'Vlan'+vlan, ip, data.dut2_dut1_vrf_ip_subnet, 'ipv4')
            ipfeature.delete_ip_interface(dut2, 'Vlan'+vlan, ipv6, data.dut2_dut1_vrf_ipv6_subnet, 'ipv6')
        '''
        st.log(
            '######------Delete vlans on the PE--PE side - DUT1 -- DUT2------######'
        )
        for vlan in data.dut1_dut2_vlan[0:3]:
            vlan_obj.delete_vlan_member(dut1,
                                        vlan,
                                        vars.D1D2P1,
                                        tagging_mode=True)
            vlan_obj.delete_vlan(dut1, vlan)
        for vlan in data.dut2_dut1_vlan[0:3]:
            vlan_obj.delete_vlan_member(dut2,
                                        vlan,
                                        vars.D2D1P1,
                                        tagging_mode=True)
            vlan_obj.delete_vlan(dut2, vlan)
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
Exemple #21
0
def test_ft_ip_v4_v6_L2_L3_translation():
    # Objective - Verify that L2 port to IPv4 L3 port transition and vice-versa is successful.
    st.log("Checking IPv4 ping from {} to {} over  routing interface".format(
        vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D1, data.ip4_addr[7], family=data.af_ipv4, count=1):
        st.report_fail("ping_fail", data.ip4_addr[6], data.ip4_addr[7])
    st.log(
        "Checking IPv6 ping from {} to {} over vlan routing interface".format(
            vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D2, data.ip6_addr[6], family=data.af_ipv6, count=1):
        st.report_fail("ping_fail", data.ip6_addr[7], data.ip6_addr[6])
    st.log("L3 to L2 port transition")
    st.log("Removing ipv4,ipv6 address from interface")
    ipfeature.delete_ip_interface(vars.D1,
                                  vars.D1D2P4,
                                  data.ip4_addr[6],
                                  24,
                                  family=data.af_ipv4)
    ipfeature.delete_ip_interface(vars.D2,
                                  vars.D2D1P4,
                                  data.ip4_addr[7],
                                  24,
                                  family=data.af_ipv4)
    ipfeature.delete_ip_interface(vars.D1,
                                  vars.D1D2P4,
                                  data.ip6_addr[6],
                                  96,
                                  family=data.af_ipv6)
    ipfeature.delete_ip_interface(vars.D2,
                                  vars.D2D1P4,
                                  data.ip6_addr[7],
                                  96,
                                  family=data.af_ipv6)
    ipfeature.delete_ip_interface(vars.D1,
                                  vars.D1T1P1,
                                  data.ip4_addr[1],
                                  24,
                                  family=data.af_ipv4)
    ipfeature.delete_ip_interface(vars.D2,
                                  vars.D2T1P1,
                                  data.ip4_addr[8],
                                  24,
                                  family=data.af_ipv4)
    st.log("Removing the static routes")
    ipfeature.delete_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    ipfeature.delete_static_route(vars.D1,
                                  data.static_ip6_rt_drop,
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
    st.log("Vlan creation and port association configuration")
    vlan_obj.create_vlan(vars.D1, data.vlan_2)
    st.log("Adding back to back connecting ports to vlan {}".format(
        data.vlan_2))
    vlan_obj.add_vlan_member(vars.D1,
                             data.vlan_2, [vars.D1D2P4],
                             tagging_mode=True)
    vlan_obj.create_vlan(vars.D2, data.vlan_2)
    vlan_obj.add_vlan_member(vars.D2,
                             data.vlan_2, [vars.D2D1P4],
                             tagging_mode=True)
    st.log("Adding TG connecting ports to vlan {}".format(data.vlan_1))
    vlan_obj.add_vlan_member(vars.D1,
                             data.vlan_2,
                             vars.D1T1P1,
                             tagging_mode=True)
    vlan_obj.add_vlan_member(vars.D2,
                             data.vlan_2,
                             vars.D2T1P1,
                             tagging_mode=True)
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D2P1")
    tg.tg_traffic_control(action="reset", port_handle=tg_handler["tg_ph_list"])
    tg.tg_traffic_control(action="clear_stats",
                          port_handle=tg_handler["tg_ph_list"])

    tr2 = tg.tg_traffic_config(port_handle=tg_handler["tg_ph_2"],
                               mode='create',
                               rate_pps="2000",
                               mac_src_mode="fixed",
                               transmit_mode="single_burst",
                               pkts_per_burst=2000,
                               length_mode='fixed',
                               l2_encap='ethernet_ii_vlan',
                               vlan_id=data.vlan_2,
                               mac_dst_mode="fixed",
                               vlan="enable",
                               mac_src="00:a1:bb:cc:dd:01",
                               mac_dst="00:b1:bb:cc:dd:01")
    st.log("TRAFCONF: " + str(tr2))
    res = tg.tg_traffic_control(action='run', stream_handle=tr2['stream_id'])
    tg.tg_traffic_control(action='stop', stream_handle=tr2['stream_id'])
    st.wait(data.wait_tgstats)
    st.log("TR_CTRL: " + str(res))
    st.log("Fetching TGen statistics")
    stats_tg1 = tgapi.get_traffic_stats(tg_handler["tg"],
                                        mode="aggregate",
                                        port_handle=tg_handler["tg_ph_2"])
    total_tx_tg1 = stats_tg1.tx.total_packets
    stats_tg2 = tgapi.get_traffic_stats(tg_handler["tg"],
                                        mode="aggregate",
                                        port_handle=tg_handler["tg_ph_1"])
    total_rx_tg2 = stats_tg2.rx.total_packets
    st.log("total_tx_tg1 = {}".format(total_tx_tg1))
    total_tx_tg1_95_percentage = int(total_tx_tg1) * 0.95
    st.log("total_tx_tg1_95_percentage= {}".format(total_tx_tg1_95_percentage))
    st.log("total_rx_tg2 = {}".format(total_rx_tg2))
    if int(total_tx_tg1_95_percentage) > int(total_rx_tg2):
        st.report_fail("traffic_verification_failed")
    st.log("Removing vlan configuration")
    vlan_obj.delete_vlan_member(vars.D1, data.vlan_2,
                                [vars.D1D2P4, vars.D1T1P1], True)
    vlan_obj.delete_vlan_member(vars.D2, data.vlan_2,
                                [vars.D2D1P4, vars.D2T1P1], True)
    st.log("L2 to L3 port transition")
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip4_addr[6],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip4_addr[7],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.create_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    st.log("Checking IPv4 ping from {} to {} over routing interface".format(
        vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D1, data.ip4_addr[7], family=data.af_ipv4, count=1):
        st.report_fail("ping_fail", data.ip4_addr[6], data.ip4_addr[7])
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip6_addr[6],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip6_addr[7],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.create_static_route(vars.D1,
                                  data.static_ip6_rt_drop,
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
    st.log(
        "Checking IPv6 ping from {} to {} over vlan routing interface".format(
            vars.D1, vars.D2))
    if not ipfeature.ping(
            vars.D2, data.ip6_addr[6], family=data.af_ipv6, count=1):
        st.report_fail("ping_fail", data.ip6_addr[7], data.ip6_addr[6])
    st.report_pass("test_case_passed")
Exemple #22
0
def ip_module_hooks(request):
    global vars, tg_handler, tg
    # Min topology verification
    st.log("Ensuring minimum topology")
    vars = st.ensure_min_topology("D1T1:4", "D2T1:2", "D1D2:4")
    # Initialize TG and TG port handlers
    tg_handler = tgapi.get_handles_byname("T1D1P1", "T1D1P2", "T1D2P1",
                                          "T1D2P2")
    tg = tg_handler["tg"]
    # IP module configuration
    st.log("Vlan routing configuration on D1D2P1,D2D1P1")
    vlan_obj.create_vlan(vars.D1, data.vlan_1)
    vlan_obj.add_vlan_member(vars.D1,
                             data.vlan_1, [vars.D1D2P1],
                             tagging_mode=True)
    vlan_obj.create_vlan(vars.D2, data.vlan_1)
    vlan_obj.add_vlan_member(vars.D2,
                             data.vlan_1, [vars.D2D1P1],
                             tagging_mode=True)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.vlan_int_1,
                                       data.ip4_addr[2],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.vlan_int_1,
                                       data.ip6_addr[2],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.vlan_int_1,
                                       data.ip4_addr[3],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.vlan_int_1,
                                       data.ip6_addr[3],
                                       96,
                                       family=data.af_ipv6)
    st.log("Port routing configuration on port-channel")
    data.dut1_pc_members = [vars.D1D2P2, vars.D1D2P3]
    data.dut2_pc_members = [vars.D2D1P2, vars.D2D1P3]
    pc_obj.create_portchannel(vars.D1, data.port_channel)
    pc_obj.add_portchannel_member(vars.D1, data.port_channel,
                                  data.dut1_pc_members)
    pc_obj.create_portchannel(vars.D2, data.port_channel)
    pc_obj.add_portchannel_member(vars.D2, data.port_channel,
                                  data.dut2_pc_members)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.port_channel,
                                       data.ip4_addr[4],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.port_channel,
                                       data.ip4_addr[5],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       data.port_channel,
                                       data.ip6_addr[4],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       data.port_channel,
                                       data.ip6_addr[5],
                                       96,
                                       family=data.af_ipv6)
    st.log("port routing configuration on  D1D2P4,D2D1P4")
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip4_addr[6],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip4_addr[7],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1D2P4,
                                       data.ip6_addr[6],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2D1P4,
                                       data.ip6_addr[7],
                                       96,
                                       family=data.af_ipv6)
    st.log("configuring the dut1 ports connected to TGen with ip addresses")
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1T1P1,
                                       data.ip4_addr[1],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D1,
                                       vars.D1T1P2,
                                       data.ip6_addr[1],
                                       96,
                                       family=data.af_ipv6)
    ipfeature.create_static_route(vars.D1,
                                  data.ip6_addr[7],
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
    ipfeature.create_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    st.log("configuring the dut2 ports connected to TGen with ip addresses")
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2T1P1,
                                       data.ip4_addr[8],
                                       24,
                                       family=data.af_ipv4)
    ipfeature.config_ip_addr_interface(vars.D2,
                                       vars.D2T1P2,
                                       data.ip6_addr[8],
                                       96,
                                       family=data.af_ipv6)

    yield
    ipfeature.clear_ip_configuration(st.get_dut_names())
    ipfeature.clear_ip_configuration(st.get_dut_names(), 'ipv6')
    vlan_obj.clear_vlan_configuration(st.get_dut_names())
    pc_obj.clear_portchannel_configuration(st.get_dut_names())
    ipfeature.delete_static_route(vars.D1,
                                  data.ip4_addr[7],
                                  data.static_ip_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv4)
    ipfeature.delete_static_route(vars.D1,
                                  data.static_ip6_rt_drop,
                                  data.static_ip6_rt,
                                  shell=data.shell_vtysh,
                                  family=data.af_ipv6)
Exemple #23
0
def test_l2_to_l3_port():
    data.my_dut_list = st.get_dut_names()
    dut1 = data.my_dut_list[0]
    data.vlan = '10'
    data.vlan_int = 'Vlan' + '10'
    result_flag = 1

    # configure from L3 to L2 port
    vapi.create_vlan(dut1, data.vlan)
    ipfeature.delete_ip_interface(dut1, vars.D1D2P1, data.d1d2_ip_addr,
                                  data.mask)
    ipfeature.delete_ip_interface(dut1,
                                  vars.D1D2P1,
                                  data.d1d2_ip_addr_v6,
                                  data.mask_v6,
                                  family='ipv6')

    ipfeature.config_ip_addr_interface(dut1, data.vlan_int, data.d1d2_ip_addr,
                                       data.mask)
    ipfeature.config_ip_addr_interface(dut1,
                                       data.vlan_int,
                                       data.d1d2_ip_addr_v6,
                                       data.mask_v6,
                                       family='ipv6')

    vapi.add_vlan_member(dut1, data.vlan, vars.D1D2P1, False)
    if not vapi.verify_vlan_config(dut1, str(data.vlan), None, vars.D1D2P1):
        result_flag = 0

    ipfeature.get_interface_ip_address(dut1, family="ipv4")
    ipfeature.get_interface_ip_address(dut1, family="ipv6")

    result1 = ipfeature.ping(dut1, data.d2t1_ip_addr)
    result2 = ipfeature.ping(dut1, data.d2t1_ip_addr_v6, 'ipv6')

    if not result1 or not result2:
        result_flag = 0

    # Revert back from L2 to L3 port
    vapi.delete_vlan_member(dut1, data.vlan, [vars.D1D2P1])
    ipfeature.delete_ip_interface(dut1, data.vlan_int, data.d1d2_ip_addr,
                                  data.mask)
    ipfeature.delete_ip_interface(dut1,
                                  data.vlan_int,
                                  data.d1d2_ip_addr_v6,
                                  data.mask_v6,
                                  family='ipv6')
    vapi.delete_vlan(dut1, [data.vlan])

    ipfeature.config_ip_addr_interface(dut1, vars.D1D2P1, data.d1d2_ip_addr,
                                       data.mask)
    ipfeature.config_ip_addr_interface(dut1,
                                       vars.D1D2P1,
                                       data.d1d2_ip_addr_v6,
                                       data.mask_v6,
                                       family='ipv6')

    waitapi.vsonic_ip_apply(vars.D1)
    ping_result = ipfeature.ping(dut1, data.d2t1_ip_addr)

    if ping_result and result_flag:
        st.report_pass("operation_successful")
    else:
        st.report_fail("operation_failed")
Exemple #24
0
def vlan_mem_cfg(dut, data):
    if type(data) == list and len(data) > 0:
        for vlan, port, mode in data:
            vlan_obj.add_vlan_member(dut, vlan, port, tagging_mode=mode)
        return True
    return False
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)