X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FDUTSetup.py;h=7eb19185e6b970095740867f28f90d6b4c972010;hb=b58b33c32f799c746bf90272519e8b1d3f78bc65;hp=c7a560262c5b675381524df2d1177b73c907ddf0;hpb=3cba9eaf8dce261928939aa112fae4354b51e229;p=csit.git diff --git a/resources/libraries/python/DUTSetup.py b/resources/libraries/python/DUTSetup.py index c7a560262c..7eb19185e6 100644 --- a/resources/libraries/python/DUTSetup.py +++ b/resources/libraries/python/DUTSetup.py @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Cisco and/or its affiliates. +# Copyright (c) 2023 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: @@ -207,42 +207,25 @@ class DUTSetup: exec_cmd_no_error(node, cmd, message=f"{program} is not installed") @staticmethod - def get_pid(node, process): + def get_pid(node, process, retries=3): """Get PID of running process. :param node: DUT node. :param process: process name. + :param retries: How many times to retry on failure. :type node: dict :type process: str + :type retries: int :returns: PID :rtype: int :raises RuntimeError: If it is not possible to get the PID. """ - ssh = SSH() - ssh.connect(node) - - retval = None - for i in range(3): - logger.trace(f"Try {i}: Get {process} PID") - ret_code, stdout, stderr = ssh.exec_command(f"pidof {process}") - - if int(ret_code): - raise RuntimeError( - f"Not possible to get PID of {process} process on node: " - f"{node[u'host']}\n {stdout + stderr}" - ) - - pid_list = stdout.split() - if len(pid_list) == 1: - return [int(stdout)] - if not pid_list: - logger.debug(f"No {process} PID found on node {node[u'host']}") - continue - logger.debug(f"More than one {process} PID found " \ - f"on node {node[u'host']}") - retval = [int(pid) for pid in pid_list] - - return retval + cmd = f"pidof {process}" + stdout, _ = exec_cmd_no_error( + node, cmd, retries=retries, + message=f"No {process} PID found on node {node[u'host']}") + pid_list = stdout.split() + return [int(pid) for pid in pid_list] @staticmethod def get_vpp_pids(nodes): @@ -266,7 +249,7 @@ class DUTSetup: initialize or remove VFs on QAT. :param node: DUT node. - :crypto_type: Crypto device type - HW_DH895xcc or HW_C3xxx. + :crypto_type: Crypto device type - HW_DH895xcc, HW_C3xxx or HW_C4xxx. :param numvfs: Number of VFs to initialize, 0 - disable the VFs. :param force_init: If True then try to initialize to specific value. :type node: dict @@ -294,7 +277,7 @@ class DUTSetup: """Init Crypto QAT device virtual functions on DUT. :param node: DUT node. - :crypto_type: Crypto device type - HW_DH895xcc or HW_C3xxx. + :crypto_type: Crypto device type - HW_DH895xcc, HW_C3xxx or HW_C4xxx. :param numvfs: Number of VFs to initialize, 0 - disable the VFs. :type node: dict :type crypto_type: string @@ -308,6 +291,9 @@ class DUTSetup: elif crypto_type == u"HW_C3xxx": kernel_mod = u"qat_c3xxx" kernel_drv = u"c3xxx" + elif crypto_type == u"HW_C4xxx": + kernel_mod = u"qat_c4xxx" + kernel_drv = u"c4xxx" else: raise RuntimeError( f"Unsupported crypto device type on {node[u'host']}" @@ -456,8 +442,10 @@ class DUTSetup: :type pci_addrs: list """ for pci_addr in pci_addrs: - if not driver or \ - DUTSetup.get_pci_dev_driver(node, pci_addr) != driver: + cur_driver = DUTSetup.get_pci_dev_driver(node, pci_addr) + if not cur_driver: + return + if not driver or cur_driver != driver: DUTSetup.pci_driver_unbind(node, pci_addr) @staticmethod