baremetal node: 'error' is a failed state
For baremetal.wait_for_provision_state(), if abort_on_failed_state is True, we need to abort if the node goes into the 'error' provision state (which happens if a failure occurs while trying to delete the BM node). Change-Id: I6f628787dcf458ff9149dbb3502e7beeded70d9e Story: #2006860
This commit is contained in:
parent
733ea50f24
commit
3c6dae3a65
|
@ -487,7 +487,8 @@ class Node(_common.ListMixin, resource.Resource):
|
|||
elif not abort_on_failed_state:
|
||||
return False
|
||||
|
||||
if self.provision_state.endswith(' failed'):
|
||||
if (self.provision_state.endswith(' failed') or
|
||||
self.provision_state == 'error'):
|
||||
raise exceptions.ResourceFailure(
|
||||
"Node %(node)s reached failure state \"%(state)s\"; "
|
||||
"the last error is %(error)s" %
|
||||
|
|
|
@ -183,6 +183,18 @@ class TestNodeWaitForProvisionState(base.TestCase):
|
|||
self.node.wait_for_provision_state,
|
||||
self.session, 'manageable')
|
||||
|
||||
def test_failure_error(self, mock_fetch):
|
||||
def _get_side_effect(_self, session):
|
||||
self.node.provision_state = 'error'
|
||||
self.assertIs(session, self.session)
|
||||
|
||||
mock_fetch.side_effect = _get_side_effect
|
||||
|
||||
self.assertRaisesRegex(exceptions.ResourceFailure,
|
||||
'failure state "error"',
|
||||
self.node.wait_for_provision_state,
|
||||
self.session, 'manageable')
|
||||
|
||||
def test_enroll_as_failure(self, mock_fetch):
|
||||
def _get_side_effect(_self, session):
|
||||
self.node.provision_state = 'enroll'
|
||||
|
|
Loading…
Reference in New Issue