CSIT-468 Issue retrieving numa node of NIC 03/3703/4
authorpmikus <pmikus@cisco.com>
Sat, 5 Nov 2016 16:30:45 +0000 (17:30 +0100)
committerpmikus <pmikus@cisco.com>
Mon, 7 Nov 2016 07:23:00 +0000 (08:23 +0100)
Issue retrieving numa node of NIC

Change-Id: Ia6f826c100a012b23e046e48fe1e505ed0c4c8e8
Signed-off-by: pmikus <pmikus@cisco.com>
resources/libraries/python/InterfaceUtil.py

index b3d168c..6c76313 100644 (file)
@@ -464,9 +464,23 @@ class InterfaceUtil(object):
             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))
+            for _ in range(3):
+                (ret, out, _) = ssh.exec_command(cmd)
+                if ret == 0:
+                    try:
+                        numa_node = int(out)
+                        if numa_node < 0:
+                            raise ValueError
+                    except ValueError:
+                        logger.trace('Reading numa location failed for: {0}'\
+                            .format(if_pci))
+                    else:
+                        Topology.set_interface_numa_node(node, if_key,
+                                                         numa_node)
+                        break
+            else:
+                raise RuntimeError('Update numa node failed for: {0}'\
+                    .format(if_pci))
 
     @staticmethod
     def update_all_interface_data_on_all_nodes(nodes, skip_tg=False,