diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-12-04 14:37:10 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-12-04 14:37:11 +0000 |
commit | 9a22d21226064bc702c7a5c1c39ee70e378df754 (patch) | |
tree | aec216f62c1f9d3570eeb3210306e13e75f6db1b | |
parent | d7bc83d8ad40c89d1838489554019b38c73d7e72 (diff) | |
parent | 5f8c16887455b6228ca8eec4a600c06c696fb334 (diff) | |
download | heat-9a22d21226064bc702c7a5c1c39ee70e378df754.tar.gz |
Merge "Correct reset_state_on_error() handling" into stable/kilo
-rwxr-xr-x | heat/engine/stack.py | 9 | ||||
-rw-r--r-- | heat/tests/test_stack.py | 23 |
2 files changed, 16 insertions, 16 deletions
diff --git a/heat/engine/stack.py b/heat/engine/stack.py index 81e6865d2..225dbbdee 100755 --- a/heat/engine/stack.py +++ b/heat/engine/stack.py @@ -75,9 +75,11 @@ def reset_state_on_error(func): LOG.error(_LE('Unexpected exception in %(func)s: %(msg)s'), {'func': func.__name__, 'msg': errmsg}) finally: - if stack.state == stack.IN_PROGRESS: - stack.set_state(stack.action, stack.FAILED, errmsg) - assert errmsg is not None, "Returned while IN_PROGRESS" + if stack.status == stack.IN_PROGRESS: + msg = _("Unexpected returning while IN_PROGRESS.") + stack.state_set(stack.action, stack.FAILED, + errmsg if errmsg is not None else msg) + assert errmsg is not None, "Returned while IN_PROGRESS." return handle_exceptions @@ -1273,7 +1275,6 @@ class Stack(collections.Mapping): sus_task(timeout=self.timeout_secs()) @profiler.trace('Stack.delete_snapshot', hide_args=False) - @reset_state_on_error def delete_snapshot(self, snapshot): '''Remove a snapshot from the backends.''' for name, rsrc in six.iteritems(self.resources): diff --git a/heat/tests/test_stack.py b/heat/tests/test_stack.py index 1b2c0ff2c..ec9534a95 100644 --- a/heat/tests/test_stack.py +++ b/heat/tests/test_stack.py @@ -1871,16 +1871,19 @@ class ResetStateOnErrorTest(common.HeatTestCase): (COMPLETE, IN_PROGRESS, FAILED) = range(3) action = 'something' - state = COMPLETE + status = COMPLETE + + def __init__(self): + self.state_set = mock.MagicMock() @stack.reset_state_on_error def raise_exception(self): - self.state = self.IN_PROGRESS + self.status = self.IN_PROGRESS raise ValueError('oops') @stack.reset_state_on_error def raise_exit_exception(self): - self.state = self.IN_PROGRESS + self.status = self.IN_PROGRESS raise BaseException('bye') @stack.reset_state_on_error @@ -1889,35 +1892,31 @@ class ResetStateOnErrorTest(common.HeatTestCase): @stack.reset_state_on_error def fail(self): - self.state = self.FAILED + self.status = self.FAILED return 'Hello world' def test_success(self): dummy = self.DummyStack() - dummy.set_state = mock.MagicMock() self.assertEqual('Hello world', dummy.succeed()) - self.assertFalse(dummy.set_state.called) + self.assertFalse(dummy.state_set.called) def test_failure(self): dummy = self.DummyStack() - dummy.set_state = mock.MagicMock() self.assertEqual('Hello world', dummy.fail()) - self.assertFalse(dummy.set_state.called) + self.assertFalse(dummy.state_set.called) def test_reset_state_exception(self): dummy = self.DummyStack() - dummy.set_state = mock.MagicMock() exc = self.assertRaises(ValueError, dummy.raise_exception) self.assertIn('oops', str(exc)) - self.assertTrue(dummy.set_state.called) + self.assertTrue(dummy.state_set.called) def test_reset_state_exit_exception(self): dummy = self.DummyStack() - dummy.set_state = mock.MagicMock() exc = self.assertRaises(BaseException, dummy.raise_exit_exception) self.assertIn('bye', str(exc)) - self.assertTrue(dummy.set_state.called) + self.assertTrue(dummy.state_set.called) |