summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-08-11 18:31:58 +0000
committerGerrit Code Review <review@openstack.org>2022-08-11 18:31:58 +0000
commitae3ed6271bc4c1222946337b3f1d985560103dcf (patch)
tree76b71f4606e55babcd7c136eb3a7a43f4c9f3b1c
parentee00efc85881fffd9c2ce2234f27a6a8c8ec786e (diff)
parent4ee9b67a56805dd00969473335d487173a1bb853 (diff)
downloadironic-ae3ed6271bc4c1222946337b3f1d985560103dcf.tar.gz
Merge "Update raid_type handling for Redfish raid_config" into stable/yoga
-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 77abdef0e..809ec59c6 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.value)
}
- 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 b2d3a0a0e..dfb3c1473 100644
--- a/ironic/tests/unit/drivers/modules/redfish/test_raid.py
+++ b/ironic/tests/unit/drivers/modules/redfish/test_raid.py
@@ -1483,3 +1483,22 @@ class RedfishRAIDTestCase(db_base.DbTestCase):
mock_reboot.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()