Add real-time status check to Lifecycle service
Change-Id: Ib24aeae85b8675b55f2cbc95cd67d62d051d7a24
This commit is contained in:
parent
910d573c30
commit
b957aeb454
@ -28,8 +28,8 @@ class ActionsField(base.CompositeField):
|
|||||||
class DellLCService(base.ResourceBase):
|
class DellLCService(base.ResourceBase):
|
||||||
|
|
||||||
_actions = ActionsField('Actions')
|
_actions = ActionsField('Actions')
|
||||||
_IDRAC_READY_STATUS_CODE = 200
|
_OK_STATUS_CODE = 200
|
||||||
_IDRAC_READY_STATUS = 'Ready'
|
_READY_STATUS = 'Ready'
|
||||||
identity = base.Field('Id', required=True)
|
identity = base.Field('Id', required=True)
|
||||||
|
|
||||||
def __init__(self, connector, identity, redfish_version=None,
|
def __init__(self, connector, identity, redfish_version=None,
|
||||||
@ -46,17 +46,34 @@ class DellLCService(base.ResourceBase):
|
|||||||
super(DellLCService, self).__init__(
|
super(DellLCService, self).__init__(
|
||||||
connector, identity, redfish_version, registries)
|
connector, identity, redfish_version, registries)
|
||||||
|
|
||||||
|
def _is_remote_service_api_status_ready(self, status_field):
|
||||||
|
"""Checks remote service status field
|
||||||
|
|
||||||
|
:param status_field: Status field to check, e.g., LCStatus, RTStatus
|
||||||
|
:returns: True if response returned and status field is Ready,
|
||||||
|
otherwise False.
|
||||||
|
"""
|
||||||
|
target_uri = self._actions.remote_service_api_status.target_uri
|
||||||
|
response = self._conn.post(target_uri, data={})
|
||||||
|
if response.status_code != self._OK_STATUS_CODE:
|
||||||
|
return False
|
||||||
|
data = response.json()
|
||||||
|
return data[status_field] == self._READY_STATUS
|
||||||
|
|
||||||
def is_idrac_ready(self):
|
def is_idrac_ready(self):
|
||||||
"""Indicates if the iDRAC is ready to accept commands.
|
"""Indicates if the iDRAC is ready to accept commands.
|
||||||
|
|
||||||
:returns: A boolean value True/False based on remote service api status
|
:returns: A boolean value True/False based on remote service api status
|
||||||
response.
|
response.
|
||||||
"""
|
"""
|
||||||
target_uri = self._actions.remote_service_api_status.target_uri
|
|
||||||
LOG.debug('Checking to see if the iDRAC is ready...')
|
LOG.debug('Checking to see if the iDRAC is ready...')
|
||||||
idrac_ready_response = self._conn.post(target_uri, data={})
|
return self._is_remote_service_api_status_ready('LCStatus')
|
||||||
if idrac_ready_response.status_code != self._IDRAC_READY_STATUS_CODE:
|
|
||||||
return False
|
def is_realtime_ready(self):
|
||||||
data = idrac_ready_response.json()
|
"""Indicates if real-time operations are ready to be accepted.
|
||||||
lc_status = data['LCStatus']
|
|
||||||
return lc_status == self._IDRAC_READY_STATUS
|
:returns: True if ready to accept real-time operations, otherwise
|
||||||
|
false.
|
||||||
|
"""
|
||||||
|
LOG.debug('Checking to see if the real-time operations are ready...')
|
||||||
|
return self._is_remote_service_api_status_ready('RTStatus')
|
||||||
|
@ -69,3 +69,35 @@ class DellLCServiceTestCase(BaseTestCase):
|
|||||||
idrac_ready_response = self.lifecycle_service.is_idrac_ready()
|
idrac_ready_response = self.lifecycle_service.is_idrac_ready()
|
||||||
self.conn.post.assert_called_once_with(target_uri, data={})
|
self.conn.post.assert_called_once_with(target_uri, data={})
|
||||||
self.assertFalse(idrac_ready_response)
|
self.assertFalse(idrac_ready_response)
|
||||||
|
|
||||||
|
def test_is_realtime_ready_true(self):
|
||||||
|
mock_response = self.conn.post.return_value
|
||||||
|
mock_response.status_code = 200
|
||||||
|
mock_response.json.return_value = {
|
||||||
|
"LCStatus": "Ready",
|
||||||
|
"RTStatus": "Ready",
|
||||||
|
"ServerStatus": "OutOfPOST",
|
||||||
|
"Status": "Ready"
|
||||||
|
}
|
||||||
|
|
||||||
|
self.assertTrue(self.lifecycle_service.is_realtime_ready())
|
||||||
|
target_uri = ('/redfish/v1/Dell/Managers/iDRAC.Embedded.1'
|
||||||
|
'/DellLCService'
|
||||||
|
'/Actions/DellLCService.GetRemoteServicesAPIStatus')
|
||||||
|
self.conn.post.assert_called_once_with(target_uri, data={})
|
||||||
|
|
||||||
|
def test_is_realtime_ready_false(self):
|
||||||
|
mock_response = self.conn.post.return_value
|
||||||
|
mock_response.status_code = 202
|
||||||
|
mock_response.json.return_value = {
|
||||||
|
"LCStatus": "Ready",
|
||||||
|
"RTStatus": "NotReady",
|
||||||
|
"ServerStatus": "OutOfPOST",
|
||||||
|
"Status": "NotReady"
|
||||||
|
}
|
||||||
|
|
||||||
|
self.assertFalse(self.lifecycle_service.is_realtime_ready())
|
||||||
|
target_uri = ('/redfish/v1/Dell/Managers/iDRAC.Embedded.1'
|
||||||
|
'/DellLCService'
|
||||||
|
'/Actions/DellLCService.GetRemoteServicesAPIStatus')
|
||||||
|
self.conn.post.assert_called_once_with(target_uri, data={})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user