add networking_config to container_create for custom network_mode

This commit is contained in:
Clint Armstrong 2019-02-19 23:30:05 -05:00
parent 5c99dbdf1a
commit c6e553c2c7
No known key found for this signature in database
GPG key ID: C1815CBA5634977D
2 changed files with 17 additions and 0 deletions

View file

@ -846,6 +846,13 @@ def _get_create_kwargs(skip_translate=None,
Take input kwargs and return a kwargs dict to pass to docker-py's
create_container() function.
'''
networks = kwargs.pop('networks', {})
if kwargs.get('network_mode', '') in networks:
networks = {kwargs['network_mode']: networks[kwargs['network_mode']]}
else:
networks = {}
kwargs = __utils__['docker.translate_input'](
salt.utils.docker.translate.container,
skip_translate=skip_translate,
@ -853,6 +860,9 @@ def _get_create_kwargs(skip_translate=None,
validate_ip_addrs=validate_ip_addrs,
**__utils__['args.clean_kwargs'](**kwargs))
if networks:
kwargs['networking_config'] = _create_networking_config(networks)
if client_args is None:
try:
client_args = get_client_args(['create_container', 'host_config'])
@ -2388,6 +2398,11 @@ def version():
return ret
def _create_networking_config(networks):
log.debug("creating networking config from {}".format(networks))
return _client_wrapper('create_networking_config',
{k: _client_wrapper('create_endpoint_config', **v) for k, v in networks.items()})
# Functions to manage containers
@_refresh_mine_cache
def create(image,

View file

@ -1673,6 +1673,8 @@ def running(name,
try:
networks = _parse_networks(networks)
if networks:
kwargs['networks'] = networks
image_id = _resolve_image(ret, image, client_timeout)
except CommandExecutionError as exc:
ret['result'] = False