Add status attribution to all resources
Change-Id: I6deee073fb906dccc52dafb4803dfb00e73a1757
This commit is contained in:
parent
50d8947ca4
commit
acc3dc8394
@ -16,6 +16,12 @@
|
||||
from sushy.resources import base
|
||||
|
||||
|
||||
class StatusField(base.CompositeField):
|
||||
state = base.Field('State')
|
||||
health = base.Field('Health')
|
||||
health_rollup = base.Field('HealthRollup')
|
||||
|
||||
|
||||
class Chassis(base.ResourceBase):
|
||||
identity = base.Field('Id', required=True)
|
||||
"""The chassis identity string"""
|
||||
@ -41,6 +47,9 @@ class Chassis(base.ResourceBase):
|
||||
sku = base.Field('SKU')
|
||||
"""The chassis stock-keeping unit"""
|
||||
|
||||
status = StatusField('Status')
|
||||
"""The chassis status"""
|
||||
|
||||
chassis_type = base.Field('ChassisType')
|
||||
"""The chassis type"""
|
||||
|
||||
|
@ -41,6 +41,12 @@ class ConnectedEntitiesField(rsd_base.FieldList):
|
||||
identifiers = IdentifiersField('Identifiers')
|
||||
|
||||
|
||||
class StatusField(base.CompositeField):
|
||||
state = base.Field('State')
|
||||
health = base.Field('Health')
|
||||
health_rollup = base.Field('HealthRollup')
|
||||
|
||||
|
||||
class Endpoint(base.ResourceBase):
|
||||
|
||||
connected_entities = ConnectedEntitiesField('ConnectedEntities')
|
||||
@ -67,6 +73,9 @@ class Endpoint(base.ResourceBase):
|
||||
redundancy = base.Field('Redundancy')
|
||||
"""The endpoint redundancy"""
|
||||
|
||||
status = StatusField('Status')
|
||||
"""The endpoint status"""
|
||||
|
||||
def __init__(self, connector, identity, redfish_version=None):
|
||||
"""A class representing an Endpoint
|
||||
|
||||
|
@ -28,6 +28,11 @@ class ZoneLinksField(base.CompositeField):
|
||||
adapter=utils.get_members_identities)
|
||||
|
||||
|
||||
class StatusField(base.CompositeField):
|
||||
state = base.Field('State')
|
||||
health = base.Field('Health')
|
||||
|
||||
|
||||
class Zone(base.ResourceBase):
|
||||
|
||||
description = base.Field('Description')
|
||||
@ -42,6 +47,9 @@ class Zone(base.ResourceBase):
|
||||
links = ZoneLinksField('Links')
|
||||
"""The zone links"""
|
||||
|
||||
status = StatusField('Status')
|
||||
"""The zone status"""
|
||||
|
||||
_endpoints = None # ref to contained endpoints
|
||||
|
||||
def __init__(self, connector, identity, redfish_version=None):
|
||||
|
@ -87,11 +87,8 @@ class BootField(base.CompositeField):
|
||||
|
||||
|
||||
class MemorySummaryField(base.CompositeField):
|
||||
health = base.Field(['Status', 'Health'])
|
||||
"""The overall health state of memory.
|
||||
|
||||
This signifies health state of memory along with its dependent resources.
|
||||
"""
|
||||
status = StatusField('Status')
|
||||
"""The memory status"""
|
||||
|
||||
size_gib = base.Field('TotalSystemMemoryGiB', adapter=int)
|
||||
"""The size of memory of the node in GiB.
|
||||
@ -102,8 +99,8 @@ class MemorySummaryField(base.CompositeField):
|
||||
|
||||
|
||||
class ProcessorSummaryField(base.CompositeField):
|
||||
health = base.Field(['Status', 'Health'])
|
||||
"""The overall health state of the node processors."""
|
||||
status = StatusField('Status')
|
||||
"""The processor status"""
|
||||
|
||||
count = base.Field('Count', adapter=int)
|
||||
"""The number of CPUs in the node."""
|
||||
|
@ -20,6 +20,12 @@ from sushy.resources import base
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StatusField(base.CompositeField):
|
||||
state = base.Field('State')
|
||||
health = base.Field('Health')
|
||||
health_rollup = base.Field('HealthRollup')
|
||||
|
||||
|
||||
class LogicalDrive(base.ResourceBase):
|
||||
|
||||
identity = base.Field('Id', required=True)
|
||||
@ -46,6 +52,9 @@ class LogicalDrive(base.ResourceBase):
|
||||
snapshot = base.Field('Snapshot')
|
||||
"""Type of drive replication. Yes - copy on write, No - disc clone"""
|
||||
|
||||
status = StatusField('Status')
|
||||
"""The logical drive status"""
|
||||
|
||||
def __init__(self, connector, identity, redfish_version=None):
|
||||
"""A class representing a LogicalDrive
|
||||
|
||||
|
@ -20,6 +20,12 @@ from sushy.resources import base
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StatusField(base.CompositeField):
|
||||
state = base.Field('State')
|
||||
health = base.Field('Health')
|
||||
health_rollup = base.Field('HealthRollup')
|
||||
|
||||
|
||||
class PhysicalDrive(base.ResourceBase):
|
||||
|
||||
identity = base.Field('Id', required=True)
|
||||
@ -46,6 +52,9 @@ class PhysicalDrive(base.ResourceBase):
|
||||
serial_number = base.Field('SerialNumber')
|
||||
"""The serial number for the physical drive"""
|
||||
|
||||
status = StatusField('Status')
|
||||
"""The physical drive status"""
|
||||
|
||||
def __init__(self, connector, identity, redfish_version=None):
|
||||
"""A class representing a PhysicalDrive
|
||||
|
||||
|
@ -45,6 +45,12 @@ class InitiatorsField(rsd_base.FieldList):
|
||||
iscsi = ISCSIInitiatorField('iSCSI')
|
||||
|
||||
|
||||
class StatusField(base.CompositeField):
|
||||
state = base.Field('State')
|
||||
health = base.Field('Health')
|
||||
health_rollup = base.Field('HealthRollup')
|
||||
|
||||
|
||||
class RemoteTarget(base.ResourceBase):
|
||||
|
||||
identity = base.Field('Id', required=True)
|
||||
@ -57,6 +63,9 @@ class RemoteTarget(base.ResourceBase):
|
||||
|
||||
initiators = InitiatorsField('Initiator')
|
||||
|
||||
status = StatusField('Status')
|
||||
"""The remote target status"""
|
||||
|
||||
def __init__(self, connector, identity, redfish_version=None):
|
||||
"""A class representing a RemoteTarget
|
||||
|
||||
|
@ -28,6 +28,7 @@ LOG = logging.getLogger(__name__)
|
||||
class StatusField(base.CompositeField):
|
||||
state = base.Field('State')
|
||||
health = base.Field('Health')
|
||||
health_rollup = base.Field('HealthRollup')
|
||||
|
||||
|
||||
class StorageService(base.ResourceBase):
|
||||
|
@ -8,7 +8,7 @@
|
||||
"Status": {
|
||||
"State": "Enabled",
|
||||
"Health": "OK",
|
||||
"HealthRollUp": "OK"
|
||||
"HealthRollup": "OK"
|
||||
},
|
||||
"EndpointProtocol": "PCIe",
|
||||
"Identifiers": [
|
||||
|
@ -8,6 +8,7 @@
|
||||
"Status": {
|
||||
"State": "Enabled",
|
||||
"Health": "OK",
|
||||
"HealthRollup": "OK"
|
||||
},
|
||||
"Type": "LVM",
|
||||
"Mode": "RAID0",
|
||||
|
@ -17,14 +17,16 @@
|
||||
"Model": "Multi-Core Intel(R) Xeon(R) processor 7xxx Series",
|
||||
"Status": {
|
||||
"State": "Enabled",
|
||||
"Health": "OK"
|
||||
"Health": "OK",
|
||||
"HealthRollup" : "OK"
|
||||
}
|
||||
},
|
||||
"Memory": {
|
||||
"TotalSystemMemoryGiB": 32,
|
||||
"Status": {
|
||||
"State": "Enabled",
|
||||
"Health": "OK"
|
||||
"Health": "OK",
|
||||
"HealthRollup" : "OK"
|
||||
}
|
||||
},
|
||||
"ComposedNodeState": "Allocated",
|
||||
|
@ -7,7 +7,8 @@
|
||||
"Description": "Storage Service",
|
||||
"Status": {
|
||||
"State": "Enabled",
|
||||
"Health": "OK"
|
||||
"Health": "OK",
|
||||
"HealthRollup": "OK"
|
||||
},
|
||||
"RemoteTargets": {
|
||||
"@odata.id": "/redfish/v1/Services/RSS1/Targets"
|
||||
@ -27,4 +28,4 @@
|
||||
],
|
||||
"Oem": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -47,6 +47,9 @@ class TestChassis(base.TestCase):
|
||||
self.assertEqual('e1c2d764-5c72', self.chassis_inst.sku)
|
||||
self.assertEqual('e1c2d764-5c72-36d6-9945-a78255edab51',
|
||||
self.chassis_inst.oem['Intel:RackScale']['UUID'])
|
||||
self.assertEqual('Enabled', self.chassis_inst.status.state)
|
||||
self.assertEqual('OK', self.chassis_inst.status.health)
|
||||
self.assertEqual('OK', self.chassis_inst.status.health_rollup)
|
||||
|
||||
|
||||
class TestChassisCollection(base.TestCase):
|
||||
|
@ -60,6 +60,9 @@ class EndpointTestCase(testtools.TestCase):
|
||||
self.assertEqual(
|
||||
'00000000-0000-0000-0000-000000000000',
|
||||
self.endpoint_inst.connected_entities[0].identifiers[0].name)
|
||||
self.assertEqual('Enabled', self.endpoint_inst.status.state)
|
||||
self.assertEqual('OK', self.endpoint_inst.status.health)
|
||||
self.assertEqual('OK', self.endpoint_inst.status.health_rollup)
|
||||
|
||||
|
||||
class EndpointCollectionTestCase(testtools.TestCase):
|
||||
|
@ -45,6 +45,8 @@ class ZoneTestCase(testtools.TestCase):
|
||||
'Endpoints/HostRootComplex1',
|
||||
'/redfish/v1/Fabrics/PCIe/Endpoints/NVMeDrivePF2'),
|
||||
self.zone_inst.links.endpoint_identities)
|
||||
self.assertEqual('Enabled', self.zone_inst.status.state)
|
||||
self.assertEqual('OK', self.zone_inst.status.health)
|
||||
|
||||
def test_get_endpoints(self):
|
||||
self.conn.get.return_value.json.reset_mock()
|
||||
|
@ -54,11 +54,18 @@ class NodeTestCase(testtools.TestCase):
|
||||
self.assertEqual('OK', self.node_inst.status.health)
|
||||
self.assertEqual('OK', self.node_inst.status.health_rollup)
|
||||
self.assertEqual(32, self.node_inst.memory_summary.size_gib)
|
||||
self.assertEqual('OK', self.node_inst.memory_summary.health)
|
||||
self.assertEqual('Enabled', self.node_inst.memory_summary.status.state)
|
||||
self.assertEqual('OK', self.node_inst.memory_summary.status.health)
|
||||
self.assertEqual(
|
||||
'OK', self.node_inst.memory_summary.status.health_rollup)
|
||||
self.assertEqual(2, self.node_inst.processor_summary.count)
|
||||
self.assertEqual('Multi-Core Intel(R) Xeon(R) processor 7xxx Series',
|
||||
self.node_inst.processor_summary.model)
|
||||
self.assertEqual('OK', self.node_inst.processor_summary.health)
|
||||
self.assertEqual(
|
||||
'Enabled', self.node_inst.processor_summary.status.state)
|
||||
self.assertEqual('OK', self.node_inst.processor_summary.status.health)
|
||||
self.assertEqual(
|
||||
'OK', self.node_inst.processor_summary.status.health_rollup)
|
||||
|
||||
def test__parse_attributes_missing_actions(self):
|
||||
self.node_inst.json.pop('Actions')
|
||||
@ -275,7 +282,32 @@ class NodeTestCase(testtools.TestCase):
|
||||
self.node_inst._parse_attributes()
|
||||
# | THEN |
|
||||
self.assertEqual(32, self.node_inst.memory_summary.size_gib)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.health)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.status.health)
|
||||
self.assertEqual('Enabled', self.node_inst.memory_summary.status.state)
|
||||
self.assertEqual(
|
||||
'OK', self.node_inst.memory_summary.status.health_rollup)
|
||||
|
||||
# | GIVEN |
|
||||
self.node_inst._json['Memory']['Status'].pop('State')
|
||||
# | WHEN |
|
||||
self.node_inst._parse_attributes()
|
||||
# | THEN |
|
||||
self.assertEqual(32, self.node_inst.memory_summary.size_gib)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.status.health)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.status.state)
|
||||
self.assertEqual(
|
||||
'OK', self.node_inst.memory_summary.status.health_rollup)
|
||||
|
||||
# | GIVEN |
|
||||
self.node_inst._json['Memory']['Status'].pop('HealthRollup')
|
||||
# | WHEN |
|
||||
self.node_inst._parse_attributes()
|
||||
# | THEN |
|
||||
self.assertEqual(32, self.node_inst.memory_summary.size_gib)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.status.health)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.status.state)
|
||||
self.assertEqual(
|
||||
None, self.node_inst.memory_summary.status.health_rollup)
|
||||
|
||||
# | GIVEN |
|
||||
self.node_inst._json['Memory'].pop('Status')
|
||||
@ -283,7 +315,7 @@ class NodeTestCase(testtools.TestCase):
|
||||
self.node_inst._parse_attributes()
|
||||
# | THEN |
|
||||
self.assertEqual(32, self.node_inst.memory_summary.size_gib)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.health)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.status)
|
||||
|
||||
# | GIVEN |
|
||||
self.node_inst._json['Memory'].pop('TotalSystemMemoryGiB')
|
||||
@ -291,7 +323,7 @@ class NodeTestCase(testtools.TestCase):
|
||||
self.node_inst._parse_attributes()
|
||||
# | THEN |
|
||||
self.assertEqual(None, self.node_inst.memory_summary.size_gib)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.health)
|
||||
self.assertEqual(None, self.node_inst.memory_summary.status)
|
||||
|
||||
# | GIVEN |
|
||||
self.node_inst._json.pop('Memory')
|
||||
|
@ -47,6 +47,7 @@ class StorageServiceTestCase(testtools.TestCase):
|
||||
self.assertEqual('Storage Service', self.storage_service_inst.name)
|
||||
self.assertEqual('Enabled', self.storage_service_inst.status.state)
|
||||
self.assertEqual('OK', self.storage_service_inst.status.health)
|
||||
self.assertEqual('OK', self.storage_service_inst.status.health_rollup)
|
||||
self.assertIsNone(self.storage_service_inst._logical_drives)
|
||||
self.assertIsNone(self.storage_service_inst._physical_drives)
|
||||
self.assertIsNone(self.storage_service_inst._remote_targets)
|
||||
|
Loading…
x
Reference in New Issue
Block a user