diff options
author | Aija Jauntēva <aija.jaunteva@dell.com> | 2022-08-08 06:15:35 -0400 |
---|---|---|
committer | Aija Jauntēva <aija.jaunteva@dell.com> | 2022-08-10 09:49:01 +0000 |
commit | 1bffb2c02c8a5ffa8d99befcb56499896452e7fe (patch) | |
tree | 35b3aef99f81204f3e65d1fbfcec78ace54482e8 | |
parent | 35e20b62de1a867534d54de844496072ae291eac (diff) | |
download | ironic-1bffb2c02c8a5ffa8d99befcb56499896452e7fe.tar.gz |
Update raid_type handling for Redfish raid_config
Fix indentation for case when raid_type is missing.
Generally, it is not expected that raid_type will be
missing, this is done as a precaution as raid_type
was introduced in Redfish 1.3.1. Now log warning
that raid_type is missing, thus cannot update
raid_config correctly.
Followup to I753c4b00c0a64bcdc89c9bc0afd46f1211f7847b
Change-Id: Id66b87309dd26a2a165b35ac1d81580e4605d629
(cherry picked from commit 3a621e3983eb2eb1d013d687acc3f5981cdfbc64)
-rw-r--r-- | ironic/drivers/modules/redfish/raid.py | 10 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/redfish/test_raid.py | 19 |
2 files changed, 28 insertions, 1 deletions
diff --git a/ironic/drivers/modules/redfish/raid.py b/ironic/drivers/modules/redfish/raid.py index 013553562..cd875f131 100644 --- a/ironic/drivers/modules/redfish/raid.py +++ b/ironic/drivers/modules/redfish/raid.py @@ -693,6 +693,7 @@ def update_raid_config(node): """ system = redfish_utils.get_system(node) logical_disks = [] + vol_no_raid_type = [] for stor in system.storage.get_members(): for vol in stor.volumes.get_members(): if vol.raid_type: @@ -705,7 +706,14 @@ def update_raid_config(node): key for key, value in RAID_LEVELS.items() if value['raid_type'] == vol.raid_type) } - logical_disks.append(logical_disk) + logical_disks.append(logical_disk) + else: + vol_no_raid_type.append(vol.identity) + + if vol_no_raid_type: + LOG.warning("Unable to update raid_config for volumes missing RAID " + "type: %(vol_no_raid_type)s", + {'vol_no_raid_type': ", ".join(vol_no_raid_type)}) raid_common.update_raid_info(node, {'logical_disks': logical_disks}) diff --git a/ironic/tests/unit/drivers/modules/redfish/test_raid.py b/ironic/tests/unit/drivers/modules/redfish/test_raid.py index 183b27fb9..53987ddca 100644 --- a/ironic/tests/unit/drivers/modules/redfish/test_raid.py +++ b/ironic/tests/unit/drivers/modules/redfish/test_raid.py @@ -1484,3 +1484,22 @@ class RedfishRAIDTestCase(db_base.DbTestCase): mock_build_agent_opt.assert_not_called() # Not yet updated as in progress self.assertEqual({}, task.node.raid_config) + + @mock.patch.object(redfish_raid, 'LOG', autospec=True) + def test_update_raid_config_missing_raid_type( + self, mock_log, mock_get_system): + volumes = [ + _mock_volume( + '1', raid_type=None, + capacity_bytes=100 * units.Gi), + _mock_volume( + '2', raid_type=None, + capacity_bytes=500 * units.Gi)] + self.mock_storage.volumes.get_members.return_value = volumes + mock_get_system.return_value.storage.get_members.return_value = [ + self.mock_storage] + + redfish_raid.update_raid_config(self.node) + + self.assertEqual([], self.node.raid_config['logical_disks']) + mock_log.warning.assert_called_once() |