diff --git a/redfish-client/templates/system_info.template b/redfish-client/templates/system_info.template index f80a8e8..60a8cfe 100644 --- a/redfish-client/templates/system_info.template +++ b/redfish-client/templates/system_info.template @@ -8,8 +8,17 @@ Systems information : System id {{ system_index }}: UUID : {{ system.get_uuid() }} Type : {{ system.get_type() }} +Manufacturer : {{ system.get_manufacturer() }} +Model : {{ system.get_model() }} +SKU : {{ system.get_sku() }} +Serial : {{ system.get_serial_number() }} +Hostname : {{ system.get_hostname() }} Bios version : {{ system.get_bios_version() }} State : {{ system.get_status() }} +Power : {{ system.get_power() }} +Description : {{ system.get_description() }} +Chassis : {{ system.get_chassis() | join(', ') }} +Managers : {{ system.get_managers() | join(', ') }} {# Ethernet Interface : {%- if system.ethernet_interfaces_collection %} diff --git a/redfish/types.py b/redfish/types.py index 9c8aebe..99df185 100644 --- a/redfish/types.py +++ b/redfish/types.py @@ -177,11 +177,11 @@ class Device(Base): '''Get device status :returns: device status or "Not available" - :rtype: string + :rtype: dict ''' try: - return self.data.Status.State + return self.data.Status except AttributeError: return "Not available" @@ -197,6 +197,78 @@ class Device(Base): except AttributeError: return "Not available" + def get_model(self): + '''Get device model + + :returns: device model or "Not available" + :rtype: string + + ''' + try: + return self.data.Model + except AttributeError: + return "Not available" + + def get_manufacturer(self): + '''Get device manufacturer + + :returns: device manufacturer or "Not available" + :rtype: string + + ''' + try: + return self.data.Manufacturer + except AttributeError: + return "Not available" + + def get_serial_number(self): + '''Get serial number of the device. + + :returns: serial number or "Not available" + :rtype: string + + ''' + try: + return self.data.SerialNumber + except AttributeError: + return "Not available" + + def get_asset_tag(self): + '''Get asset tag of the device. + + :returns: asset tag or "Not available" + :rtype: string + + ''' + try: + return self.data.AssetTag + except AttributeError: + return "Not available" + + def get_sku(self): + '''Get sku number of the device. + + :returns: sku number or "Not available" + :rtype: string + + ''' + try: + return self.data.SKU + except AttributeError: + return "Not available" + + def get_part_number(self): + '''Get part number of the device. + + :returns: part number or "Not available" + :rtype: string + + ''' + try: + return self.data.PartNumber + except AttributeError: + return "Not available" + class Root(Base): '''Class to manage redfish Root data.''' @@ -273,7 +345,8 @@ class Managers(Device): def get_managed_chassis(self): '''Get managed chassis ids by the manager - :returns: list -- chassis ids or "Not available" + :returns: chassis ids or "Not available" + :rtype: list ''' chassis_list = [] @@ -290,7 +363,8 @@ class Managers(Device): def get_managed_systems(self): '''Get managed systems ids by the manager - :returns: list -- chassis ids or "Not available" + :returns: systems ids or "Not available" + :rtype: list ''' systems_list = [] @@ -298,7 +372,9 @@ class Managers(Device): try: for systems in links.ManagerForServers: - result = re.search(r'Systems/(\w+)', systems[mapping.redfish_mapper.map_links_ref(systems)]) + result = re.search( + r'Systems/(\w+)', + systems[mapping.redfish_mapper.map_links_ref(systems)]) systems_list.append(result.group(1)) return systems_list except AttributeError: @@ -370,7 +446,7 @@ class Systems(Device): def get_bios_version(self): '''Get bios version of the system. - :returns: bios version or "Not available" + :returns: bios version or "Not available" :rtype: string ''' @@ -379,28 +455,93 @@ class Systems(Device): except AttributeError: return "Not available" - def get_serial_number(self): - '''Get serial number of the system. + def get_hostname(self): + '''Get hostname of the system. - :returns: serial number or "Not available" + :returns: hostname or "Not available" :rtype: string ''' try: - return self.data.SerialNumber + return self.data.HostName + except AttributeError: + return "Not available" + + def get_indicatorled(self): + '''Get indicatorled of the system. + + :returns: indicatorled status or "Not available" + :rtype: string + + ''' + try: + return self.data.IndicatorLED except AttributeError: return "Not available" def get_power(self): '''Get power status of the system. - :returns: string -- power status or NULL if there is an issue + :returns: system power state or "Not available" + :rtype: string ''' try: - return self.data.Power - except: - return '' + return self.data.PowerState + except AttributeError: + return "Not available" + + def get_description(self): + '''Get description of the system. + + :returns: system description or "Not available" + :rtype: string + + ''' + try: + return self.data.Description + except AttributeError: + return "Not available" + + def get_chassis(self): + '''Get chassis ids used by the system + + :returns: chassis ids or "Not available" + :rtype: list + + ''' + chassis_list = [] + links = getattr(self.data, mapping.redfish_mapper.map_links(self.data)) + + try: + for chassis in links.Chassis: + result = re.search( + r'Chassis/(\w+)', + chassis[mapping.redfish_mapper.map_links_ref(chassis)]) + chassis_list.append(result.group(1)) + return chassis_list + except AttributeError: + return "Not available" + + def get_managers(self): + '''Get manager ids used by the system + + :returns: managers ids or "Not available" + :rtype: list + + ''' + managers_list = [] + links = getattr(self.data, mapping.redfish_mapper.map_links(self.data)) + + try: + for manager in links.ManagedBy: + result = re.search( + r'Managers/(\w+)', + manager[mapping.redfish_mapper.map_links_ref(manager)]) + managers_list.append(result.group(1)) + return managers_list + except AttributeError: + return "Not available" def set_parameter_json(self, value): '''Generic function to set any system parameter using json structure