summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-12-04 14:37:10 +0000
committerGerrit Code Review <review@openstack.org>2015-12-04 14:37:11 +0000
commit9a22d21226064bc702c7a5c1c39ee70e378df754 (patch)
treeaec216f62c1f9d3570eeb3210306e13e75f6db1b
parentd7bc83d8ad40c89d1838489554019b38c73d7e72 (diff)
parent5f8c16887455b6228ca8eec4a600c06c696fb334 (diff)
downloadheat-9a22d21226064bc702c7a5c1c39ee70e378df754.tar.gz
Merge "Correct reset_state_on_error() handling" into stable/kilo
-rwxr-xr-xheat/engine/stack.py9
-rw-r--r--heat/tests/test_stack.py23
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)