summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-09-07 10:45:52 +0000
committerGerrit Code Review <review@openstack.org>2022-09-07 10:45:52 +0000
commitdf44b63dcb1cd2ae32b4e0762ee2bffdac20d775 (patch)
treebcadcf38ffb9bad9b01be289314bb405ad3c3e74
parent8f2e933114c500561c8d16e2a5da06d0a174287a (diff)
parent29fba6f64b35184938059b5e094b69184898edbe (diff)
downloadironic-df44b63dcb1cd2ae32b4e0762ee2bffdac20d775.tar.gz
Merge "Update raid_type handling for Redfish raid_config" into bugfix/18.1
-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 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()