From e6dd772435e4736170aaa43a779840196e714254 Mon Sep 17 00:00:00 2001 From: Jan Gelety Date: Tue, 13 Aug 2019 22:57:07 +0200 Subject: FIX: Remove eth_avf and portX_vifY interfaces from topo in TC/TS tear down Change-Id: I90901c4ab14dfa76dc3e1f786a4b986479e0ba47 Signed-off-by: Jan Gelety --- resources/libraries/python/InterfaceUtil.py | 6 ++--- resources/libraries/python/topology.py | 31 +++++++++++++++++++++- .../libraries/robot/shared/suite_teardown.robot | 6 +++++ 3 files changed, 39 insertions(+), 4 deletions(-) (limited to 'resources/libraries') diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 1a97130a8e..982a345ef2 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -1455,12 +1455,12 @@ class InterfaceUtil(object): @staticmethod def init_avf_interface(node, ifc_key, numvfs=1, osi_layer='L2'): - """Init PCI device by creating VFs and bind them to vfio-pci for AVF + """Init PCI device by creating VIFs and bind them to vfio-pci for AVF driver testing on DUT. :param node: DUT node. :param ifc_key: Interface key from topology file. - :param numvfs: Number of VFs to initialize, 0 - disable the VFs. + :param numvfs: Number of VIFs to initialize, 0 - disable the VIFs. :param osi_layer: OSI Layer type to initialize TG with. Default value "L2" sets linux interface spoof off. :type node: dict @@ -1518,7 +1518,7 @@ class InterfaceUtil(object): DUTSetup.pci_vf_driver_bind(node, pf_pci_addr, vf_id, uio_driver) # Add newly created ports into topology file - vf_ifc_name = '{pf_if_key}_vf'.format(pf_if_key=ifc_key) + vf_ifc_name = '{pf_if_key}_vif'.format(pf_if_key=ifc_key) vf_pci_addr = DUTSetup.get_virtfn_pci_addr(node, pf_pci_addr, vf_id) vf_ifc_key = Topology.add_new_port(node, vf_ifc_name) Topology.update_interface_name(node, vf_ifc_key, diff --git a/resources/libraries/python/topology.py b/resources/libraries/python/topology.py index 698c97b426..1e5ce4bd62 100644 --- a/resources/libraries/python/topology.py +++ b/resources/libraries/python/topology.py @@ -13,6 +13,8 @@ """Defines nodes and topology structure.""" +import re + from collections import Counter from yaml import load @@ -59,6 +61,7 @@ class NodeSubTypeTG(object): # IxNetwork IXNET = 'IXNET' + DICT__nodes = load_topo_from_yaml() @@ -139,13 +142,39 @@ class Topology(object): """ port_types = ('subinterface', 'vlan_subif', 'memif', 'tap', 'vhost', 'loopback', 'gre_tunnel', 'vxlan_tunnel', 'eth_bond', - 'avf') + 'eth_avf') for node_data in nodes.values(): if node_data['type'] == NodeType.DUT: for ptype in port_types: Topology.remove_all_ports(node_data, ptype) + @staticmethod + def remove_all_vif_ports(node): + """Remove all Virtual Interfaces on DUT node. + + :param node: Node to remove VIF ports on. + :type node: dict + :returns: Nothing + """ + reg_ex = re.compile(r'port\d+_vif\d+') + for if_key in list(node['interfaces']): + if re.match(reg_ex, if_key): + node['interfaces'].pop(if_key) + + @staticmethod + def remove_all_added_vif_ports_on_all_duts_from_topology(nodes): + """Remove all added Virtual Interfaces on all DUT nodes in + the topology. + + :param nodes: Nodes in the topology. + :type nodes: dict + :returns: Nothing + """ + for node_data in nodes.values(): + if node_data['type'] == NodeType.DUT: + Topology.remove_all_vif_ports(node_data) + @staticmethod def update_interface_sw_if_index(node, iface_key, sw_if_index): """Update sw_if_index on the interface from the node. diff --git a/resources/libraries/robot/shared/suite_teardown.robot b/resources/libraries/robot/shared/suite_teardown.robot index e5db4f05d8..a6c021e355 100644 --- a/resources/libraries/robot/shared/suite_teardown.robot +++ b/resources/libraries/robot/shared/suite_teardown.robot @@ -45,3 +45,9 @@ | | :FOR | ${dut} | IN | @{duts} | | | Cleanup DPDK Environment | | | ... | ${nodes['${dut}']} | ${${dut}_if1} | ${${dut}_if2} + +| Additional Suite Tear Down Action For vifs +| | [Documentation] +| | ... | Additional teardown for suites which uses Virtual Interfaces. +| | ... +| | Remove All Added VIF Ports On All DUTs From Topology | ${nodes} -- cgit 1.2.3-korg