diff options
-rw-r--r-- | heat/engine/resource.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/heat/engine/resource.py b/heat/engine/resource.py index c0c6f080d..c492e88a8 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -370,14 +370,18 @@ class Resource(object): % {'a': action, 'h': hook}) self.trigger_hook(hook) LOG.info(_LI('Reached hook on %s'), six.text_type(self)) - while self.has_hook(hook) and self.status != self.FAILED: - try: - yield - except Exception: - self.clear_hook(hook) - self._add_event( - self.action, self.status, - "Failure occurred while waiting.") + + while self.has_hook(hook) and self.status != self.FAILED: + try: + yield + except BaseException as exc: + self.clear_hook(hook) + self._add_event( + self.action, self.status, + "Failure occurred while waiting.") + if (isinstance(exc, AssertionError) or + not isinstance(exc, Exception)): + raise def has_nested(self): # common resources have not nested, StackResource overrides it |