Properly merge logging dictionaries in overriding configs

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2016-10-04 17:35:20 -07:00
commit 0603b445e2
2 changed files with 169 additions and 1 deletions

View file

@ -760,6 +760,8 @@ def merge_service_dicts(base, override, version):
for field in ['dns', 'dns_search', 'env_file', 'tmpfs']:
md.merge_field(field, merge_list_or_string)
md.merge_field('logging', merge_logging)
for field in set(ALLOWED_KEYS) - set(md):
md.merge_scalar(field)
@ -789,6 +791,16 @@ def merge_build(output, base, override):
return dict(md)
def merge_logging(base, override):
md = MergeDict(base, override)
md.merge_scalar('driver')
if md.get('driver') == base.get('driver') or base.get('driver') is None:
md.merge_mapping('options', lambda m: m or {})
else:
md['options'] = override.get('options')
return dict(md)
def legacy_v1_merge_image_or_build(output, base, override):
output.pop('image', None)
output.pop('build', None)