[PR #6814/47865284 backport][stable-7] Adding DeleteVolumes functionality (#7066)

Adding DeleteVolumes functionality (#6814)

* Adding DeleteAllVolumes functionality

* Adding changelog fragment and sanity fix

* Sanity Fix

* Updating as per PR suggestions

* Sanity fix

* Adjust version_added.

---------

Co-authored-by: Kushal <t-s.kushal@hpe.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 478652843f)

Co-authored-by: TSKushal <44438079+TSKushal@users.noreply.github.com>
This commit is contained in:
patchback[bot] 2023-08-05 20:52:55 +02:00 committed by GitHub
parent 3c067aa2c3
commit 14625a214a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 98 additions and 2 deletions

View file

@ -3411,3 +3411,65 @@ class RedfishUtils(object):
fan_percent_min_config = hpe.get('FanPercentMinimum')
result["fan_percent_min"] = fan_percent_min_config
return result
def delete_volumes(self, storage_subsystem_id, volume_ids):
# Find the Storage resource from the requested ComputerSystem resource
response = self.get_request(self.root_uri + self.systems_uri)
if response['ret'] is False:
return response
data = response['data']
storage_uri = data.get('Storage', {}).get('@odata.id')
if storage_uri is None:
return {'ret': False, 'msg': 'Storage resource not found'}
# Get Storage Collection
response = self.get_request(self.root_uri + storage_uri)
if response['ret'] is False:
return response
data = response['data']
# Collect Storage Subsystems
self.storage_subsystems_uris = [i['@odata.id'] for i in response['data'].get('Members', [])]
if not self.storage_subsystems_uris:
return {
'ret': False,
'msg': "StorageCollection's Members array is either empty or missing"}
# Matching Storage Subsystem ID with user input
self.storage_subsystem_uri = ""
for storage_subsystem_uri in self.storage_subsystems_uris:
if storage_subsystem_uri.split("/")[-2] == storage_subsystem_id:
self.storage_subsystem_uri = storage_subsystem_uri
if not self.storage_subsystem_uri:
return {
'ret': False,
'msg': "Provided Storage Subsystem ID %s does not exist on the server" % storage_subsystem_id}
# Get Volume Collection
response = self.get_request(self.root_uri + self.storage_subsystem_uri)
if response['ret'] is False:
return response
data = response['data']
response = self.get_request(self.root_uri + data['Volumes']['@odata.id'])
if response['ret'] is False:
return response
data = response['data']
# Collect Volumes
self.volume_uris = [i['@odata.id'] for i in response['data'].get('Members', [])]
if not self.volume_uris:
return {
'ret': True, 'changed': False,
'msg': "VolumeCollection's Members array is either empty or missing"}
# Delete each volume
for volume in self.volume_uris:
if volume.split("/")[-1] in volume_ids:
response = self.delete_request(self.root_uri + volume)
if response['ret'] is False:
return response
return {'ret': True, 'changed': True,
'msg': "The following volumes were deleted: %s" % str(volume_ids)}