diff --git a/ironic/drivers/modules/redfish/raid.py b/ironic/drivers/modules/redfish/raid.py index e9b9ec18f9..b736307353 100644 --- a/ironic/drivers/modules/redfish/raid.py +++ b/ironic/drivers/modules/redfish/raid.py @@ -625,8 +625,10 @@ def _construct_volume_payload( if physical_disks: payload['Drives'] = [{"@odata.id": _drive_path(storage, d)} for d in physical_disks] + if disk_name: + payload['Name'] = disk_name LOG.debug('Payload for RAID logical disk creation on node %(node_uuid)s: ' - '%(payload)r', {'node': node.uuid, 'payload': payload}) + '%(payload)r', {'node_uuid': node.uuid, 'payload': payload}) return payload diff --git a/ironic/tests/unit/drivers/modules/redfish/test_raid.py b/ironic/tests/unit/drivers/modules/redfish/test_raid.py index 44cab90972..ec6887d55f 100644 --- a/ironic/tests/unit/drivers/modules/redfish/test_raid.py +++ b/ironic/tests/unit/drivers/modules/redfish/test_raid.py @@ -48,7 +48,7 @@ def _mock_drive(identity, block_size_bytes=None, capacity_bytes=None, def _mock_volume(identity, volume_type=None, raid_type=None, - capacity_bytes=units.Gi): + capacity_bytes=units.Gi, volume_name=None): volume = mock.MagicMock( _path='/redfish/v1/Systems/1/Storage/1/Volumes/' + identity, identity=identity, @@ -56,7 +56,10 @@ def _mock_volume(identity, volume_type=None, raid_type=None, raid_type=raid_type, capacity_bytes=capacity_bytes ) - volume.name = 'Volume ' + identity + if volume_name: + volume.name = volume_name + else: + volume.name = 'Volume ' + identity # Mocking Immediate that does not return anything volume.delete.return_value = None return volume @@ -287,13 +290,14 @@ class RedfishRAIDTestCase(db_base.DbTestCase): { 'size_gb': 100, 'raid_level': '5', - 'is_root_volume': True + 'is_root_volume': True, + 'volume_name': 'test-volume' } ] } - created_volumes = [_mock_volume( - '1', raid_type=sushy.RAIDType.RAID5, - capacity_bytes=100 * units.Gi)] + created_volumes = [_mock_volume('1', raid_type=sushy.RAIDType.RAID5, + capacity_bytes=100 * units.Gi, + volume_name='test-volume')] volumes = mock.MagicMock() # Called after volumes created volumes.get_members.return_value = created_volumes @@ -337,7 +341,7 @@ class RedfishRAIDTestCase(db_base.DbTestCase): self.assertEqual( [{'controller': 'RAID controller 1', 'id': '1', - 'name': 'Volume 1', + 'name': 'test-volume', 'raid_level': '5', 'size_gb': 100}], task.node.raid_config['logical_disks']) diff --git a/releasenotes/notes/redfish-raid-set-volume-name-76205f8bb7dd2bb8.yaml b/releasenotes/notes/redfish-raid-set-volume-name-76205f8bb7dd2bb8.yaml new file mode 100644 index 0000000000..6462910218 --- /dev/null +++ b/releasenotes/notes/redfish-raid-set-volume-name-76205f8bb7dd2bb8.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Uses the volume_name provided in the target_raid_config field of a node to + set the storage volume name when configuring RAID with the redfish driver + (instead of discarding the volume_name given in target_raid_config) \ No newline at end of file