summaryrefslogtreecommitdiff
path: root/compose
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2016-10-04 17:35:20 -0700
committerJoffrey F <joffrey@docker.com>2016-10-10 15:39:05 -0700
commit0603b445e28502fc27850ce16dbdb158b3089f7e (patch)
tree514f6694f766cd3f8bcfe57b3698faead17ae564 /compose
parentf65f89ad8c26684a314d9099fe35bcea07dbe5dc (diff)
Properly merge logging dictionaries in overriding configs
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'compose')
-rw-r--r--compose/config/config.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/compose/config/config.py b/compose/config/config.py
index aea1e094..8582d83c 100644
--- a/compose/config/config.py
+++ b/compose/config/config.py
@@ -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)