Updates should be triggered on service/node configs change

Change-Id: Ia80685d032bffec55113639fb277b9910e10c909
This commit is contained in:
Andrey Pavlov 2017-03-06 07:05:21 +00:00
parent e8ce334a9d
commit 08aa942502
3 changed files with 22 additions and 9 deletions

View File

@ -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

View File

@ -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)

View File

@ -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 = {