aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/InterfaceUtil.py
diff options
context:
space:
mode:
authorjuraj.linkes <juraj.linkes@pantheon.tech>2018-06-08 10:47:27 +0200
committerTibor Frank <tifrank@cisco.com>2018-06-22 08:42:28 +0000
commitca163ffc171954c6b23fc8a715b2b7ca4c47cccf (patch)
treeede095de1ce52651dab8c1d477f6cd843a74e2f2 /resources/libraries/python/InterfaceUtil.py
parent04d78878f062301f791d4000bfab5227b184c0d8 (diff)
CSIT-1043: Execute pci rescan only if needed
Pci rescan is a rather invasive process, which is why it should be executed only if needed. This patch moves the pci rescan after pci device driver discovery, rescanning the devices for further attemps at driver discovery. Change-Id: I29c939b44c3f67371416a99c711e057f711ba9b4 Signed-off-by: juraj.linkes <juraj.linkes@pantheon.tech>
Diffstat (limited to 'resources/libraries/python/InterfaceUtil.py')
-rw-r--r--resources/libraries/python/InterfaceUtil.py47
1 files changed, 3 insertions, 44 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py
index 25540dc0db..5e3c4c4f99 100644
--- a/resources/libraries/python/InterfaceUtil.py
+++ b/resources/libraries/python/InterfaceUtil.py
@@ -19,6 +19,7 @@ from robot.api import logger
from resources.libraries.python.ssh import SSH
from resources.libraries.python.IPUtil import convert_ipv4_netmask_prefix
+from resources.libraries.python.DUTSetup import DUTSetup
from resources.libraries.python.ssh import exec_cmd_no_error
from resources.libraries.python.topology import NodeType, Topology
from resources.libraries.python.VatExecutor import VatExecutor, VatTerminal
@@ -353,51 +354,9 @@ class InterfaceUtil(object):
:type pci_addr: str
:returns: Interface driver or None if not found.
:rtype: str
- :raises RuntimeError: If it is not possible to get the interface driver
- information from the node.
-
- .. note::
- # lspci -vmmks 0000:00:05.0
- Slot: 00:05.0
- Class: Ethernet controller
- Vendor: Red Hat, Inc
- Device: Virtio network device
- SVendor: Red Hat, Inc
- SDevice: Device 0001
- PhySlot: 5
- Driver: virtio-pci
+ :raises RuntimeError: If PCI rescan or lspci command execution failed.
"""
- ssh = SSH()
- ssh.connect(node)
-
- for i in range(3):
- logger.trace('Try {}: Get interface driver'.format(i))
- cmd = 'sh -c "echo 1 > /sys/bus/pci/rescan"'
- (ret_code, _, _) = ssh.exec_command_sudo(cmd)
- if int(ret_code) != 0:
- raise RuntimeError("'{0}' failed on '{1}'"
- .format(cmd, node['host']))
-
- cmd = 'lspci -vmmks {0}'.format(pci_addr)
- (ret_code, stdout, _) = ssh.exec_command(cmd)
- if int(ret_code) != 0:
- raise RuntimeError("'{0}' failed on '{1}'"
- .format(cmd, node['host']))
-
- for line in stdout.splitlines():
- if len(line) == 0:
- continue
- try:
- (name, value) = line.split("\t", 1)
- except ValueError:
- if name != "Driver:":
- pass
- else:
- return None
- if name == 'Driver:':
- return value if value else None
- raise RuntimeError('Get interface driver for: {0}'
- .format(pci_addr))
+ return DUTSetup.get_pci_dev_driver(node, pci_addr)
@staticmethod
def tg_set_interfaces_udev_rules(node):