1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Add GetFirmwareVersion command to redfish_info (#4900)

* Add GetManagerInventory command to redfish_info

Adding GetManagerInventory command to redfish_info, similar to
GetSystemInventory to report Manager specific information like:
- FirmwareVersion
- Model
- ManagerType

Fixes #4899

* Update changelogs/fragments/4899-add-GetManagerInventory-for-redfish_info.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Jacob Yundt 2022-06-30 14:35:35 -04:00 committed by GitHub
parent 674b1da8bf
commit 93dcd3f54d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 1 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- redfish_info - add ``GetManagerInventory`` to report list of Manager inventory information (https://github.com/ansible-collections/community.general/issues/4899).

View file

@ -3029,3 +3029,26 @@ class RedfishUtils(object):
if not result["entries"]: if not result["entries"]:
return {'ret': False, 'msg': "No HostInterface objects found"} return {'ret': False, 'msg': "No HostInterface objects found"}
return result return result
def get_manager_inventory(self, manager_uri):
result = {}
inventory = {}
# Get these entries, but does not fail if not found
properties = ['FirmwareVersion', 'ManagerType', 'Manufacturer', 'Model',
'PartNumber', 'PowerState', 'SerialNumber', 'Status', 'UUID']
response = self.get_request(self.root_uri + manager_uri)
if response['ret'] is False:
return response
result['ret'] = True
data = response['data']
for property in properties:
if property in data:
inventory[property] = data[property]
result["entries"] = inventory
return result
def get_multi_manager_inventory(self):
return self.aggregate_managers(self.get_manager_inventory)

View file

@ -277,6 +277,14 @@ EXAMPLES = '''
baseuri: "{{ baseuri }}" baseuri: "{{ baseuri }}"
username: "{{ username }}" username: "{{ username }}"
password: "{{ password }}" password: "{{ password }}"
- name: Get Manager Inventory
community.general.redfish_info:
category: Manager
command: GetManagerInventory
baseuri: "{{ baseuri }}"
username: "{{ username }}"
password: "{{ password }}"
''' '''
RETURN = ''' RETURN = '''
@ -301,7 +309,7 @@ CATEGORY_COMMANDS_ALL = {
"Sessions": ["GetSessions"], "Sessions": ["GetSessions"],
"Update": ["GetFirmwareInventory", "GetFirmwareUpdateCapabilities", "GetSoftwareInventory"], "Update": ["GetFirmwareInventory", "GetFirmwareUpdateCapabilities", "GetSoftwareInventory"],
"Manager": ["GetManagerNicInventory", "GetVirtualMedia", "GetLogs", "GetNetworkProtocols", "Manager": ["GetManagerNicInventory", "GetVirtualMedia", "GetLogs", "GetNetworkProtocols",
"GetHealthReport", "GetHostInterfaces"], "GetHealthReport", "GetHostInterfaces", "GetManagerInventory"],
} }
CATEGORY_COMMANDS_DEFAULT = { CATEGORY_COMMANDS_DEFAULT = {
@ -485,6 +493,8 @@ def main():
result["health_report"] = rf_utils.get_multi_manager_health_report() result["health_report"] = rf_utils.get_multi_manager_health_report()
elif command == "GetHostInterfaces": elif command == "GetHostInterfaces":
result["host_interfaces"] = rf_utils.get_hostinterfaces() result["host_interfaces"] = rf_utils.get_hostinterfaces()
elif command == "GetManagerInventory":
result["manager"] = rf_utils.get_multi_manager_inventory()
# Return data back # Return data back
module.exit_json(redfish_facts=result) module.exit_json(redfish_facts=result)