diff --git a/heat/engine/stack.py b/heat/engine/stack.py index 3b152d30b1..c21e63f6ef 100644 --- a/heat/engine/stack.py +++ b/heat/engine/stack.py @@ -782,9 +782,6 @@ class Stack(collections.Mapping): parameter_groups = param_groups.ParameterGroups(self.t) parameter_groups.validate() - # Validate condition definition of conditions section - self.t.validate_condition_definitions(self) - # Continue to call this function, since old third-party Template # plugins may depend on it being called to validate the resource # definitions before actually generating them. diff --git a/heat/engine/template.py b/heat/engine/template.py index 1c055ed0a8..f4bc523e0e 100644 --- a/heat/engine/template.py +++ b/heat/engine/template.py @@ -255,10 +255,6 @@ class Template(collections.Mapping): """ pass - def validate_condition_definitions(self, stack): - """Check conditions section.""" - pass - def conditions(self, stack): """Return a dictionary of resolved conditions.""" return {} diff --git a/heat/engine/template_common.py b/heat/engine/template_common.py index c43cb58de6..4c6cd6bd0f 100644 --- a/heat/engine/template_common.py +++ b/heat/engine/template_common.py @@ -81,18 +81,7 @@ class CommonTemplate(template.Template): six.string_types, 'string', name, data) - def validate_condition_definitions(self, stack): - """Check conditions section.""" - - resolved_cds = self.resolve_conditions(stack) - if resolved_cds: - for cd_key, cd_value in six.iteritems(resolved_cds): - if not isinstance(cd_value, bool): - raise exception.InvalidConditionDefinition( - cd=cd_key, - definition=cd_value) - - def resolve_conditions(self, stack): + def _resolve_conditions(self, stack): cd_snippet = self.get_condition_definitions() result = {} for cd_key, cd_value in six.iteritems(cd_snippet): @@ -135,7 +124,15 @@ class CommonTemplate(template.Template): def conditions(self, stack): if self._conditions is None: - self._conditions = self.resolve_conditions(stack) + resolved_cds = self._resolve_conditions(stack) + if resolved_cds: + for cd_key, cd_value in six.iteritems(resolved_cds): + if not isinstance(cd_value, bool): + raise exception.InvalidConditionDefinition( + cd=cd_key, + definition=cd_value) + + self._conditions = resolved_cds return self._conditions diff --git a/heat/tests/test_template.py b/heat/tests/test_template.py index 91140cd6d3..511705e1d3 100644 --- a/heat/tests/test_template.py +++ b/heat/tests/test_template.py @@ -137,9 +137,6 @@ class TestTemplatePluginManager(common.HeatTestCase): param_defaults=None): pass - def validate_condition_definitions(self, stack): - pass - def resource_definitions(self, stack): pass @@ -326,7 +323,7 @@ class TestTemplateConditionParser(common.HeatTestCase): stk = stack.Stack(self.ctx, 'test_condition_with_get_attr_func', tmpl, resolve_data=False) ex = self.assertRaises(exception.InvalidConditionFunction, - tmpl.resolve_conditions, stk) + tmpl._resolve_conditions, stk) self.assertIn('The function is not supported in condition: get_attr', six.text_type(ex)) @@ -335,7 +332,7 @@ class TestTemplateConditionParser(common.HeatTestCase): stk = stack.Stack(self.ctx, 'test_condition_with_get_attr_func', tmpl, resolve_data=False) ex = self.assertRaises(exception.InvalidConditionFunction, - tmpl.resolve_conditions, stk) + tmpl._resolve_conditions, stk) self.assertIn('The function is not supported in condition: ' 'get_resource', six.text_type(ex)) @@ -344,7 +341,7 @@ class TestTemplateConditionParser(common.HeatTestCase): stk = stack.Stack(self.ctx, 'test_condition_with_get_attr_func', tmpl, resolve_data=False) ex = self.assertRaises(exception.InvalidConditionFunction, - tmpl.resolve_conditions, stk) + tmpl._resolve_conditions, stk) self.assertIn('The function is not supported in condition: get_attr', six.text_type(ex)) @@ -365,7 +362,7 @@ class TestTemplateConditionParser(common.HeatTestCase): stk = stack.Stack(self.ctx, 'test_condition_not_boolean', tmpl) ex = self.assertRaises(exception.InvalidConditionDefinition, - tmpl.validate_condition_definitions, stk) + tmpl.conditions, stk) self.assertIn('The definition of condition (prod_env) is invalid', six.text_type(ex))