diff --git a/examples/simple-simulator.py b/examples/simple-simulator.py index b431d67..3fd9e3a 100644 --- a/examples/simple-simulator.py +++ b/examples/simple-simulator.py @@ -6,12 +6,12 @@ from __future__ import print_function from __future__ import division from __future__ import absolute_import from future import standard_library -standard_library.install_aliases() import os import sys import json import redfish +standard_library.install_aliases() # Get $HOME environment. HOME = os.getenv('HOME') @@ -49,7 +49,8 @@ except redfish.exception.RedfishException as e: print("Redfish API version : {} \n".format(remote_mgmt.get_api_version())) print("UUID : {} \n".format(remote_mgmt.Root.get_api_UUID())) print("System 1 :\n") -print("Bios version : {}\n".format(remote_mgmt.Systems.systems_dict["1"].get_bios_version())) +print("Bios version : {}\n".format( + remote_mgmt.Systems.systems_dict["1"].get_bios_version())) print("System 2 :\n") -print("Bios version : {}\n".format(remote_mgmt.Systems.systems_dict["2"].get_parameter("SerialNumber"))) -#print remoteMgmt.get_api_link_to_server() +print("Bios version : {}\n".format( + remote_mgmt.Systems.systems_dict["2"].get_parameter("SerialNumber"))) diff --git a/redfish/types.py b/redfish/types.py index 48ea32a..9c8aebe 100644 --- a/redfish/types.py +++ b/redfish/types.py @@ -18,6 +18,8 @@ from . import mapping from . import exception standard_library.install_aliases() +standard_library.install_aliases() + # Global variable @@ -155,12 +157,54 @@ class BaseCollection(Base): config.logger.debug(self.links) +class Device(Base): + '''Abstract class to add common methods between devices + (Chassis, Servers, System). + ''' + def get_uuid(self): + '''Get device uuid + + :returns: device uuid or "Not available" + :rtype: string + + ''' + try: + return self.data.UUID + except AttributeError: + return "Not available" + + def get_status(self): + '''Get device status + + :returns: device status or "Not available" + :rtype: string + + ''' + try: + return self.data.Status.State + except AttributeError: + return "Not available" + + def get_type(self): + '''Get device type + + :returns: device type or "Not available" + :rtype: string + + ''' + try: + return self.data.SystemType + except AttributeError: + return "Not available" + + class Root(Base): '''Class to manage redfish Root data.''' def get_api_version(self): '''Return api version. - :returns: string -- version + :returns: api version + :rtype: string :raises: AttributeError ''' @@ -174,28 +218,21 @@ class Root(Base): return(version) def get_api_UUID(self): - '''Return UUID version. + '''Return api UUID. - :returns: string -- UUID + :returns: api UUID + :rtype: string ''' return self.data.UUID - def get_api_link_to_server(self): - '''Return api link to server. - - :returns: string -- path - - ''' - return getattr(self.root.Links.Systems, '@odata.id') - class SessionService(Base): '''Class to manage redfish SessionService data.''' pass -class Managers(Base): +class Managers(Device): '''Class to manage redfish Managers.''' def __init__(self, url, connection_parameters): super(Managers, self).__init__(url, connection_parameters) @@ -233,39 +270,6 @@ class Managers(Base): # 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" - def get_managed_chassis(self): '''Get managed chassis ids by the manager @@ -331,7 +335,7 @@ class ManagersCollection(BaseCollection): self.managers_dict[index.group(1)] = Managers(link, connection_parameters) -class Systems(Base): +class Systems(Device): '''Class to manage redfish Systems data.''' # TODO : Need to discuss with Bruno the required method. # Also to check with the ironic driver requirement. @@ -366,32 +370,26 @@ class Systems(Base): def get_bios_version(self): '''Get bios version of the system. - :returns: string -- bios version + :returns: bios version or "Not available" + :rtype: string ''' try: - # Returned by proliant - return self.data.Bios.Current.VersionString - except: - # Returned by mockup. - # Hopefully this kind of discrepencies will be fixed with - # Redfish 1.0 (August) return self.data.BiosVersion + except AttributeError: + return "Not available" def get_serial_number(self): '''Get serial number of the system. - :returns: string -- serial number + :returns: serial number or "Not available" + :rtype: string ''' try: - # Returned by proliant return self.data.SerialNumber - except: - # Returned by mockup. - # Hopefully this kind of discrepencies will be fixed with - # Redfish 1.0 (August) - return '' + except AttributeError: + return "Not available" def get_power(self): '''Get power status of the system.