redfish_config new bool parameter to automatically delete 'None' type volumes. (#8990)
* Add a new boolean parameter storage_none_volume_deletion to the volume creation command of redfish_config * Add description for storage_none_volume_deletion redfish_config parameter * Update plugins/module_utils/redfish_utils.py Co-authored-by: Mike Raineri <mraineri@gmail.com> * Update plugins/modules/redfish_config.py Co-authored-by: Mike Raineri <mraineri@gmail.com> * Add CHANGELOG fragment * Add punctuation. --------- Co-authored-by: Pierre-yves FONTANIERE <pyf@cc.in2p3.fr> Co-authored-by: Mike Raineri <mraineri@gmail.com> Co-authored-by: Felix Fontein <felix@fontein.de>pull/9012/head
parent
b523d1b1c9
commit
447d4b0267
|
@ -0,0 +1,3 @@
|
||||||
|
minor_changes:
|
||||||
|
- redfish_config - add parameter ``storage_none_volume_deletion`` to
|
||||||
|
``CreateVolume`` command in order to control the automatic deletion of non-RAID volumes (https://github.com/ansible-collections/community.general/pull/8990).
|
|
@ -3742,7 +3742,7 @@ class RedfishUtils(object):
|
||||||
return {'ret': True, 'changed': True,
|
return {'ret': True, 'changed': True,
|
||||||
'msg': "The following volumes were deleted: %s" % str(volume_ids)}
|
'msg': "The following volumes were deleted: %s" % str(volume_ids)}
|
||||||
|
|
||||||
def create_volume(self, volume_details, storage_subsystem_id):
|
def create_volume(self, volume_details, storage_subsystem_id, storage_none_volume_deletion=False):
|
||||||
# Find the Storage resource from the requested ComputerSystem resource
|
# Find the Storage resource from the requested ComputerSystem resource
|
||||||
response = self.get_request(self.root_uri + self.systems_uri)
|
response = self.get_request(self.root_uri + self.systems_uri)
|
||||||
if response['ret'] is False:
|
if response['ret'] is False:
|
||||||
|
@ -3794,22 +3794,23 @@ class RedfishUtils(object):
|
||||||
data = response['data']
|
data = response['data']
|
||||||
|
|
||||||
# Deleting any volumes of RAIDType None present on the Storage Subsystem
|
# Deleting any volumes of RAIDType None present on the Storage Subsystem
|
||||||
response = self.get_request(self.root_uri + data['Volumes']['@odata.id'])
|
if storage_none_volume_deletion:
|
||||||
if response['ret'] is False:
|
response = self.get_request(self.root_uri + data['Volumes']['@odata.id'])
|
||||||
return response
|
if response['ret'] is False:
|
||||||
volume_data = response['data']
|
return response
|
||||||
|
volume_data = response['data']
|
||||||
|
|
||||||
if "Members" in volume_data:
|
if "Members" in volume_data:
|
||||||
for member in volume_data["Members"]:
|
for member in volume_data["Members"]:
|
||||||
response = self.get_request(self.root_uri + member['@odata.id'])
|
response = self.get_request(self.root_uri + member['@odata.id'])
|
||||||
if response['ret'] is False:
|
|
||||||
return response
|
|
||||||
member_data = response['data']
|
|
||||||
|
|
||||||
if member_data["RAIDType"] == "None":
|
|
||||||
response = self.delete_request(self.root_uri + member['@odata.id'])
|
|
||||||
if response['ret'] is False:
|
if response['ret'] is False:
|
||||||
return response
|
return response
|
||||||
|
member_data = response['data']
|
||||||
|
|
||||||
|
if member_data["RAIDType"] == "None":
|
||||||
|
response = self.delete_request(self.root_uri + member['@odata.id'])
|
||||||
|
if response['ret'] is False:
|
||||||
|
return response
|
||||||
|
|
||||||
# Construct payload and issue POST command to create volume
|
# Construct payload and issue POST command to create volume
|
||||||
volume_details["Links"] = {}
|
volume_details["Links"] = {}
|
||||||
|
|
|
@ -145,6 +145,13 @@ options:
|
||||||
type: str
|
type: str
|
||||||
default: ''
|
default: ''
|
||||||
version_added: '7.3.0'
|
version_added: '7.3.0'
|
||||||
|
storage_none_volume_deletion:
|
||||||
|
required: false
|
||||||
|
description:
|
||||||
|
- Indicates if all non-RAID volumes are automatically deleted prior to creating the new volume.
|
||||||
|
type: bool
|
||||||
|
default: false
|
||||||
|
version_added: '9.5.0'
|
||||||
volume_ids:
|
volume_ids:
|
||||||
required: false
|
required: false
|
||||||
description:
|
description:
|
||||||
|
@ -418,6 +425,7 @@ def main():
|
||||||
hostinterface_id=dict(),
|
hostinterface_id=dict(),
|
||||||
sessions_config=dict(type='dict', default={}),
|
sessions_config=dict(type='dict', default={}),
|
||||||
storage_subsystem_id=dict(type='str', default=''),
|
storage_subsystem_id=dict(type='str', default=''),
|
||||||
|
storage_none_volume_deletion=dict(type='bool', default=False),
|
||||||
volume_ids=dict(type='list', default=[], elements='str'),
|
volume_ids=dict(type='list', default=[], elements='str'),
|
||||||
secure_boot_enable=dict(type='bool', default=True),
|
secure_boot_enable=dict(type='bool', default=True),
|
||||||
volume_details=dict(type='dict', default={}),
|
volume_details=dict(type='dict', default={}),
|
||||||
|
@ -484,6 +492,7 @@ def main():
|
||||||
# Volume creation options
|
# Volume creation options
|
||||||
volume_details = module.params['volume_details']
|
volume_details = module.params['volume_details']
|
||||||
storage_subsystem_id = module.params['storage_subsystem_id']
|
storage_subsystem_id = module.params['storage_subsystem_id']
|
||||||
|
storage_none_volume_deletion = module.params['storage_none_volume_deletion']
|
||||||
|
|
||||||
# ciphers
|
# ciphers
|
||||||
ciphers = module.params['ciphers']
|
ciphers = module.params['ciphers']
|
||||||
|
@ -527,7 +536,7 @@ def main():
|
||||||
elif command == "DeleteVolumes":
|
elif command == "DeleteVolumes":
|
||||||
result = rf_utils.delete_volumes(storage_subsystem_id, volume_ids)
|
result = rf_utils.delete_volumes(storage_subsystem_id, volume_ids)
|
||||||
elif command == "CreateVolume":
|
elif command == "CreateVolume":
|
||||||
result = rf_utils.create_volume(volume_details, storage_subsystem_id)
|
result = rf_utils.create_volume(volume_details, storage_subsystem_id, storage_none_volume_deletion)
|
||||||
|
|
||||||
elif category == "Manager":
|
elif category == "Manager":
|
||||||
# execute only if we find a Manager service resource
|
# execute only if we find a Manager service resource
|
||||||
|
|
Loading…
Reference in New Issue