Introduce Device class to factorize common methods
- Factorize common methods between System, Chassis, Manager.
This commit is contained in:
parent
ebf968b4a4
commit
983720d444
@ -6,12 +6,12 @@ from __future__ import print_function
|
|||||||
from __future__ import division
|
from __future__ import division
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from future import standard_library
|
from future import standard_library
|
||||||
standard_library.install_aliases()
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import redfish
|
import redfish
|
||||||
|
standard_library.install_aliases()
|
||||||
|
|
||||||
# Get $HOME environment.
|
# Get $HOME environment.
|
||||||
HOME = os.getenv('HOME')
|
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("Redfish API version : {} \n".format(remote_mgmt.get_api_version()))
|
||||||
print("UUID : {} \n".format(remote_mgmt.Root.get_api_UUID()))
|
print("UUID : {} \n".format(remote_mgmt.Root.get_api_UUID()))
|
||||||
print("System 1 :\n")
|
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("System 2 :\n")
|
||||||
print("Bios version : {}\n".format(remote_mgmt.Systems.systems_dict["2"].get_parameter("SerialNumber")))
|
print("Bios version : {}\n".format(
|
||||||
#print remoteMgmt.get_api_link_to_server()
|
remote_mgmt.Systems.systems_dict["2"].get_parameter("SerialNumber")))
|
||||||
|
118
redfish/types.py
118
redfish/types.py
@ -18,6 +18,8 @@ from . import mapping
|
|||||||
from . import exception
|
from . import exception
|
||||||
standard_library.install_aliases()
|
standard_library.install_aliases()
|
||||||
|
|
||||||
|
standard_library.install_aliases()
|
||||||
|
|
||||||
# Global variable
|
# Global variable
|
||||||
|
|
||||||
|
|
||||||
@ -155,12 +157,54 @@ class BaseCollection(Base):
|
|||||||
config.logger.debug(self.links)
|
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 Root(Base):
|
||||||
'''Class to manage redfish Root data.'''
|
'''Class to manage redfish Root data.'''
|
||||||
def get_api_version(self):
|
def get_api_version(self):
|
||||||
'''Return api version.
|
'''Return api version.
|
||||||
|
|
||||||
:returns: string -- version
|
:returns: api version
|
||||||
|
:rtype: string
|
||||||
:raises: AttributeError
|
:raises: AttributeError
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -174,28 +218,21 @@ class Root(Base):
|
|||||||
return(version)
|
return(version)
|
||||||
|
|
||||||
def get_api_UUID(self):
|
def get_api_UUID(self):
|
||||||
'''Return UUID version.
|
'''Return api UUID.
|
||||||
|
|
||||||
:returns: string -- UUID
|
:returns: api UUID
|
||||||
|
:rtype: string
|
||||||
|
|
||||||
'''
|
'''
|
||||||
return self.data.UUID
|
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 SessionService(Base):
|
||||||
'''Class to manage redfish SessionService data.'''
|
'''Class to manage redfish SessionService data.'''
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Managers(Base):
|
class Managers(Device):
|
||||||
'''Class to manage redfish Managers.'''
|
'''Class to manage redfish Managers.'''
|
||||||
def __init__(self, url, connection_parameters):
|
def __init__(self, url, connection_parameters):
|
||||||
super(Managers, self).__init__(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
|
# This is the case with the mockup for manager 2 and 3
|
||||||
return "Not available"
|
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):
|
def get_managed_chassis(self):
|
||||||
'''Get managed chassis ids by the manager
|
'''Get managed chassis ids by the manager
|
||||||
|
|
||||||
@ -331,7 +335,7 @@ class ManagersCollection(BaseCollection):
|
|||||||
self.managers_dict[index.group(1)] = Managers(link, connection_parameters)
|
self.managers_dict[index.group(1)] = Managers(link, connection_parameters)
|
||||||
|
|
||||||
|
|
||||||
class Systems(Base):
|
class Systems(Device):
|
||||||
'''Class to manage redfish Systems data.'''
|
'''Class to manage redfish Systems data.'''
|
||||||
# TODO : Need to discuss with Bruno the required method.
|
# TODO : Need to discuss with Bruno the required method.
|
||||||
# Also to check with the ironic driver requirement.
|
# Also to check with the ironic driver requirement.
|
||||||
@ -366,32 +370,26 @@ class Systems(Base):
|
|||||||
def get_bios_version(self):
|
def get_bios_version(self):
|
||||||
'''Get bios version of the system.
|
'''Get bios version of the system.
|
||||||
|
|
||||||
:returns: string -- bios version
|
:returns: bios version or "Not available"
|
||||||
|
:rtype: string
|
||||||
|
|
||||||
'''
|
'''
|
||||||
try:
|
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
|
return self.data.BiosVersion
|
||||||
|
except AttributeError:
|
||||||
|
return "Not available"
|
||||||
|
|
||||||
def get_serial_number(self):
|
def get_serial_number(self):
|
||||||
'''Get serial number of the system.
|
'''Get serial number of the system.
|
||||||
|
|
||||||
:returns: string -- serial number
|
:returns: serial number or "Not available"
|
||||||
|
:rtype: string
|
||||||
|
|
||||||
'''
|
'''
|
||||||
try:
|
try:
|
||||||
# Returned by proliant
|
|
||||||
return self.data.SerialNumber
|
return self.data.SerialNumber
|
||||||
except:
|
except AttributeError:
|
||||||
# Returned by mockup.
|
return "Not available"
|
||||||
# Hopefully this kind of discrepencies will be fixed with
|
|
||||||
# Redfish 1.0 (August)
|
|
||||||
return ''
|
|
||||||
|
|
||||||
def get_power(self):
|
def get_power(self):
|
||||||
'''Get power status of the system.
|
'''Get power status of the system.
|
||||||
|
Loading…
Reference in New Issue
Block a user