Feat/add GetChassisInventory to Chassis category of redfish_facts (#54269)

* Implement get_chassis_inventory() in redfish_utils

* Add GetChassisInventory command to redfish_facts
This commit is contained in:
Xander Madsen 2019-05-02 11:00:43 -04:00 committed by John R Barker
parent 2307797a76
commit 3cebb79328
2 changed files with 35 additions and 1 deletions

View file

@ -967,6 +967,30 @@ class RedfishUtils(object):
return response return response
return {'ret': True, 'changed': True, 'msg': "Modified BIOS attribute"} return {'ret': True, 'changed': True, 'msg': "Modified BIOS attribute"}
def get_chassis_inventory(self):
result = {}
chassis_results = []
# Get these entries, but does not fail if not found
properties = ['ChassisType', 'PartNumber', 'AssetTag',
'Manufacturer', 'IndicatorLED', 'SerialNumber', 'Model']
# Go through list
for chassis_uri in self.chassis_uri_list:
response = self.get_request(self.root_uri + chassis_uri)
if response['ret'] is False:
return response
result['ret'] = True
data = response['data']
chassis_result = {}
for property in properties:
if property in data:
chassis_result[property] = data[property]
chassis_results.append(chassis_result)
result["entries"] = chassis_results
return result
def get_fan_inventory(self): def get_fan_inventory(self):
result = {} result = {}
fan_results = [] fan_results = []

View file

@ -137,6 +137,14 @@ EXAMPLES = '''
username: "{{ username }}" username: "{{ username }}"
password: "{{ password }}" password: "{{ password }}"
- name: Get chassis inventory
redfish_facts:
category: Chassis
command: GetChassisInventory
baseuri: "{{ baseuri }}"
username: "{{ username }}"
password: "{{ password }}"
- name: Get all information available in the Manager category - name: Get all information available in the Manager category
redfish_facts: redfish_facts:
category: Manager category: Manager
@ -178,7 +186,7 @@ CATEGORY_COMMANDS_ALL = {
"GetMemoryInventory", "GetNicInventory", "GetMemoryInventory", "GetNicInventory",
"GetStorageControllerInventory", "GetDiskInventory", "GetStorageControllerInventory", "GetDiskInventory",
"GetBiosAttributes", "GetBootOrder", "GetBootOverride"], "GetBiosAttributes", "GetBootOrder", "GetBootOverride"],
"Chassis": ["GetFanInventory", "GetPsuInventory", "GetChassisPower", "GetChassisThermals"], "Chassis": ["GetFanInventory", "GetPsuInventory", "GetChassisPower", "GetChassisThermals", "GetChassisInventory"],
"Accounts": ["ListUsers"], "Accounts": ["ListUsers"],
"Update": ["GetFirmwareInventory", "GetFirmwareUpdateCapabilities"], "Update": ["GetFirmwareInventory", "GetFirmwareUpdateCapabilities"],
"Manager": ["GetManagerNicInventory", "GetLogs"], "Manager": ["GetManagerNicInventory", "GetLogs"],
@ -293,6 +301,8 @@ def main():
result["thermals"] = rf_utils.get_chassis_thermals() result["thermals"] = rf_utils.get_chassis_thermals()
elif command == "GetChassisPower": elif command == "GetChassisPower":
result["chassis_power"] = rf_utils.get_chassis_power() result["chassis_power"] = rf_utils.get_chassis_power()
elif command == "GetChassisInventory":
result["chassis"] = rf_utils.get_chassis_inventory()
elif category == "Accounts": elif category == "Accounts":
# execute only if we find an Account service resource # execute only if we find an Account service resource