diff --git a/heat/engine/resources/stack_resource.py b/heat/engine/resources/stack_resource.py index f4e4b1131d..576af5e489 100644 --- a/heat/engine/resources/stack_resource.py +++ b/heat/engine/resources/stack_resource.py @@ -66,6 +66,8 @@ class StackResource(resource.Resource): self.child_params()) nested_stack.strict_validate = False nested_stack.validate() + except AssertionError: + raise except Exception as ex: raise exception.StackValidationFailed( error=_("Failed to validate"), diff --git a/heat/engine/service.py b/heat/engine/service.py index cb78aa17ca..a3ac0dce28 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -556,6 +556,8 @@ class EngineService(service.Service): def _validate_new_stack(self, cnxt, stack_name, parsed_template): try: parsed_template.validate() + except AssertionError: + raise except Exception as ex: raise exception.StackValidationFailed(message=six.text_type(ex)) diff --git a/heat/engine/stack.py b/heat/engine/stack.py index 71a5199516..e9d7505a17 100755 --- a/heat/engine/stack.py +++ b/heat/engine/stack.py @@ -647,8 +647,10 @@ class Stack(collections.Mapping): try: result = res.validate() except exception.HeatException as ex: - LOG.info(ex) + LOG.debug('%s', ex) raise ex + except AssertionError: + raise except Exception as ex: LOG.exception(_LE("Exception: %s"), ex) raise exception.StackValidationFailed( @@ -674,7 +676,9 @@ class Stack(collections.Mapping): path=[self.t.OUTPUTS], message=message) except exception.StackValidationFailed as ex: - raise ex + raise + except AssertionError: + raise except Exception as ex: raise exception.StackValidationFailed( error='Output validation error', @@ -1559,6 +1563,8 @@ class Stack(collections.Mapping): def resolve_static_data(self, snippet): try: return self.t.parse(self, snippet) + except AssertionError: + raise except Exception as ex: raise exception.StackValidationFailed( message=encodeutils.safe_decode(six.text_type(ex)))