diff --git a/redfish-client/redfish-client.py b/redfish-client/redfish-client.py index ab99f1b..7529ba0 100755 --- a/redfish-client/redfish-client.py +++ b/redfish-client/redfish-client.py @@ -233,7 +233,7 @@ if __name__ == '__main__': simulator = False enforceSSL = True try: - print 'Gathering data from manager, please wait...' + print('Gathering data from manager, please wait...\n') # TODO : Add a rotating star showing program is running ? # Could be a nice exercice for learning python. :) logger.info('Gathering data from manager') @@ -249,8 +249,20 @@ if __name__ == '__main__': sys.stderr.write(str(e.advices)) sys.exit(1) - print('Redfish API version : %s \n' % remote_mgmt.get_api_version()) - print('Managers information :\n') + # Display manager information + # TODO : Use a templating system + print('Redfish API version : %s' % remote_mgmt.get_api_version()) + print(remote_mgmt.Root.get_name()) + print('\n') + print('Managers information :') + print('----------------------') + for manager_index in sorted(remote_mgmt.Managers.managers_dict): + manager = remote_mgmt.Managers.managers_dict[manager_index] + print('\nManager id {} :').format(manager_index) + print('UUID : {}').format(manager.get_uuid()) + print('Type : {}').format(manager.get_type()) + print('Firmware version : {}').format(manager.get_firmware_version()) + print('State : {}').format(manager.get_status()) diff --git a/redfish/types.py b/redfish/types.py index 9aa52d7..c8caca4 100644 --- a/redfish/types.py +++ b/redfish/types.py @@ -181,6 +181,17 @@ class Root(Base): ''' return getattr(self.root.Links.Systems, '@odata.id') + + def get_name(self): + '''Get root name + + :returns: string -- root name or "Not available" + + ''' + try: + return self.data.Name + except AttributeError: + return "Not available" class SessionService(Base): @@ -209,18 +220,51 @@ class Managers(Base): pass def get_firmware_version(self): - '''Get bios version of the system. + '''Get firmware version of the manager - :returns: string -- bios version + :returns: string -- bios version or "Not available" ''' try: - # Returned by proliant - return self.data.FirmwareVersion - except: - # Returned by mockup. - # Hopefully this kind of discrepencies will be fixed with Redfish 1.0 (August) return self.data.FirmwareVersion + except AttributeError: + # We are here because the attribute could be not defined. + # This is the case with the mockup for manager 2 and 3 + return "Not available" + + def get_type(self): + '''Get manager type + + :returns: string -- manager type or "Not available" + + ''' + try: + return self.data.ManagerType + except AttributeError: + return "Not available" + + def get_uuid(self): + '''Get manager type + + :returns: string -- manager uuid or "Not available" + + ''' + try: + return self.data.UUID + except AttributeError: + return "Not available" + + def get_status(self): + '''Get manager status + + :returns: string -- manager status or "Not available" + + ''' + try: + return self.data.Status.State + except AttributeError: + return "Not available" + class ManagersCollection(BaseCollection):