summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAija Jauntēva <aija.jaunteva@dell.com>2022-08-08 06:15:35 -0400
committerAija Jauntēva <aija.jaunteva@dell.com>2022-08-10 09:48:26 +0000
commit8734125fc6e9629e35c85ee7791316cf620ae82b (patch)
treece287cf742cd7ffff56d06cccad3783e56b4a799
parent3f624e5caa83acf9b98443cf32cb0cd69143c6e2 (diff)
downloadironic-8734125fc6e9629e35c85ee7791316cf620ae82b.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.py10
-rw-r--r--ironic/tests/unit/drivers/modules/redfish/test_raid.py19
2 files changed, 28 insertions, 1 deletions
diff --git a/ironic/drivers/modules/redfish/raid.py b/ironic/drivers/modules/redfish/raid.py
index 2d0b198f1..506386028 100644
--- a/ironic/drivers/modules/redfish/raid.py
+++ b/ironic/drivers/modules/redfish/raid.py
@@ -694,6 +694,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:
@@ -706,7 +707,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 0f7cf320f..2e39d0710 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()