Merge "Set COMPLETE for failed resource if no update/replace"
This commit is contained in:
commit
fc8958fd76
@ -1400,6 +1400,12 @@ class Resource(status.ResourceStatus):
|
||||
prev_resource):
|
||||
if update_templ_func is not None:
|
||||
update_templ_func(persist=True)
|
||||
if self.status == self.FAILED:
|
||||
status_reason = _('Update status to COMPLETE for '
|
||||
'FAILED resource neither update '
|
||||
'nor replace.')
|
||||
self.state_set(self.action, self.COMPLETE,
|
||||
status_reason)
|
||||
return
|
||||
|
||||
if not self.stack.convergence:
|
||||
|
@ -500,6 +500,22 @@ class ResourceTest(common.HeatTestCase):
|
||||
self.assertFalse(res.needs_replace_failed.called)
|
||||
self.assertTrue(res.prepare_for_replace.called)
|
||||
|
||||
def test_no_update_or_replace_in_failed(self):
|
||||
res, utmpl = self._setup_resource_for_update(
|
||||
res_name='test_failed_res_no_update_or_replace')
|
||||
res.state_set(res.CREATE, res.FAILED)
|
||||
res.prepare_for_replace = mock.Mock()
|
||||
res.needs_replace_failed = mock.MagicMock(return_value=False)
|
||||
|
||||
scheduler.TaskRunner(res.update, res.t)()
|
||||
self.assertTrue(res.needs_replace_failed.called)
|
||||
self.assertFalse(res.prepare_for_replace.called)
|
||||
self.assertEqual((res.CREATE, res.COMPLETE), res.state)
|
||||
status_reason = _('Update status to COMPLETE for '
|
||||
'FAILED resource neither update '
|
||||
'nor replace.')
|
||||
self.assertEqual(status_reason, res.status_reason)
|
||||
|
||||
def test_update_replace_prepare_replace_error(self):
|
||||
# test if any error happened when prepare_for_replace,
|
||||
# whether the resource will go to FAILED
|
||||
|
Loading…
Reference in New Issue
Block a user