Handle mismatched network formats in config files
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
e5689afe4c
commit
f4a22b94ed
7 changed files with 83 additions and 10 deletions
|
|
@ -601,6 +601,9 @@ def finalize_service(service_config, service_names, version):
|
|||
else:
|
||||
service_dict['network_mode'] = network_mode
|
||||
|
||||
if 'networks' in service_dict:
|
||||
service_dict['networks'] = parse_networks(service_dict['networks'])
|
||||
|
||||
if 'restart' in service_dict:
|
||||
service_dict['restart'] = parse_restart_spec(service_dict['restart'])
|
||||
|
||||
|
|
@ -690,6 +693,7 @@ def merge_service_dicts(base, override, version):
|
|||
md.merge_mapping('environment', parse_environment)
|
||||
md.merge_mapping('labels', parse_labels)
|
||||
md.merge_mapping('ulimits', parse_ulimits)
|
||||
md.merge_mapping('networks', parse_networks)
|
||||
md.merge_sequence('links', ServiceLink.parse)
|
||||
|
||||
for field in ['volumes', 'devices']:
|
||||
|
|
@ -699,7 +703,6 @@ def merge_service_dicts(base, override, version):
|
|||
'depends_on',
|
||||
'expose',
|
||||
'external_links',
|
||||
'networks',
|
||||
'ports',
|
||||
'volumes_from',
|
||||
]:
|
||||
|
|
@ -787,6 +790,7 @@ def parse_dict_or_list(split_func, type_name, arguments):
|
|||
parse_build_arguments = functools.partial(parse_dict_or_list, split_env, 'build arguments')
|
||||
parse_environment = functools.partial(parse_dict_or_list, split_env, 'environment')
|
||||
parse_labels = functools.partial(parse_dict_or_list, split_label, 'labels')
|
||||
parse_networks = functools.partial(parse_dict_or_list, lambda k: (k, None), 'networks')
|
||||
|
||||
|
||||
def parse_ulimits(ulimits):
|
||||
|
|
|
|||
|
|
@ -162,10 +162,7 @@ class ProjectNetworks(object):
|
|||
def get_network_aliases_for_service(service_dict):
|
||||
if 'network_mode' in service_dict:
|
||||
return {}
|
||||
networks = service_dict.get('networks', ['default'])
|
||||
if isinstance(networks, list):
|
||||
return dict((net, []) for net in networks)
|
||||
|
||||
networks = service_dict.get('networks', {'default': None})
|
||||
return dict(
|
||||
(net, (config or {}).get('aliases', []))
|
||||
for net, config in networks.items()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue