diff --git a/ironic_python_agent/hardware.py b/ironic_python_agent/hardware.py index 58a47e47a..8e5dbc09d 100644 --- a/ironic_python_agent/hardware.py +++ b/ironic_python_agent/hardware.py @@ -371,6 +371,11 @@ def list_all_block_devices(block_type='disk', LOG.warning("Device %(dev)s is inaccessible, skipping... " "Error: %(error)s", {'dev': name, 'error': e}) extra = {} + except pyudev.DeviceNotFoundByNumberError as e: + LOG.warning("Device %(dev)s is not supported by pyudev, " + "skipping... Error: %(error)s", + {'dev': name, 'error': e}) + extra = {} else: # TODO(lucasagomes): Since lsblk only supports # returning the short serial we are using diff --git a/ironic_python_agent/tests/unit/test_hardware.py b/ironic_python_agent/tests/unit/test_hardware.py index b0a565a17..dbe2fc3a8 100644 --- a/ironic_python_agent/tests/unit/test_hardware.py +++ b/ironic_python_agent/tests/unit/test_hardware.py @@ -1629,7 +1629,11 @@ class TestGenericHardwareManager(base.IronicAgentTest): mock_listdir.return_value = [os.path.basename(x) for x in sorted(by_path_map)] mocked_execute.return_value = (BLK_DEVICE_TEMPLATE, '') - mocked_udev.side_effect = pyudev.DeviceNotFoundByFileError() + mocked_udev.side_effect = [pyudev.DeviceNotFoundByFileError(), + pyudev.DeviceNotFoundByNumberError('block', + 1234), + pyudev.DeviceNotFoundByFileError(), + pyudev.DeviceNotFoundByFileError()] mocked_dev_vendor.return_value = 'Super Vendor' devices = hardware.list_all_block_devices() expected_devices = [