Add Thermal, Power classes and review get_type()

This commit is contained in:
Uggla 2016-04-04 00:05:10 +02:00
parent a287469ff2
commit d940d11af4
2 changed files with 97 additions and 22 deletions
redfish-client/templates
redfish

@ -8,12 +8,31 @@ Chassis information :
Chassis id {{ chassis_index }}:
Manufacturer : {{ chassis.get_manufacturer() }}
Model : {{ chassis.get_model() }}
Chassis Type : {{ chassis.get_chassis_type() }}
Chassis Type : {{ chassis.get_type() }}
PartNumber : {{ chassis.get_part_number() }}
SKU : {{ chassis.get_sku() }}
Serial : {{ chassis.get_serial_number() }}
AssetTag : {{ chassis.get_asset_tag() }}
Status : State : {{ chassis.get_status().Health }} / Health : {{ chassis.get_status().Health }}
{%- if chassis.thermal %}
Temperatures :
{%- if chassis.thermal.get_temperatures() == 'Not available' %}
Not available
{%- else %}
{%- for sensor, temp in chassis.thermal.get_temperatures().items() | sort %}
{{ sensor }} : {{ temp }}
{%- endfor %}
{%- endif %}
Fans :
{%- if chassis.thermal.get_fans() == 'Not available' %}
Not available
{%- else %}
{%- for fan, rpm in chassis.thermal.get_fans().items() | sort %}
{{ fan }} : {{ rpm }}
{%- endfor %}
{%- endif %}
{%- endif %}
{#
Hostname : {{ system.get_hostname() }}
Bios version : {{ system.get_bios_version() }}

@ -185,18 +185,6 @@ class Device(Base):
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"
def get_model(self):
'''Get device model
@ -329,6 +317,18 @@ class Managers(Device):
# This means we don't have EthernetInterfaces
self.ethernet_interfaces_collection = None
def get_type(self):
'''Get manager type
:returns: manager type or "Not available"
:rtype: string
'''
try:
return self.data.ManagerType
except AttributeError:
return "Not available"
def get_firmware_version(self):
'''Get firmware version of the manager
@ -566,6 +566,18 @@ class Systems(Device):
except AttributeError:
return "Not available"
def get_type(self):
'''Get system type
:returns: system type or "Not available"
:rtype: string
'''
try:
return self.data.SystemType
except AttributeError:
return "Not available"
def get_chassis(self):
'''Get chassis ids used by the system
@ -870,15 +882,19 @@ class Chassis(Device):
'''Class constructor'''
super(Chassis, self).__init__(url, connection_parameters)
# try:
# self.ethernet_interfaces_collection = \
# EthernetInterfacesCollection(
# self.get_link_url('EthernetInterfaces'),
# connection_parameters)
# except AttributeError:
# # This means we don't have EthernetInterfaces
# self.ethernet_interfaces_collection = None
def get_chassis_type(self):
try:
self.thermal = Thermal(self.get_link_url('Thermal'),
connection_parameters)
except AttributeError:
self.thermal = None
try:
self.power = Power(self.get_link_url('Power'),
connection_parameters)
except AttributeError:
self.Power = None
def get_type(self):
'''Get chassis type
:returns: chassis type or "Not available"
@ -889,3 +905,43 @@ class Chassis(Device):
return self.data.ChassisType
except AttributeError:
return "Not available"
class Thermal(Base):
'''Class to manage redfish Thermal data.'''
def get_temperatures(self):
'''Get chassis sensors name and temparature
:returns: chassis sensor and temperature
:rtype: dict
'''
temperatures = {}
try:
for sensor in self.data.Temperatures:
temperatures[sensor.Name] = sensor.ReadingCelsius
return temperatures
except AttributeError:
return "Not available"
def get_fans(self):
'''Get chassis fan name and rpm
:returns: chassis fan and rpm
:rtype: dict
'''
fans = {}
try:
for fan in self.data.Fans:
fans[fan.FanName] = fan.ReadingRPM
return fans
except AttributeError:
return "Not available"
class Power(Base):
'''Class to manage redfish Power data.'''
pass