From b5c12ca75a231aaf49990e9dafe611d825b1cb00 Mon Sep 17 00:00:00 2001 From: Andrey Pavlov Date: Wed, 14 Dec 2016 12:45:42 +0000 Subject: [PATCH] Fixing dependencies validation Dependencies of "local" pre and post jobs were not taken into account Change-Id: Ieaed355b1cdcdba1921a880f90bdaa0e8b96c648 Closes-bug: #1649818 --- fuel_ccp/dependencies.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/fuel_ccp/dependencies.py b/fuel_ccp/dependencies.py index 518f3d18..a498a49b 100644 --- a/fuel_ccp/dependencies.py +++ b/fuel_ccp/dependencies.py @@ -74,6 +74,13 @@ def _parse_service_deps(service_map): for pre in container.get('pre', []): if pre.get('type') == 'single': dependencies.update([pre['name']]) + else: + deps = _prepare_deps(pre.get('dependencies', [])) + dependencies.update(deps) + for post in container.get('post', []): + if post.get('type') != 'single': + deps = _prepare_deps(post.get('dependencies', [])) + dependencies.update(deps) return list(dependencies) @@ -82,14 +89,15 @@ def _parse_pre_and_post_deps(service_map): deps = {} for container in service_map['service']['containers']: for pre in container.get('pre', []): + pre_deps = _prepare_deps(pre.get('dependencies', [])) deps[pre['name']] = Node(pre['name'], 'job', - pre.get('dependencies', []), + pre_deps, service_map['service']['name']) for post in container.get('post', []): if post.get('type') == 'single': - post_deps = post.get('dependencies', []) + post_deps = _prepare_deps(post.get('dependencies', [])) post_deps.append(service_map['service']['name']) deps[post['name']] = Node(post['name'], 'job', @@ -126,7 +134,6 @@ def _calculate_service_deps(service_name, deps_map): def get_deps(components, components_map=None): deps_map = get_deps_map(components_map) - result_deps = set() for service_name in components: deps, job_parents = _calculate_service_deps(service_name, deps_map)