X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FInterfaceUtil.py;h=5bb6264676a0bd7e7a30deecca956209c81c0256;hb=01015c9025452966b23182c90fc6a5410a4ab31c;hp=b6647ef32a8397ca896c08eb7cc7ebe17a166201;hpb=41b29c01d434b4536c33903423e1b28900e829bd;p=csit.git diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index b6647ef32a..5bb6264676 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -20,8 +20,8 @@ from ipaddress import ip_address from robot.api import logger from resources.libraries.python.Constants import Constants -from resources.libraries.python.CpuUtils import CpuUtils from resources.libraries.python.DUTSetup import DUTSetup +from resources.libraries.python.IPAddress import IPAddress from resources.libraries.python.L2Util import L2Util from resources.libraries.python.PapiExecutor import PapiSocketExecutor from resources.libraries.python.parsers.JsonParser import JsonParser @@ -228,45 +228,20 @@ class InterfaceUtil: ) @staticmethod - def set_interface_ethernet_mtu(node, iface_key, mtu): + def set_interface_mtu(node, pf_pcis, mtu=9200): """Set Ethernet MTU for specified interface. - Function can be used only for TGs. - - :param node: Node where the interface is. - :param iface_key: Interface key from topology file. - :param mtu: MTU to set. - :type node: dict - :type iface_key: str + :param node: Topology node. + :param pf_pcis: List of node's interfaces PCI addresses. + :param mtu: MTU to set. Default: 9200. + :type nodes: dict + :type pf_pcis: list :type mtu: int - :returns: Nothing. - :raises ValueError: If the node type is "DUT". - :raises ValueError: If the node has an unknown node type. """ - if node[u"type"] == NodeType.DUT: - msg = f"Node {node[u'host']}: Setting Ethernet MTU for interface " \ - f"on DUT nodes not supported" - elif node[u"type"] != NodeType.TG: - msg = f"Node {node[u'host']} has unknown NodeType: {node[u'type']}" - else: - iface_name = Topology.get_interface_name(node, iface_key) - cmd = f"ip link set {iface_name} mtu {mtu}" + for pf_pci in pf_pcis: + pf_eth = InterfaceUtil.pci_to_eth(node, pf_pci) + cmd = f"ip link set {pf_eth} mtu {mtu}" exec_cmd_no_error(node, cmd, sudo=True) - return - raise ValueError(msg) - - @staticmethod - def set_default_ethernet_mtu_on_all_interfaces_on_node(node): - """Set default Ethernet MTU on all interfaces on node. - - Function can be used only for TGs. - - :param node: Node where to set default MTU. - :type node: dict - :returns: Nothing. - """ - for ifc in node[u"interfaces"]: - InterfaceUtil.set_interface_ethernet_mtu(node, ifc, 1500) @staticmethod def vpp_set_interface_mtu(node, interface, mtu=9200): @@ -791,16 +766,16 @@ class InterfaceUtil: :raises RuntimeError: if it is unable to create VxLAN interface on the node. """ - src_address = ip_address(source_ip) - dst_address = ip_address(destination_ip) - cmd = u"vxlan_add_del_tunnel" args = dict( - is_add=1, - is_ipv6=1 if src_address.version == 6 else 0, + is_add=True, instance=Constants.BITWISE_NON_ZERO, - src_address=src_address.packed, - dst_address=dst_address.packed, + src_address=IPAddress.create_ip_address_object( + ip_address(source_ip) + ), + dst_address=IPAddress.create_ip_address_object( + ip_address(destination_ip) + ), mcast_sw_if_index=Constants.BITWISE_NON_ZERO, encap_vrf_id=0, decap_next_index=Constants.BITWISE_NON_ZERO, @@ -838,9 +813,9 @@ class InterfaceUtil: cmd = u"sw_interface_set_vxlan_bypass" args = dict( - is_ipv6=0, + is_ipv6=False, sw_if_index=sw_if_index, - enable=1 + enable=True ) err_msg = f"Failed to set VXLAN bypass on interface " \ f"on host {node[u'host']}" @@ -870,16 +845,8 @@ class InterfaceUtil: :returns: Processed vxlan interface dump. :rtype: dict """ - if vxlan_dump[u"is_ipv6"]: - vxlan_dump[u"src_address"] = \ - ip_address(vxlan_dump[u"src_address"]) - vxlan_dump[u"dst_address"] = \ - ip_address(vxlan_dump[u"dst_address"]) - else: - vxlan_dump[u"src_address"] = \ - ip_address(vxlan_dump[u"src_address"][0:4]) - vxlan_dump[u"dst_address"] = \ - ip_address(vxlan_dump[u"dst_address"][0:4]) + vxlan_dump[u"src_address"] = str(vxlan_dump[u"src_address"]) + vxlan_dump[u"dst_address"] = str(vxlan_dump[u"dst_address"]) return vxlan_dump if interface is not None: @@ -1192,6 +1159,10 @@ class InterfaceUtil: :raises RuntimeError: If it is not possible to create RDMA interface on the node. """ + PapiSocketExecutor.run_cli_cmd( + node, u"set logging class rdma level debug" + ) + cmd = u"rdma_create" pci_addr = Topology.get_interface_pci_addr(node, if_key) args = dict( @@ -1200,7 +1171,7 @@ class InterfaceUtil: rxq_num=int(num_rx_queues) if num_rx_queues else 0, rxq_size=rxq_size, txq_size=txq_size, - mode=getattr(RdmaMode,f"RDMA_API_MODE_{mode.upper()}").value, + mode=getattr(RdmaMode, f"RDMA_API_MODE_{mode.upper()}").value, ) err_msg = f"Failed to create RDMA interface on host {node[u'host']}" with PapiSocketExecutor(node) as papi_exec: