From 7b03fbbb36907b92186941254238ade666be1b45 Mon Sep 17 00:00:00 2001 From: Riccardo Pittau Date: Thu, 4 Nov 2021 17:04:42 +0100 Subject: [PATCH] Call execute from ironic-lib in hardware.py Replace the execute wrapper from utils with execute from ironic-lib in hardware.py Adjust unit tests as needed. Change-Id: I63a3b0407b2ca2246bd0e6624bfa0f748c0d73f7 --- ironic_python_agent/hardware.py | 118 ++++---- .../tests/unit/test_hardware.py | 258 +++++++++--------- 2 files changed, 187 insertions(+), 189 deletions(-) diff --git a/ironic_python_agent/hardware.py b/ironic_python_agent/hardware.py index ed67759ce..ba42800ad 100644 --- a/ironic_python_agent/hardware.py +++ b/ironic_python_agent/hardware.py @@ -103,7 +103,7 @@ def _get_system_lshw_dict(): :return: A python dict from the lshw json output """ - out, _e = utils.execute('lshw', '-quiet', '-json', log_stdout=False) + out, _e = il_utils.execute('lshw', '-quiet', '-json', log_stdout=False) out = json.loads(out) # Depending on lshw version, output might be a list, starting with # https://github.com/lyonel/lshw/commit/135a853c60582b14c5b67e5cd988a8062d9896f4 # noqa @@ -120,7 +120,7 @@ def _udev_settle(): """ try: - utils.execute('udevadm', 'settle') + il_utils.execute('udevadm', 'settle') except processutils.ProcessExecutionError as e: LOG.warning('Something went wrong when waiting for udev ' 'to settle. Error: %s', e) @@ -147,13 +147,13 @@ def _check_for_iscsi(): - If no connection is detected we simply return. """ try: - utils.execute('iscsistart', '-f') + il_utils.execute('iscsistart', '-f') except (processutils.ProcessExecutionError, EnvironmentError) as e: LOG.debug("No iscsi connection detected. Skipping iscsi. " "Error: %s", e) return try: - utils.execute('iscsistart', '-b') + il_utils.execute('iscsistart', '-b') except processutils.ProcessExecutionError as e: LOG.warning("Something went wrong executing 'iscsistart -b' " "Error: %s", e) @@ -166,8 +166,8 @@ def _get_md_uuid(raid_device): :returns: A string containing the UUID of an md device. """ try: - out, _ = utils.execute('mdadm', '--detail', raid_device, - use_standard_locale=True) + out, _ = il_utils.execute('mdadm', '--detail', raid_device, + use_standard_locale=True) except processutils.ProcessExecutionError as e: LOG.warning('Could not get the details of %(dev)s: %(err)s', {'dev': raid_device, 'err': e}) @@ -205,8 +205,8 @@ def _get_component_devices(raid_device): ignore_raid=True)) for bdev in block_devices: try: - out, _ = utils.execute('mdadm', '--examine', bdev.name, - use_standard_locale=True) + out, _ = il_utils.execute('mdadm', '--examine', bdev.name, + use_standard_locale=True) except processutils.ProcessExecutionError as e: if "No md superblock detected" in str(e): # actually not a component device @@ -259,8 +259,8 @@ def get_holder_disks(raid_device): return [] try: - out, _ = utils.execute('mdadm', '--detail', raid_device, - use_standard_locale=True) + out, _ = il_utils.execute('mdadm', '--detail', raid_device, + use_standard_locale=True) except processutils.ProcessExecutionError as e: LOG.warning('Could not get holder disks of %(dev)s: %(err)s', {'dev': raid_device, 'err': e}) @@ -303,7 +303,7 @@ def is_md_device(raid_device): :returns: True if the device is an md device, False otherwise. """ try: - utils.execute('mdadm', '--detail', raid_device) + il_utils.execute('mdadm', '--detail', raid_device) LOG.debug("%s is an md device", raid_device) return True except FileNotFoundError: @@ -326,9 +326,9 @@ def md_restart(raid_device): try: LOG.debug('Restarting software RAID device %s', raid_device) component_devices = _get_component_devices(raid_device) - utils.execute('mdadm', '--stop', raid_device) - utils.execute('mdadm', '--assemble', raid_device, - *component_devices) + il_utils.execute('mdadm', '--stop', raid_device) + il_utils.execute('mdadm', '--assemble', raid_device, + *component_devices) except processutils.ProcessExecutionError as e: error_msg = ('Could not restart md device %(dev)s: %(err)s' % {'dev': raid_device, 'err': e}) @@ -342,7 +342,7 @@ def md_get_raid_devices(): :return: A python dict containing details about the discovered RAID devices """ - report = utils.execute('mdadm', '--examine', '--scan')[0] + report = il_utils.execute('mdadm', '--examine', '--scan')[0] lines = report.splitlines() result = {} for line in lines: @@ -360,7 +360,7 @@ def _md_scan_and_assemble(): This call does not fail if no md devices are present. """ try: - utils.execute('mdadm', '--assemble', '--scan', '--verbose') + il_utils.execute('mdadm', '--assemble', '--scan', '--verbose') except FileNotFoundError: LOG.warning('mdadm has not been found, RAID devices will not be ' 'supported') @@ -424,8 +424,8 @@ def list_all_block_devices(block_type='disk', "Cause: %(error)s", {'path': disk_by_path_dir, 'error': e}) columns = utils.LSBLK_COLUMNS - report = utils.execute('lsblk', '-Pbia', - '-o{}'.format(','.join(columns)))[0] + report = il_utils.execute('lsblk', '-Pbia', + '-o{}'.format(','.join(columns)))[0] lines = report.splitlines() context = pyudev.Context() @@ -1087,8 +1087,7 @@ class GenericHardwareManager(HardwareManager): return try: - stdout, _ = utils.execute('biosdevname', '-i', - interface_name) + stdout, _ = il_utils.execute('biosdevname', '-i', interface_name) return stdout.rstrip('\n') except OSError: if not WARN_BIOSDEVNAME_NOT_FOUND: @@ -1150,7 +1149,7 @@ class GenericHardwareManager(HardwareManager): return network_interfaces_list def get_cpus(self): - lines = utils.execute('lscpu')[0] + lines = il_utils.execute('lscpu')[0] cpu_info = {k.strip().lower(): v.strip() for k, v in (line.split(':', 1) for line in lines.split('\n') @@ -1469,7 +1468,7 @@ class GenericHardwareManager(HardwareManager): args += ('--verbose', '--iterations', str(npasses), block_device.name) try: - utils.execute(*args) + il_utils.execute(*args) except (processutils.ProcessExecutionError, OSError) as e: LOG.error("Erasing block device %(dev)s failed with error %(err)s", {'dev': block_device.name, 'err': e}) @@ -1502,8 +1501,8 @@ class GenericHardwareManager(HardwareManager): try: # Don't use the '--nodeps' of lsblk to also catch the # parent device of partitions which are RAID members. - out, _ = utils.execute('lsblk', '--fs', '--noheadings', - block_device.name) + out, _ = il_utils.execute('lsblk', '--fs', '--noheadings', + block_device.name) except processutils.ProcessExecutionError as e: LOG.warning("Could not determine if %(name)s is a RAID member: " "%(err)s", @@ -1544,7 +1543,7 @@ class GenericHardwareManager(HardwareManager): return False def _get_ata_security_lines(self, block_device): - output = utils.execute('hdparm', '-I', block_device.name)[0] + output = il_utils.execute('hdparm', '-I', block_device.name)[0] if '\nSecurity: ' not in output: return [] @@ -1577,9 +1576,9 @@ class GenericHardwareManager(HardwareManager): # instead of `scsi` or `sat` as smartctl will not be able to read # a bridged device that it doesn't understand, and accordingly # return an error code. - output = utils.execute('smartctl', '-d', 'ata', block_device.name, - '-g', 'security', - check_exit_code=[0, 127])[0] + output = il_utils.execute('smartctl', '-d', 'ata', + block_device.name, '-g', 'security', + check_exit_code=[0, 127])[0] if 'Unavailable' in output: # Smartctl is reporting it is unavailable, lets return false. LOG.debug('Smartctl has reported that security is ' @@ -1612,9 +1611,9 @@ class GenericHardwareManager(HardwareManager): if 'not locked' in security_lines: break try: - utils.execute('hdparm', '--user-master', 'u', - '--security-unlock', password, - block_device.name) + il_utils.execute('hdparm', '--user-master', 'u', + '--security-unlock', password, + block_device.name) except processutils.ProcessExecutionError as e: LOG.info('Security unlock failed for device ' '%(name)s using password "%(password)s": %(err)s', @@ -1660,8 +1659,9 @@ class GenericHardwareManager(HardwareManager): # SEC1. Try to transition to SEC5 by setting empty user # password. try: - utils.execute('hdparm', '--user-master', 'u', - '--security-set-pass', 'NULL', block_device.name) + il_utils.execute('hdparm', '--user-master', 'u', + '--security-set-pass', 'NULL', + block_device.name) except processutils.ProcessExecutionError as e: error_msg = ('Security password set failed for device ' '{name}: {err}' @@ -1674,8 +1674,8 @@ class GenericHardwareManager(HardwareManager): erase_option += '-enhanced' try: - utils.execute('hdparm', '--user-master', 'u', erase_option, - 'NULL', block_device.name) + il_utils.execute('hdparm', '--user-master', 'u', erase_option, + 'NULL', block_device.name) except processutils.ProcessExecutionError as e: # NOTE(TheJulia): Attempt unlock to allow fallback to shred # to occur, otherwise shred will fail as well, as the security @@ -1720,8 +1720,8 @@ class GenericHardwareManager(HardwareManager): try: LOG.debug("Attempting to fetch NVMe capabilities for device %s", block_device.name) - nvme_info, _e = utils.execute('nvme', 'id-ctrl', - block_device.name, '-o', 'json') + nvme_info, _e = il_utils.execute('nvme', 'id-ctrl', + block_device.name, '-o', 'json') nvme_info = json.loads(nvme_info) except processutils.ProcessExecutionError as e: @@ -1763,8 +1763,8 @@ class GenericHardwareManager(HardwareManager): try: LOG.debug("Attempting to nvme-format %s using secure format mode " "(ses) %s", block_device.name, format_mode) - utils.execute('nvme', 'format', block_device.name, '-s', - format_mode, '-f') + il_utils.execute('nvme', 'format', block_device.name, '-s', + format_mode, '-f') LOG.info("nvme-cli format for device %s (ses= %s ) completed " "successfully.", block_device.name, format_mode) return True @@ -1785,7 +1785,7 @@ class GenericHardwareManager(HardwareManager): # different types of communication media and protocols and # effectively used for channel in range(1, 12): - out, e = utils.execute( + out, e = il_utils.execute( "ipmitool lan print {} | awk '/IP Address[ \\t]*:/" " {{print $4}}'".format(channel), shell=True) if e.startswith("Invalid channel"): @@ -1822,7 +1822,7 @@ class GenericHardwareManager(HardwareManager): # different types of communication media and protocols and # effectively used for channel in range(1, 12): - out, e = utils.execute( + out, e = il_utils.execute( "ipmitool lan print {} | awk '/(IP|MAC) Address[ \\t]*:/" " {{print $4}}'".format(channel), shell=True) if e.startswith("Invalid channel"): @@ -1870,7 +1870,7 @@ class GenericHardwareManager(HardwareManager): cmd = "ipmitool lan6 print {} {}_addr".format( channel, 'dynamic' if dynamic else 'static') try: - out, exc = utils.execute(cmd, shell=True) + out, exc = il_utils.execute(cmd, shell=True) except processutils.ProcessExecutionError: return @@ -1900,7 +1900,7 @@ class GenericHardwareManager(HardwareManager): # different types of communication media and protocols and # effectively used for channel in range(1, 12): - addr_mode, e = utils.execute( + addr_mode, e = il_utils.execute( r"ipmitool lan6 print {} enables | " r"awk '/IPv6\/IPv4 Addressing Enables[ \t]*:/" r"{{print $NF}}'".format(channel), shell=True) @@ -2149,9 +2149,11 @@ class GenericHardwareManager(HardwareManager): LOG.debug("Creating partition on %(dev)s: %(str)s %(end)s", {'dev': device, 'str': start_str, 'end': end_str}) - utils.execute('parted', device, '-s', '-a', - 'optimal', '--', 'mkpart', 'primary', - start_str, end_str) + + il_utils.execute('parted', device, '-s', '-a', + 'optimal', '--', 'mkpart', 'primary', + start_str, end_str) + except processutils.ProcessExecutionError as e: msg = "Failed to create partitions on {}: {}".format( device, e) @@ -2185,8 +2187,8 @@ class GenericHardwareManager(HardwareManager): """ def _scan_raids(): - utils.execute('mdadm', '--assemble', '--scan', - check_exit_code=False) + il_utils.execute('mdadm', '--assemble', '--scan', + check_exit_code=False) raid_devices = list_all_block_devices(block_type='raid', ignore_raid=False, ignore_empty=False) @@ -2236,12 +2238,12 @@ class GenericHardwareManager(HardwareManager): # Remove md devices. try: - utils.execute('wipefs', '-af', raid_device.name) + il_utils.execute('wipefs', '-af', raid_device.name) except processutils.ProcessExecutionError as e: LOG.warning('Failed to wipefs %(device)s: %(err)s', {'device': raid_device.name, 'err': e}) try: - utils.execute('mdadm', '--stop', raid_device.name) + il_utils.execute('mdadm', '--stop', raid_device.name) except processutils.ProcessExecutionError as e: LOG.warning('Failed to stop %(device)s: %(err)s', {'device': raid_device.name, 'err': e}) @@ -2249,8 +2251,8 @@ class GenericHardwareManager(HardwareManager): # Remove md metadata from component devices. for component_device in component_devices: try: - utils.execute('mdadm', '--examine', component_device, - use_standard_locale=True) + il_utils.execute('mdadm', '--examine', component_device, + use_standard_locale=True) except processutils.ProcessExecutionError as e: if "No md superblock detected" in str(e): # actually not a component device @@ -2262,8 +2264,8 @@ class GenericHardwareManager(HardwareManager): LOG.debug('Deleting md superblock on %s', component_device) try: - utils.execute('mdadm', '--zero-superblock', - component_device) + il_utils.execute('mdadm', '--zero-superblock', + component_device) except processutils.ProcessExecutionError as e: LOG.warning('Failed to remove superblock from' '%(device)s: %(err)s', @@ -2302,8 +2304,8 @@ class GenericHardwareManager(HardwareManager): all_blks = reversed(self.list_block_devices(include_partitions=True)) for blk in all_blks: try: - utils.execute('mdadm', '--examine', blk.name, - use_standard_locale=True) + il_utils.execute('mdadm', '--examine', blk.name, + use_standard_locale=True) except processutils.ProcessExecutionError as e: if "No md superblock detected" in str(e): # actually not a component device @@ -2313,7 +2315,7 @@ class GenericHardwareManager(HardwareManager): {'name': blk.name, 'err': e}) continue try: - utils.execute('mdadm', '--zero-superblock', blk.name) + il_utils.execute('mdadm', '--zero-superblock', blk.name) except processutils.ProcessExecutionError as e: LOG.warning('Failed to remove superblock from' '%(device)s: %(err)s', @@ -2325,7 +2327,7 @@ class GenericHardwareManager(HardwareManager): for holder_disk in all_holder_disks_uniq: LOG.info('Removing partitions on holder disk %s', holder_disk) try: - utils.execute('wipefs', '-af', holder_disk) + il_utils.execute('wipefs', '-af', holder_disk) except processutils.ProcessExecutionError as e: LOG.warning('Failed to remove partitions on %s: %s', holder_disk, e) diff --git a/ironic_python_agent/tests/unit/test_hardware.py b/ironic_python_agent/tests/unit/test_hardware.py index 424538d4a..482bf3448 100644 --- a/ironic_python_agent/tests/unit/test_hardware.py +++ b/ironic_python_agent/tests/unit/test_hardware.py @@ -253,7 +253,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_interfaces(self, @@ -297,7 +297,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_interfaces_with_biosdevname(self, @@ -333,7 +333,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertTrue(interfaces[0].has_carrier) self.assertEqual('em0', interfaces[0].biosdevname) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bios_given_nic_name_ok(self, mock_execute): interface_name = 'eth0' mock_execute.return_value = ('em0\n', '') @@ -342,7 +342,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock_execute.assert_called_once_with('biosdevname', '-i', interface_name) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bios_given_nic_name_oserror(self, mock_execute): interface_name = 'eth0' mock_execute.side_effect = OSError() @@ -351,7 +351,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock_execute.assert_called_once_with('biosdevname', '-i', interface_name) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(hardware, 'LOG', autospec=True) def test_get_bios_given_nic_name_process_exec_err4(self, mock_log, mock_execute): @@ -368,7 +368,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock_execute.assert_called_once_with('biosdevname', '-i', interface_name) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(hardware, 'LOG', autospec=True) def test_get_bios_given_nic_name_process_exec_err3(self, mock_log, mock_execute): @@ -390,7 +390,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_interfaces_with_lldp(self, @@ -448,7 +448,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_list_network_interfaces_with_lldp_error( self, mocked_execute, mocked_open, mocked_exists, mocked_listdir, mocked_ifaddresses, mocked_lldp_info, mockedget_managers, @@ -484,7 +484,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_interfaces_no_carrier(self, @@ -526,7 +526,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_interfaces_with_vendor_info(self, @@ -569,7 +569,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_vlan_interfaces(self, @@ -613,7 +613,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_vlan_interfaces_using_lldp(self, @@ -666,7 +666,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) @mock.patch.object(netutils, 'interface_has_carrier', autospec=True) def test_list_network_vlan_invalid_int(self, @@ -705,7 +705,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch('os.listdir', autospec=True) @mock.patch('os.path.exists', autospec=True) @mock.patch('builtins.open', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(netutils, 'get_mac_addr', autospec=True) def test_list_network_vlan_interfaces_using_lldp_all(self, mock_get_mac, @@ -747,7 +747,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(os, 'readlink', autospec=True) @mock.patch.object(os, 'listdir', autospec=True) @mock.patch.object(hardware, 'get_cached_node', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_os_install_device(self, mocked_execute, mock_cached_node, mocked_listdir, mocked_readlink): mocked_readlink.return_value = '../../sda' @@ -762,7 +762,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(os, 'readlink', autospec=True) @mock.patch.object(os, 'listdir', autospec=True) @mock.patch.object(hardware, 'get_cached_node', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_os_install_device_raid(self, mocked_execute, mock_cached_node, mocked_listdir, mocked_readlink): @@ -783,7 +783,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(os, 'readlink', autospec=True) @mock.patch.object(os, 'listdir', autospec=True) @mock.patch.object(hardware, 'get_cached_node', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_os_install_device_fails(self, mocked_execute, mock_cached_node, mocked_listdir, mocked_readlink): @@ -999,10 +999,9 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual('fake-vendor', vendor) @mock.patch.object(il_utils, 'execute', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) - def test_get_cpus(self, mocked_execute, mte): - mocked_execute.return_value = (hws.LSCPU_OUTPUT, '') - mte.return_value = (hws.CPUINFO_FLAGS_OUTPUT, '') + def test_get_cpus(self, mocked_execute): + mocked_execute.side_effect = [(hws.LSCPU_OUTPUT, ''), + (hws.CPUINFO_FLAGS_OUTPUT, '')] cpus = self.hardware.get_cpus() self.assertEqual('Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz', @@ -1013,10 +1012,9 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(['fpu', 'vme', 'de', 'pse'], cpus.flags) @mock.patch.object(il_utils, 'execute', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) - def test_get_cpus2(self, mocked_execute, mte): - mocked_execute.return_value = (hws.LSCPU_OUTPUT_NO_MAX_MHZ, '') - mte.return_value = (hws.CPUINFO_FLAGS_OUTPUT, '') + def test_get_cpus2(self, mocked_execute): + mocked_execute.side_effect = [(hws.LSCPU_OUTPUT_NO_MAX_MHZ, ''), + (hws.CPUINFO_FLAGS_OUTPUT, '')] cpus = self.hardware.get_cpus() self.assertEqual('Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz', @@ -1027,10 +1025,9 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(['fpu', 'vme', 'de', 'pse'], cpus.flags) @mock.patch.object(il_utils, 'execute', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) - def test_get_cpus_no_flags(self, mocked_execute, mte): - mocked_execute.return_value = (hws.LSCPU_OUTPUT, '') - mte.side_effect = processutils.ProcessExecutionError() + def test_get_cpus_no_flags(self, mocked_execute): + mocked_execute.side_effect = [(hws.LSCPU_OUTPUT, ''), + processutils.ProcessExecutionError()] cpus = self.hardware.get_cpus() self.assertEqual('Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz', @@ -1041,10 +1038,9 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual([], cpus.flags) @mock.patch.object(il_utils, 'execute', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) - def test_get_cpus_illegal_flags(self, mocked_execute, mte): - mocked_execute.return_value = (hws.LSCPU_OUTPUT, '') - mte.return_value = ('I am not a flag', '') + def test_get_cpus_illegal_flags(self, mocked_execute): + mocked_execute.side_effect = [(hws.LSCPU_OUTPUT, ''), + ('I am not a flag', '')] cpus = self.hardware.get_cpus() self.assertEqual('Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz', @@ -1055,7 +1051,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual([], cpus.flags) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_psutil_v1(self, mocked_execute, mocked_psutil): mocked_psutil.return_value.total = 3952 * 1024 * 1024 mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_V1 @@ -1065,7 +1061,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(4096, mem.physical_mb) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_psutil_v2(self, mocked_execute, mocked_psutil): mocked_psutil.return_value.total = 3952 * 1024 * 1024 mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_V2 @@ -1075,7 +1071,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(65536, mem.physical_mb) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_psutil_bank_size(self, mocked_execute, mocked_psutil): mocked_psutil.return_value.total = 3952 * 1024 * 1024 mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_NO_MEMORY_BANK_SIZE @@ -1085,7 +1081,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(65536, mem.physical_mb) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_psutil_exception_v1(self, mocked_execute, mocked_psutil): mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_V1 @@ -1096,7 +1092,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(4096, mem.physical_mb) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_psutil_exception_v2(self, mocked_execute, mocked_psutil): mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_V2 @@ -1107,7 +1103,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(65536, mem.physical_mb) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_lshw_exception(self, mocked_execute, mocked_psutil): mocked_execute.side_effect = OSError() mocked_psutil.return_value.total = 3952 * 1024 * 1024 @@ -1117,7 +1113,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertIsNone(mem.physical_mb) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_arm64_lshw(self, mocked_execute, mocked_psutil): mocked_psutil.return_value.total = 3952 * 1024 * 1024 mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_ARM64 @@ -1127,7 +1123,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual(3952, mem.physical_mb) @mock.patch('psutil.virtual_memory', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_memory_lshw_list(self, mocked_execute, mocked_psutil): mocked_psutil.return_value.total = 3952 * 1024 * 1024 mocked_execute.return_value = (f"[{hws.LSHW_JSON_OUTPUT_V2[0]}]", "") @@ -1209,7 +1205,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(os, 'listdir', autospec=True) @mock.patch.object(hardware, '_get_device_info', autospec=True) @mock.patch.object(pyudev.Devices, 'from_device_file', autospec=False) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_list_all_block_device(self, mocked_execute, mocked_udev, mocked_dev_vendor, mock_listdir, mock_readlink): @@ -1278,7 +1274,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(os, 'listdir', autospec=True) @mock.patch.object(hardware, '_get_device_info', autospec=True) @mock.patch.object(pyudev.Devices, 'from_device_file', autospec=False) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_list_all_block_device_hctl_fail(self, mocked_execute, mocked_udev, mocked_dev_vendor, mocked_listdir): @@ -1298,7 +1294,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(os, 'listdir', autospec=True) @mock.patch.object(hardware, '_get_device_info', autospec=True) @mock.patch.object(pyudev.Devices, 'from_device_file', autospec=False) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_list_all_block_device_with_udev(self, mocked_execute, mocked_udev, mocked_dev_vendor, mocked_listdir, mocked_readlink): @@ -1452,7 +1448,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_success(self, mocked_execute, mocked_raid_member): mocked_execute.side_effect = [ @@ -1484,7 +1480,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_success_no_smartctl(self, mocked_execute, mocked_raid_member): mocked_execute.side_effect = [ @@ -1516,7 +1512,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_nosecurity_shred(self, mocked_execute, mocked_raid_member): hdparm_output = hws.HDPARM_INFO_TEMPLATE.split('\nSecurity:')[0] @@ -1541,7 +1537,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_notsupported_shred(self, mocked_execute, mocked_raid_member): hdparm_output = create_hdparm_info( @@ -1567,7 +1563,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_smartctl_unsupported_shred(self, mocked_execute, mocked_raid_member): @@ -1594,7 +1590,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_smartctl_fails_security_fallback_to_shred( self, mocked_execute, mocked_raid_member): hdparm_output = create_hdparm_info( @@ -1620,7 +1616,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_shred_uses_internal_info(self, mocked_execute, mocked_raid_member): hdparm_output = create_hdparm_info( @@ -1650,7 +1646,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_shred_0_pass_no_zeroize(self, mocked_execute, mocked_raid_member): hdparm_output = create_hdparm_info( @@ -1725,7 +1721,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mocked_exists.assert_called_once_with('/dev/disk/by-label/ir-vfd-dev') self.assertFalse(mocked_link.called) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_shred_fail_oserror(self, mocked_execute): mocked_execute.side_effect = OSError block_device = hardware.BlockDevice('/dev/sda', 'big', 1073741824, @@ -1736,7 +1732,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): 'shred', '--force', '--zero', '--verbose', '--iterations', '1', '/dev/sda') - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_shred_fail_processerror(self, mocked_execute): mocked_execute.side_effect = processutils.ProcessExecutionError block_device = hardware.BlockDevice('/dev/sda', 'big', 1073741824, @@ -1749,7 +1745,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_security_unlock_fallback_pass( self, mocked_execute, mocked_raid_member): hdparm_output = create_hdparm_info( @@ -1783,7 +1779,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): '_is_linux_raid_member', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, '_shred_block_device', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_security_enabled( self, mocked_execute, mock_shred, mocked_raid_member): # Tests that an exception is thrown if all of the recovery passwords @@ -1820,7 +1816,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): '_is_linux_raid_member', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, '_shred_block_device', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_security_enabled_unlock_attempt( self, mocked_execute, mock_shred, mocked_raid_member): hdparm_output = create_hdparm_info( @@ -1845,7 +1841,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.erase_block_device(self.node, block_device) self.assertFalse(mock_shred.called) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test__ata_erase_security_enabled_unlock_exception( self, mocked_execute): # test that an exception is thrown when security unlock fails with @@ -1871,7 +1867,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mocked_execute.assert_any_call('hdparm', '--user-master', 'u', '--security-unlock', 'NULL', '/dev/sda') - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test__ata_erase_security_enabled_set_password_exception( self, mocked_execute): hdparm_output = create_hdparm_info( @@ -1890,7 +1886,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware._ata_erase, block_device) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test__ata_erase_security_erase_exec_exception( self, mocked_execute): # Exception on security erase @@ -1919,7 +1915,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): '_is_linux_raid_member', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, '_shred_block_device', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_frozen(self, mocked_execute, mock_shred, mocked_raid_member): hdparm_output = create_hdparm_info( @@ -1944,7 +1940,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): '_is_linux_raid_member', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, '_shred_block_device', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_failed(self, mocked_execute, mock_shred, mocked_raid_member): hdparm_output_before = create_hdparm_info( @@ -1978,7 +1974,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): '_is_linux_raid_member', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, '_shred_block_device', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_failed_continued( self, mocked_execute, mock_shred, mocked_raid_member): @@ -2012,7 +2008,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): '_is_linux_raid_member', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, '_shred_block_device', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_ata_erase_disabled( self, mocked_execute, mock_shred, mocked_raid_member): @@ -2030,7 +2026,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): def test_normal_vs_enhanced_security_erase(self): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_security_erase_option(test_case, enhanced_erase, expected_option, @@ -2099,7 +2095,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock.call('/sys/fs/pstore/' + arg) for arg in pstore_entries ]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, '_is_virtual_media_device', autospec=True) @mock.patch.object(hardware.GenericHardwareManager, @@ -2186,14 +2182,14 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock.call(self.hardware, block_devices[0])], mock__is_vmedia.call_args_list) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test__is_linux_raid_member(self, mocked_execute): raid_member = hardware.BlockDevice('/dev/sda1', 'small', 65535, False) mocked_execute.return_value = ('linux_raid_member host.domain:0 ' '85fa41e4-e0ae'), '' self.assertTrue(self.hardware._is_linux_raid_member(raid_member)) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test__is_linux_raid_member_false(self, mocked_execute): raid_member = hardware.BlockDevice('/dev/md0', 'small', 65535, False) mocked_execute.return_value = 'md0', '' @@ -2246,34 +2242,34 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock_dev_file.side_effect = reads self.assertTrue(self.hardware._is_read_only_device(device)) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_address(self, mocked_execute): mocked_execute.return_value = '192.1.2.3\n', '' self.assertEqual('192.1.2.3', self.hardware.get_bmc_address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_address_virt(self, mocked_execute): mocked_execute.side_effect = processutils.ProcessExecutionError() self.assertIsNone(self.hardware.get_bmc_address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_address_zeroed(self, mocked_execute): mocked_execute.return_value = '0.0.0.0\n', '' self.assertEqual('0.0.0.0', self.hardware.get_bmc_address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_address_invalid(self, mocked_execute): # In case of invalid lan channel, stdout is empty and the error # on stderr is "Invalid channel" mocked_execute.return_value = '\n', 'Invalid channel: 55' self.assertEqual('0.0.0.0', self.hardware.get_bmc_address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_address_random_error(self, mocked_execute): mocked_execute.return_value = '192.1.2.3\n', 'Random error message' self.assertEqual('192.1.2.3', self.hardware.get_bmc_address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_address_iterate_channels(self, mocked_execute): # For channel 1 we simulate unconfigured IP # and for any other we return a correct IP address @@ -2289,34 +2285,34 @@ class TestGenericHardwareManager(base.IronicAgentTest): mocked_execute.side_effect = side_effect self.assertEqual('192.1.2.3', self.hardware.get_bmc_address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_address_not_available(self, mocked_execute): mocked_execute.return_value = '', '' self.assertEqual('0.0.0.0', self.hardware.get_bmc_address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_mac_not_available(self, mocked_execute): mocked_execute.return_value = '', '' self.assertRaises(errors.IncompatibleHardwareMethodError, self.hardware.get_bmc_mac) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_mac(self, mocked_execute): mocked_execute.return_value = '192.1.2.3\n01:02:03:04:05:06', '' self.assertEqual('01:02:03:04:05:06', self.hardware.get_bmc_mac()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_mac_virt(self, mocked_execute): mocked_execute.side_effect = processutils.ProcessExecutionError() self.assertIsNone(self.hardware.get_bmc_mac()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_mac_zeroed(self, mocked_execute): mocked_execute.return_value = '0.0.0.0\n00:00:00:00:00:00', '' self.assertRaises(errors.IncompatibleHardwareMethodError, self.hardware.get_bmc_mac) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_mac_invalid(self, mocked_execute): # In case of invalid lan channel, stdout is empty and the error # on stderr is "Invalid channel" @@ -2324,13 +2320,13 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertRaises(errors.IncompatibleHardwareMethodError, self.hardware.get_bmc_mac) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_mac_random_error(self, mocked_execute): mocked_execute.return_value = ('192.1.2.3\n00:00:00:00:00:02', 'Random error message') self.assertEqual('00:00:00:00:00:02', self.hardware.get_bmc_mac()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_mac_iterate_channels(self, mocked_execute): # For channel 1 we simulate unconfigured IP # and for any other we return a correct IP address @@ -2349,12 +2345,12 @@ class TestGenericHardwareManager(base.IronicAgentTest): mocked_execute.side_effect = side_effect self.assertEqual('01:02:03:04:05:06', self.hardware.get_bmc_mac()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_not_enabled(self, mocked_execute): mocked_execute.side_effect = [('ipv4\n', '')] * 11 self.assertEqual('::/0', self.hardware.get_bmc_v6address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_dynamic_address(self, mocked_execute): mocked_execute.side_effect = [ ('ipv6\n', ''), @@ -2363,7 +2359,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual('2001:1234:1234:1234:1234:1234:1234:1234', self.hardware.get_bmc_v6address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_static_address_both(self, mocked_execute): dynamic_disabled = \ hws.IPMITOOL_LAN6_PRINT_DYNAMIC_ADDR.replace('active', 'disabled') @@ -2375,12 +2371,12 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual('2001:5678:5678:5678:5678:5678:5678:5678', self.hardware.get_bmc_v6address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_virt(self, mocked_execute): mocked_execute.side_effect = processutils.ProcessExecutionError() self.assertIsNone(self.hardware.get_bmc_v6address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_invalid_enables(self, mocked_execute): def side_effect(*args, **kwargs): if args[0].startswith('ipmitool lan6 print'): @@ -2389,7 +2385,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mocked_execute.side_effect = side_effect self.assertEqual('::/0', self.hardware.get_bmc_v6address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_invalid_get_address(self, mocked_execute): def side_effect(*args, **kwargs): if args[0].startswith('ipmitool lan6 print'): @@ -2402,7 +2398,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual('::/0', self.hardware.get_bmc_v6address()) @mock.patch.object(hardware, 'LOG', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_ipmitool_invalid_stdout_format( self, mocked_execute, mocked_log): def side_effect(*args, **kwargs): @@ -2418,7 +2414,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): 'command: %(e)s', mock.ANY) mocked_log.warning.assert_has_calls([one_call] * 14) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_bmc_v6address_channel_7(self, mocked_execute): def side_effect(*args, **kwargs): if not args[0].startswith('ipmitool lan6 print 7'): @@ -2437,7 +2433,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual('2001:5678:5678:5678:5678:5678:5678:5678', self.hardware.get_bmc_v6address()) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_validate_configuration_no_configuration(self, mocked_execute): self.assertRaises(errors.SoftwareRAIDError, self.hardware.validate_configuration, @@ -2509,7 +2505,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(raid_utils, '_get_actual_component_devices', autospec=True) @mock.patch.object(disk_utils, 'list_partitions', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=False) def test_create_configuration(self, mocked_os_path_isdir, mocked_execute, mock_list_parts, mocked_actual_comp): @@ -2604,7 +2600,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(utils, 'get_node_boot_mode', lambda node: 'bios') @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_create_configuration_raid_5(self, mocked_execute, mock_list_parts, mocked_actual_comp): node = self.node @@ -2703,7 +2699,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(utils, 'get_node_boot_mode', lambda node: 'bios') @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_create_configuration_raid_6(self, mocked_execute, mock_list_parts, mocked_actual_comp): node = self.node @@ -2818,7 +2814,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): autospec=True) @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=True) def test_create_configuration_efi(self, mocked_os_path_isdir, mocked_execute, mock_list_parts, @@ -2899,7 +2895,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): autospec=True) @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=False) def test_create_configuration_force_gpt_with_disk_label( self, mocked_os_path_isdir, mocked_execute, mock_list_part, @@ -2986,7 +2982,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): autospec=True) @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=False) def test_create_configuration_no_max(self, _mocked_isdir, mocked_execute, mock_list_parts, mocked_actual_comp): @@ -3068,7 +3064,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): autospec=True) @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=False) def test_create_configuration_max_is_first_logical(self, _mocked_isdir, mocked_execute, @@ -3153,7 +3149,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(utils, 'get_node_boot_mode', lambda node: 'bios') @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_create_configuration_with_hints(self, mocked_execute, mock_list_parts, mocked_actual_comp): @@ -3246,7 +3242,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock.call(x) for x in ['/dev/sda', '/dev/sdb'] ]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=False) def test_create_configuration_invalid_raid_config(self, mocked_os_path_is_dir, @@ -3270,7 +3266,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.create_configuration, self.node, []) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_create_configuration_invalid_hints(self, mocked_execute): for hints in [ [], @@ -3293,7 +3289,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.create_configuration, self.node, []) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_create_configuration_mismatching_hints(self, mocked_execute): device1 = hardware.BlockDevice('/dev/sda', 'sda', 107374182400, True) device2 = hardware.BlockDevice('/dev/sdb', 'sdb', 107374182400, True) @@ -3325,7 +3321,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.node, []) @mock.patch.object(disk_utils, 'list_partitions', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=False) def test_create_configuration_partitions_detected(self, mocked_os_path_is_dir, @@ -3364,7 +3360,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=False) def test_create_configuration_device_handling_failures( self, mocked_os_path_is_dir, mocked_execute, mock_list_parts): @@ -3432,7 +3428,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_create_configuration_device_handling_failures_raid5( self, mocked_execute, mock_list_parts): raid_config = { @@ -3466,7 +3462,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.create_configuration, self.node, []) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_create_configuration_device_handling_failures_raid6( self, mocked_execute): raid_config = { @@ -3511,7 +3507,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): autospec=True) @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=True) def test_create_configuration_with_nvme(self, mocked_os_path_isdir, mocked_execute, mock_list_parts, @@ -3590,7 +3586,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(disk_utils, 'list_partitions', autospec=True, return_value=[]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'isdir', autospec=True, return_value=True) def test_create_configuration_failure_with_nvme(self, mocked_os_path_isdir, @@ -3655,7 +3651,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.create_configuration, self.node, []) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test__get_md_uuid(self, mocked_execute): mocked_execute.side_effect = [(hws.MDADM_DETAIL_OUTPUT, '')] md_uuid = hardware._get_md_uuid('/dev/md0') @@ -3663,7 +3659,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware, '_get_md_uuid', autospec=True) @mock.patch.object(hardware, 'list_all_block_devices', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test__get_component_devices(self, mocked_execute, mocked_list_all_block_devices, mocked_md_uuid): @@ -3698,13 +3694,13 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock.call('mdadm', '--examine', '/dev/sdz1', use_standard_locale=True)]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_holder_disks(self, mocked_execute): mocked_execute.side_effect = [(hws.MDADM_DETAIL_OUTPUT, '')] holder_disks = hardware.get_holder_disks('/dev/md0') self.assertEqual(['/dev/vde', '/dev/vdf'], holder_disks) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) @mock.patch.object(os.path, 'exists', autospec=True) @mock.patch.object(os, 'stat', autospec=True) def test_get_holder_disks_with_whole_device(self, mocked_stat, @@ -3717,13 +3713,13 @@ class TestGenericHardwareManager(base.IronicAgentTest): holder_disks = hardware.get_holder_disks('/dev/md0') self.assertEqual(['/dev/vde', '/dev/vdf'], holder_disks) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_holder_disks_with_nvme(self, mocked_execute): mocked_execute.side_effect = [(hws.MDADM_DETAIL_OUTPUT_NVME, '')] holder_disks = hardware.get_holder_disks('/dev/md0') self.assertEqual(['/dev/nvme0n1', '/dev/nvme1n1'], holder_disks) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_holder_disks_unexpected_devices(self, mocked_execute): side_effect = hws.MDADM_DETAIL_OUTPUT_NVME.replace('nvme1n1p1', 'notmatching1a') @@ -3735,7 +3731,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): r'/dev/notmatching1a$', hardware.get_holder_disks, '/dev/md0') - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_holder_disks_broken_raid0(self, mocked_execute): mocked_execute.side_effect = [(hws.MDADM_DETAIL_OUTPUT_BROKEN_RAID0, '')] @@ -3745,7 +3741,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware, 'get_holder_disks', autospec=True) @mock.patch.object(hardware, '_get_component_devices', autospec=True) @mock.patch.object(hardware, 'list_all_block_devices', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_delete_configuration(self, mocked_execute, mocked_list, mocked_get_component, mocked_get_holder): raid_device1 = hardware.BlockDevice('/dev/md0', 'RAID-1', @@ -3833,7 +3829,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware, '_get_component_devices', autospec=True) @mock.patch.object(hardware, 'list_all_block_devices', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_delete_configuration_partition(self, mocked_execute, mocked_list, mocked_get_component): # This test checks that if no components are returned for a given @@ -3858,7 +3854,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware, '_get_component_devices', autospec=True) @mock.patch.object(hardware, 'list_all_block_devices', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_delete_configuration_failure_blocks_remaining( self, mocked_execute, mocked_list, mocked_get_component): @@ -3894,7 +3890,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock.call('mdadm', '--assemble', '--scan', check_exit_code=False), ]) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_validate_configuration_valid_raid1(self, mocked_execute): raid_config = { "logical_disks": [ @@ -3908,7 +3904,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertIsNone(self.hardware.validate_configuration(raid_config, self.node)) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_validate_configuration_valid_raid1_raidN(self, mocked_execute): raid_config = { "logical_disks": [ @@ -3927,7 +3923,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertIsNone(self.hardware.validate_configuration(raid_config, self.node)) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_validate_configuration_invalid_MAX_MAX(self, mocked_execute): raid_config = { "logical_disks": [ @@ -3947,7 +3943,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.validate_configuration, raid_config, self.node) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_validate_configuration_invalid_raid_level(self, mocked_execute): raid_config = { "logical_disks": [ @@ -3967,7 +3963,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.validate_configuration, raid_config, self.node) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_validate_configuration_invalid_no_of_raids(self, mocked_execute): raid_config = { "logical_disks": [ @@ -3992,7 +3988,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.hardware.validate_configuration, raid_config, self.node) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_system_vendor_info(self, mocked_execute): mocked_execute.return_value = hws.LSHW_JSON_OUTPUT_V1 vendor_info = self.hardware.get_system_vendor_info() @@ -4000,7 +3996,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual('1234567', vendor_info.serial_number) self.assertEqual('GENERIC', vendor_info.manufacturer) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_system_vendor_info_lshw_list(self, mocked_execute): mocked_execute.return_value = (f"[{hws.LSHW_JSON_OUTPUT_V2[0]}]", "") vendor_info = self.hardware.get_system_vendor_info() @@ -4008,7 +4004,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): self.assertEqual('1234', vendor_info.serial_number) self.assertEqual('ABCD', vendor_info.manufacturer) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_get_system_vendor_info_failure(self, mocked_execute): mocked_execute.side_effect = processutils.ProcessExecutionError() vendor_info = self.hardware.get_system_vendor_info() @@ -4042,7 +4038,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_nvme_crypto_success(self, mocked_execute, mocked_raid_member): info = self.node['driver_internal_info'] @@ -4066,7 +4062,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_nvme_userdata_success(self, mocked_execute, mocked_raid_member): info = self.node['driver_internal_info'] @@ -4090,7 +4086,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_nvme_failed(self, mocked_execute, mocked_raid_member): info = self.node['driver_internal_info'] @@ -4108,7 +4104,7 @@ class TestGenericHardwareManager(base.IronicAgentTest): @mock.patch.object(hardware.GenericHardwareManager, '_is_linux_raid_member', autospec=True) - @mock.patch.object(utils, 'execute', autospec=True) + @mock.patch.object(il_utils, 'execute', autospec=True) def test_erase_block_device_nvme_format_unsupported(self, mocked_execute, mocked_raid_member): info = self.node['driver_internal_info'] @@ -4256,7 +4252,7 @@ class TestEvaluateHardwareSupport(base.IronicAgentTest): @mock.patch.object(os, 'listdir', lambda *_: []) -@mock.patch.object(utils, 'execute', autospec=True) +@mock.patch.object(il_utils, 'execute', autospec=True) class TestModuleFunctions(base.IronicAgentTest): @mock.patch.object(os, 'readlink', autospec=True)