From d12cbe7959df33ccbba31878b3049b169db86857 Mon Sep 17 00:00:00 2001 From: Kanagaraj Manickam Date: Thu, 10 Mar 2016 19:18:42 +0530 Subject: [PATCH] Skip the in-built dependencies while validating template There are many neutron and nova resource has in-built dependencies by using add_dependencies() method. Its not required to validate them while valding the user template, as 1. user interest will be validaing their template 2. in-built dependencies are not known to user. Co-Authored-By: Rabi Mishra Change-Id: I4a3043fd17b69a346d447dfbd17488040cf9b387 Related-bug: #1554380 --- heat/engine/service.py | 3 ++- heat/engine/stack.py | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/heat/engine/service.py b/heat/engine/service.py index 3400791aff..000ec6759b 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -1177,7 +1177,8 @@ class EngineService(service.Service): resource_validate=False, service_check_defer=service_check_defer) try: - stack.validate(ignorable_errors=ignorable_errors) + stack.validate(ignorable_errors=ignorable_errors, + validate_by_deps=False) except exception.StackValidationFailed as ex: return {'Error': six.text_type(ex)} diff --git a/heat/engine/stack.py b/heat/engine/stack.py index 7d3cd05268..f8e1c4a17a 100644 --- a/heat/engine/stack.py +++ b/heat/engine/stack.py @@ -710,7 +710,7 @@ class Stack(collections.Mapping): return handler and handler(resource_name) @profiler.trace('Stack.validate', hide_args=False) - def validate(self, ignorable_errors=None): + def validate(self, ignorable_errors=None, validate_by_deps=True): """Validates the stack.""" # TODO(sdake) Should return line number of invalid reference @@ -737,7 +737,12 @@ class Stack(collections.Mapping): raise exception.StackValidationFailed( message=_("Duplicate names %s") % dup_names) - for res in self.dependencies: + if validate_by_deps: + iter_rsc = self.dependencies + else: + iter_rsc = six.itervalues(self.resources) + + for res in iter_rsc: try: if self.resource_validate: result = res.validate()