X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Ftopology.py;h=698c97b42683ee1f2d9df46c2938dace4e9fe84a;hb=6c6b9edc4690f5c4cd86334d706d7c40a81c85cf;hp=82516beb6b1274520a148a51e58c86cc84cf48f8;hpb=b4e5c717f5e2c39ded81f0c6f7b0f9f61945befd;p=csit.git diff --git a/resources/libraries/python/topology.py b/resources/libraries/python/topology.py index 82516beb6b..698c97b426 100644 --- a/resources/libraries/python/topology.py +++ b/resources/libraries/python/topology.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -138,7 +138,8 @@ class Topology(object): :returns: Nothing """ port_types = ('subinterface', 'vlan_subif', 'memif', 'tap', 'vhost', - 'loopback', 'gre_tunnel', 'vxlan_tunnel', 'eth_bond') + 'loopback', 'gre_tunnel', 'vxlan_tunnel', 'eth_bond', + 'avf') for node_data in nodes.values(): if node_data['type'] == NodeType.DUT: @@ -184,6 +185,32 @@ class Topology(object): """ node['interfaces'][iface_key]['mac_address'] = str(mac_address) + @staticmethod + def update_interface_pci_address(node, iface_key, pci_address): + """Update pci_address on the interface from the node. + + :param node: Node to update PCI on. + :param iface_key: Topology key of the interface. + :param pci_address: PCI address. + :type node: dict + :type iface_key: str + :type pci_address: str + """ + node['interfaces'][iface_key]['pci_address'] = str(pci_address) + + @staticmethod + def update_interface_vlan(node, iface_key, vlan): + """Update VLAN on the interface from the node. + + :param node: Node to update VLAN on. + :param iface_key: Topology key of the interface. + :param vlan: VLAN ID. + :type node: dict + :type iface_key: str + :type vlan: str + """ + node['interfaces'][iface_key]['vlan'] = int(vlan) + @staticmethod def update_interface_vhost_socket(node, iface_key, vhost_socket): """Update vhost socket name on the interface from the node. @@ -369,28 +396,29 @@ class Topology(object): return retval @staticmethod - def get_interface_by_sw_index(node, sw_index): + def get_interface_by_sw_index(node, sw_if_index): """Return interface name of link on node. This method returns the interface name associated with a software interface index assigned to the interface by vpp for a given node. :param node: The node topology dictionary. - :param sw_index: Sw_index of the link that a interface is connected to. + :param sw_if_index: sw_if_index of the link that a interface is + connected to. :type node: dict - :type sw_index: int + :type sw_if_index: int :returns: Interface name of the interface connected to the given link. :rtype: str """ return Topology._get_interface_by_key_value(node, "vpp_sw_index", - sw_index) + sw_if_index) @staticmethod def get_interface_sw_index(node, iface_key): """Get VPP sw_if_index for the interface using interface key. :param node: Node to get interface sw_if_index on. - :param iface_key: Interface key from topology file, or sw_index. + :param iface_key: Interface key from topology file, or sw_if_index. :type node: dict :type iface_key: str/int :returns: Return sw_if_index or None if not found. @@ -682,6 +710,21 @@ class Topology(object): except KeyError: return None + @staticmethod + def get_interface_vlan(node, iface_key): + """Get interface vlan. + + :param node: Node to get interface driver on. + :param iface_key: Interface key from topology file. + :type node: dict + :type iface_key: str + :returns: Return interface vlan or None if not found. + """ + try: + return node['interfaces'][iface_key].get('vlan') + except KeyError: + return None + @staticmethod def get_node_interfaces(node): """Get all node interfaces. @@ -697,7 +740,7 @@ class Topology(object): def get_node_link_mac(node, link_name): """Return interface mac address by link name. - :param node: Node to get interface sw_index on. + :param node: Node to get interface sw_if_index on. :param link_name: Link name. :type node: dict :type link_name: str