diff options
author | Miroslav Miklus <mmiklus@cisco.com> | 2016-08-05 16:16:45 +0200 |
---|---|---|
committer | Jan Gelety <jgelety@cisco.com> | 2016-08-08 16:59:05 +0000 |
commit | e710b52146d8c5c9db250d29c01f4f8ebdaf3261 (patch) | |
tree | 87b67b944cb37d7b898be8921788c0dfcd564ed4 /resources/libraries/python/InterfaceUtil.py | |
parent | 43717c90f05596f628cb7ef17cf35a8cf7289f86 (diff) |
CSIT-338 PCI numa_node discovery
Allow to discover PCI - numa node relationship.
Change-Id: I04a445e42b3cbbf450b990ebbc2c83ac313815f1
Signed-off-by: Miroslav Miklus <mmiklus@cisco.com>
Diffstat (limited to 'resources/libraries/python/InterfaceUtil.py')
-rw-r--r-- | resources/libraries/python/InterfaceUtil.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 9537b2ba1d..9ecdb7503a 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -427,7 +427,26 @@ class InterfaceUtil(object): InterfaceUtil.tg_set_interfaces_udev_rules(node) @staticmethod - def update_all_interface_data_on_all_nodes(nodes, skip_tg=False): + def iface_update_numa_node(node): + """For all interfaces from topology file update numa node based on + information from the node. + + :param node: Node from topology. + :type node: dict + :return: nothing + """ + ssh = SSH() + for if_key in Topology.get_node_interfaces(node): + if_pci = Topology.get_interface_pci_addr(node, if_key) + ssh.connect(node) + cmd = "cat /sys/bus/pci/devices/{}/numa_node".format(if_pci) + (ret, out, _) = ssh.exec_command(cmd) + if ret == 0: + Topology.set_interface_numa_node(node, if_key, int(out)) + + @staticmethod + def update_all_interface_data_on_all_nodes(nodes, skip_tg=False, + numa_node=False): """Update interface names on all nodes in DICT__nodes. This method updates the topology dictionary by querying interface lists @@ -435,8 +454,10 @@ class InterfaceUtil(object): :param nodes: Nodes in the topology. :param skip_tg: Skip TG node + :param numa_node: Retrieve numa_node location. :type nodes: dict :type skip_tg: bool + :type numa_node: bool """ for node_data in nodes.values(): if node_data['type'] == NodeType.DUT: @@ -444,6 +465,12 @@ class InterfaceUtil(object): elif node_data['type'] == NodeType.TG and not skip_tg: InterfaceUtil.update_tg_interface_data_on_node(node_data) + if numa_node: + if node_data['type'] == NodeType.DUT: + InterfaceUtil.iface_update_numa_node(node_data) + elif node_data['type'] == NodeType.TG and not skip_tg: + InterfaceUtil.iface_update_numa_node(node_data) + @staticmethod def create_vlan_subinterface(node, interface, vlan): """Create VLAN subinterface on node. |