From 08aa9425029b7af4bfd80495188f747fe928666c Mon Sep 17 00:00:00 2001 From: Andrey Pavlov Date: Mon, 6 Mar 2017 07:05:21 +0000 Subject: [PATCH] Updates should be triggered on service/node configs change Change-Id: Ia80685d032bffec55113639fb277b9910e10c909 --- fuel_ccp/common/utils.py | 6 ++++++ fuel_ccp/deploy.py | 21 ++++++++++++++------- fuel_ccp/tests/test_deploy.py | 4 ++-- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/fuel_ccp/common/utils.py b/fuel_ccp/common/utils.py index 4ae03b94..63f1a389 100644 --- a/fuel_ccp/common/utils.py +++ b/fuel_ccp/common/utils.py @@ -301,3 +301,9 @@ def get_rendering_config(): conf = copy.deepcopy(CONF.configs) conf._merge(CONF.secret_configs) return conf + + +def get_service_configs(service_name): + service_config = config._yaml.AttrDict() + extend_with_service_configs(service_name, service_config) + return service_config diff --git a/fuel_ccp/deploy.py b/fuel_ccp/deploy.py index 6856c638..3dfd697f 100644 --- a/fuel_ccp/deploy.py +++ b/fuel_ccp/deploy.py @@ -39,7 +39,7 @@ def _expand_items(service, kind, items): _expand(cmd) -def _get_configmaps_version(configmaps, service_dir, files, configs): +def _get_configmaps_version(configmaps, files, configs): """Get overall ConfigMaps version If any of the ConfigMaps changed, the overall version will be @@ -109,7 +109,8 @@ def parse_role(component, topology, configmaps): process_files(files, service_dir) files_cm = _create_files_configmap(service_name, files, files_header) meta_cm = _create_meta_configmap(service) - _create_service_configmap(service_name) + service_configs = utils.get_service_configs(service_name) + _create_service_configmap(service_name, service_configs) yield _process_secrets(role.get("secrets")) @@ -122,8 +123,16 @@ def parse_role(component, topology, configmaps): cm_version = 'dry-run' else: rendering_context = utils.get_rendering_config() + # update with node-related params + for node_name, node in sorted(CONF.nodes._items()): + rendering_context._merge(node.get('configs', {})) + + # update with service-related params + rendering_context._merge(service_configs) + rendering_context['_current_service'] = service_name + cm_version = _get_configmaps_version( - configmaps, service_dir, files, rendering_context._dict) + configmaps, files, rendering_context._dict) for cont in service["containers"]: daemon_cmd = cont["daemon"] @@ -363,11 +372,9 @@ def _create_nodes_configmap(nodes): return kubernetes.process_object(cm) -def _create_service_configmap(service_name): +def _create_service_configmap(service_name, service_config): configmap_name = "%s-%s" % (service_name, templates.SERVICE_CONFIG) - config = _yaml.AttrDict() - utils.extend_with_service_configs(service_name, config) - data = {templates.SERVICE_CONFIG: config._json()} + data = {templates.SERVICE_CONFIG: service_config._json()} template = templates.serialize_configmap(configmap_name, data) return kubernetes.process_object(template) diff --git a/fuel_ccp/tests/test_deploy.py b/fuel_ccp/tests/test_deploy.py index 124f2a67..646b4bdd 100644 --- a/fuel_ccp/tests/test_deploy.py +++ b/fuel_ccp/tests/test_deploy.py @@ -155,11 +155,11 @@ class TestDeploy(base.TestCase): cm_list = [mock.Mock(obj={'metadata': {'resourceVersion': '1'}}) for _ in range(3)] self.assertEqual('111222', deploy._get_configmaps_version( - cm_list, mock.ANY, mock.ANY, mock.ANY)) + cm_list, mock.ANY, mock.ANY)) cm_list = [] self.assertEqual('222', deploy._get_configmaps_version( - cm_list, mock.ANY, mock.ANY, mock.ANY)) + cm_list, mock.ANY, mock.ANY)) def test_get_service_files_hash(self): files = {