From 241931f77605ff2c29de248ec0b7ef00e032d6f3 Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Thu, 31 Aug 2017 15:37:33 -0700 Subject: [PATCH] Merge extra_hosts instead of overwrite Signed-off-by: Joffrey F --- compose/config/config.py | 4 +--- tests/unit/config/config_test.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/compose/config/config.py b/compose/config/config.py index 0c2ab1ab7..0fddfd3a4 100644 --- a/compose/config/config.py +++ b/compose/config/config.py @@ -717,9 +717,6 @@ def process_service(service_config): if 'labels' in service_dict: service_dict['labels'] = parse_labels(service_dict['labels']) - if 'extra_hosts' in service_dict: - service_dict['extra_hosts'] = parse_extra_hosts(service_dict['extra_hosts']) - if 'sysctls' in service_dict: service_dict['sysctls'] = build_string_dict(parse_sysctls(service_dict['sysctls'])) @@ -947,6 +944,7 @@ def merge_service_dicts(base, override, version): md.merge_sequence('secrets', types.ServiceSecret.parse) md.merge_sequence('configs', types.ServiceConfig.parse) md.merge_mapping('deploy', parse_deploy) + md.merge_mapping('extra_hosts', parse_extra_hosts) for field in ['volumes', 'devices']: md.merge_field(field, merge_path_mappings) diff --git a/tests/unit/config/config_test.py b/tests/unit/config/config_test.py index 4e355d3bf..644290157 100644 --- a/tests/unit/config/config_test.py +++ b/tests/unit/config/config_test.py @@ -2197,6 +2197,24 @@ class ConfigTest(unittest.TestCase): } } + def test_merge_extra_hosts(self): + base = { + 'image': 'bar', + 'extra_hosts': { + 'foo': '1.2.3.4', + } + } + + override = { + 'extra_hosts': ['bar:5.6.7.8', 'foo:127.0.0.1'] + } + + actual = config.merge_service_dicts(base, override, V2_0) + assert actual['extra_hosts'] == { + 'foo': '127.0.0.1', + 'bar': '5.6.7.8', + } + def test_merge_healthcheck_config(self): base = { 'image': 'bar',