Save parse errors in TemplateResource for later

If there was a parse error re-raise it in the validate.

Change-Id: I25759c4f03fe8f9353c03f8fd4d9bb099ea1b478
Close-bug: #1232127
This commit is contained in:
Angus Salkeld
2013-10-08 16:52:35 +11:00
parent 0a7ebeb938
commit bc041a2a37
2 changed files with 8 additions and 6 deletions

View File

@@ -41,6 +41,8 @@ class TemplateResource(stack_resource.StackResource):
def __init__(self, name, json_snippet, stack):
self._parsed_nested = None
self.stack = stack
self.validation_exception = None
tri = stack.env.get_resource_info(
json_snippet['Type'],
registry_type=environment.TemplateResourceInfo)
@@ -55,7 +57,8 @@ class TemplateResource(stack_resource.StackResource):
# stack can be deleted, and detect it at validate/create time
try:
tmpl = template.Template(self.parsed_nested)
except ValueError:
except ValueError as parse_error:
self.validation_exception = parse_error
tmpl = template.Template({})
self.properties_schema = (properties.Properties
@@ -153,6 +156,10 @@ class TemplateResource(stack_resource.StackResource):
raise exception.StackValidationFailed(message=msg)
def validate(self):
if self.validation_exception is not None:
msg = str(self.validation_exception)
raise exception.StackValidationFailed(message=msg)
try:
td = self.template_data
except ValueError as ex: