summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToshio Kuratomi <toshio@fedoraproject.org>2015-09-03 15:39:18 -0700
committerToshio Kuratomi <toshio@fedoraproject.org>2015-09-03 15:39:18 -0700
commit1f358f349b73e008801f32cf046b5533abbefc5c (patch)
treeaff58d20e4ae0fe67301164f527a6aa39cfe074e
parent2520627fe7d487a08e077a01bb1251f3757f0515 (diff)
downloadansible-modules-core-docker-merge-hostconfig-methods.tar.gz
We had two separate methods trying to do the same thing but neither one was complete. This merges them so that all of the options get parsed and applied.docker-merge-hostconfig-methods
-rw-r--r--cloud/docker/docker.py89
1 files changed, 26 insertions, 63 deletions
diff --git a/cloud/docker/docker.py b/cloud/docker/docker.py
index 82c39006..99ede1b5 100644
--- a/cloud/docker/docker.py
+++ b/cloud/docker/docker.py
@@ -801,7 +801,8 @@ class DockerManager(object):
optionals = {}
for optional_param in ('dns', 'volumes_from', 'restart_policy',
- 'restart_policy_retry', 'pid'):
+ 'restart_policy_retry', 'pid', 'extra_hosts', 'log_driver',
+ 'cap_add', 'cap_drop'):
optionals[optional_param] = self.module.params.get(optional_param)
if optionals['dns'] is not None:
@@ -818,13 +819,35 @@ class DockerManager(object):
if params['restart_policy']['Name'] == 'on-failure':
params['restart_policy']['MaximumRetryCount'] = optionals['restart_policy_retry']
+ # docker_py only accepts 'host' or None
+ if 'pid' in optionals and not optionals['pid']:
+ optionals['pid'] = None
+
if optionals['pid'] is not None:
self.ensure_capability('pid')
params['pid_mode'] = optionals['pid']
+ if optionals['extra_hosts'] is not None:
+ self.ensure_capability('extra_hosts')
+ params['extra_hosts'] = optionals['extra_hosts']
+
+ if optionals['log_driver'] is not None:
+ self.ensure_capability('log_driver')
+ log_config = docker.utils.LogConfig(type=docker.utils.LogConfig.types.JSON)
+ log_config.type = optionals['log_driver']
+ params['log_config'] = log_config
+
+ if optionals['cap_add'] is not None:
+ self.ensure_capability('cap_add')
+ params['cap_add'] = optionals['cap_add']
+
+ if optionals['cap_drop'] is not None:
+ self.ensure_capability('cap_drop')
+ params['cap_drop'] = optionals['cap_drop']
+
return params
- def get_host_config(self):
+ def create_host_config(self):
"""
Create HostConfig object
"""
@@ -1340,65 +1363,6 @@ class DockerManager(object):
except Exception as e:
self.module.fail_json(msg="Failed to pull the specified image: %s" % resource, error=repr(e))
- def create_host_config(self):
- params = {
- 'lxc_conf': self.lxc_conf,
- 'binds': self.binds,
- 'port_bindings': self.port_bindings,
- 'publish_all_ports': self.module.params.get('publish_all_ports'),
- 'privileged': self.module.params.get('privileged'),
- 'links': self.links,
- 'network_mode': self.module.params.get('net'),
- }
-
- optionals = {}
- for optional_param in ('dns', 'volumes_from', 'restart_policy',
- 'restart_policy_retry', 'pid', 'extra_hosts', 'log_driver',
- 'cap_add', 'cap_drop'):
- optionals[optional_param] = self.module.params.get(optional_param)
-
- if optionals['dns'] is not None:
- self.ensure_capability('dns')
- params['dns'] = optionals['dns']
-
- if optionals['volumes_from'] is not None:
- self.ensure_capability('volumes_from')
- params['volumes_from'] = optionals['volumes_from']
-
- if optionals['restart_policy'] is not None:
- self.ensure_capability('restart_policy')
- params['restart_policy'] = { 'Name': optionals['restart_policy'] }
- if params['restart_policy']['Name'] == 'on-failure':
- params['restart_policy']['MaximumRetryCount'] = optionals['restart_policy_retry']
-
- # docker_py only accepts 'host' or None
- if 'pid' in optionals and not optionals['pid']:
- optionals['pid'] = None
-
- if optionals['pid'] is not None:
- self.ensure_capability('pid')
- params['pid_mode'] = optionals['pid']
-
- if optionals['extra_hosts'] is not None:
- self.ensure_capability('extra_hosts')
- params['extra_hosts'] = optionals['extra_hosts']
-
- if optionals['log_driver'] is not None:
- self.ensure_capability('log_driver')
- log_config = docker.utils.LogConfig(type=docker.utils.LogConfig.types.JSON)
- log_config.type = optionals['log_driver']
- params['log_config'] = log_config
-
- if optionals['cap_add'] is not None:
- self.ensure_capability('cap_add')
- params['cap_add'] = optionals['cap_add']
-
- if optionals['cap_drop'] is not None:
- self.ensure_capability('cap_drop')
- params['cap_drop'] = optionals['cap_drop']
-
- return docker.utils.create_host_config(**params)
-
def create_containers(self, count=1):
try:
mem_limit = _human_to_bytes(self.module.params.get('memory_limit'))
@@ -1418,11 +1382,10 @@ class DockerManager(object):
'stdin_open': self.module.params.get('stdin_open'),
'tty': self.module.params.get('tty'),
'cpuset': self.module.params.get('cpu_set'),
- 'host_config': self.create_host_config(),
'user': self.module.params.get('docker_user'),
}
if self.ensure_capability('host_config', fail=False):
- params['host_config'] = self.get_host_config()
+ params['host_config'] = self.create_host_config()
#For v1.19 API and above use HostConfig, otherwise use Config
if api_version < 1.19: