Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix redfish_facts Storage command GetStorageControllerInventory - SimpleStorage not found #52928

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
49 changes: 28 additions & 21 deletions lib/ansible/module_utils/redfish_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,49 +280,56 @@ def get_storage_controller_inventory(self):
controller_list = []
controller_results = []
# Get these entries, but does not fail if not found
properties = ['Name', 'Status']
properties = ['CacheSummary', 'FirmwareVersion', 'Identifiers',
'Location', 'Manufacturer', 'Model', 'Name',
'PartNumber', 'SerialNumber', 'SpeedGbps', 'Status']
key = "StorageControllers"

# Find Storage service
response = self.get_request(self.root_uri + self.systems_uri)
if response['ret'] is False:
return response
data = response['data']

if 'SimpleStorage' not in data:
return {'ret': False, 'msg': "SimpleStorage resource not found"}
if 'Storage' not in data:
return {'ret': False, 'msg': "Storage resource not found"}

# Get a list of all storage controllers and build respective URIs
storage_uri = data["SimpleStorage"]["@odata.id"]
storage_uri = data['Storage']["@odata.id"]
response = self.get_request(self.root_uri + storage_uri)
if response['ret'] is False:
return response
result['ret'] = True
data = response['data']

for controller in data[u'Members']:
controller_list.append(controller[u'@odata.id'])

for c in controller_list:
controller = {}
uri = self.root_uri + c
response = self.get_request(uri)
if response['ret'] is False:
return response
data = response['data']
# Loop through Members and their StorageControllers
# and gather properties from each StorageController
if data[u'Members']:
for storage_member in data[u'Members']:
storage_member_uri = storage_member[u'@odata.id']
response = self.get_request(self.root_uri + storage_member_uri)
data = response['data']

for property in properties:
if property in data:
controller[property] = data[property]
controller_results.append(controller)
result["entries"] = controller_results
return result
if key in data:
controller_list = data[key]
for controller in controller_list:
controller_result = {}
for property in properties:
if property in controller:
controller_result[property] = controller[property]
controller_results.append(controller_result)
result['entries'] = controller_results
return result
else:
return {'ret': False, 'msg': "Storage resource not found"}

def get_disk_inventory(self):
result = {}
controller_list = []
disk_results = []
# Get these entries, but does not fail if not found
properties = ['Name', 'Manufacturer', 'Model', 'Status', 'CapacityBytes']
properties = ['Name', 'Manufacturer', 'Model', 'Status',
'CapacityBytes']

# Find Storage service
response = self.get_request(self.root_uri + self.systems_uri)
Expand Down