X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FDUTSetup.py;h=c7a560262c5b675381524df2d1177b73c907ddf0;hp=504022381e4696355d17a07f41e3b9b56c2e585b;hb=3cba9eaf8dce261928939aa112fae4354b51e229;hpb=7d849ba64e10b8a7678845ee1dcc091e125dd124 diff --git a/resources/libraries/python/DUTSetup.py b/resources/libraries/python/DUTSetup.py index 504022381e..c7a560262c 100644 --- a/resources/libraries/python/DUTSetup.py +++ b/resources/libraries/python/DUTSetup.py @@ -408,11 +408,11 @@ class DUTSetup: # sriov is not supported and we want 0 VFs # no need to do anything return - else: - raise RuntimeError( - f"Can't configure {numvfs} VFs on {pf_pci_addr} device " - f"on {node[u'host']} since it doesn't support SR-IOV." - ) + + raise RuntimeError( + f"Can't configure {numvfs} VFs on {pf_pci_addr} device " + f"on {node[u'host']} since it doesn't support SR-IOV." + ) pci = pf_pci_addr.replace(u":", r"\:") command = f"sh -c \"echo {numvfs} | " \ @@ -444,16 +444,21 @@ class DUTSetup: ) @staticmethod - def pci_driver_unbind_list(node, *pci_addrs): - """Unbind PCI devices from current driver on node. + def unbind_pci_devices_from_other_driver(node, driver, *pci_addrs): + """Unbind PCI devices from driver other than input driver on node. :param node: DUT node. + :param driver: Driver to not unbind from. If None or empty string, + will attempt to unbind from the current driver. :param pci_addrs: PCI device addresses. :type node: dict + :type driver: str :type pci_addrs: list """ for pci_addr in pci_addrs: - DUTSetup.pci_driver_unbind(node, pci_addr) + if not driver or \ + DUTSetup.get_pci_dev_driver(node, pci_addr) != driver: + DUTSetup.pci_driver_unbind(node, pci_addr) @staticmethod def pci_driver_bind(node, pci_addr, driver): @@ -572,10 +577,9 @@ class DUTSetup: # the directory doesn't exist which means the device is not bound # to any driver return None - else: - cmd = f"basename $(readlink -f {driver_path})" - ret_val, _ = exec_cmd_no_error(node, cmd) - return ret_val.strip() + cmd = f"basename $(readlink -f {driver_path})" + ret_val, _ = exec_cmd_no_error(node, cmd) + return ret_val.strip() @staticmethod def verify_kernel_module(node, module, force_load=False): @@ -677,7 +681,7 @@ class DUTSetup: ) # workaround to avoid installation of vpp-api-python exec_cmd_no_error( - node, u"rm -f {vpp_pkg_dir}vpp-api-python.deb", + node, f"rm -f {vpp_pkg_dir}vpp-api-python.deb", timeout=120, sudo=True ) exec_cmd_no_error( @@ -694,7 +698,7 @@ class DUTSetup: ) # workaround to avoid installation of vpp-api-python exec_cmd_no_error( - node, u"rm -f {vpp_pkg_dir}vpp-api-python.rpm", + node, f"rm -f {vpp_pkg_dir}vpp-api-python.rpm", timeout=120, sudo=True ) exec_cmd_no_error(