|
|
@ -801,7 +801,8 @@ class DockerManager(object):
|
|
|
|
|
|
|
|
|
|
|
|
optionals = {}
|
|
|
|
optionals = {}
|
|
|
|
for optional_param in ('dns', 'volumes_from', 'restart_policy',
|
|
|
|
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)
|
|
|
|
optionals[optional_param] = self.module.params.get(optional_param)
|
|
|
|
|
|
|
|
|
|
|
|
if optionals['dns'] is not None:
|
|
|
|
if optionals['dns'] is not None:
|
|
|
@ -818,13 +819,35 @@ class DockerManager(object):
|
|
|
|
if params['restart_policy']['Name'] == 'on-failure':
|
|
|
|
if params['restart_policy']['Name'] == 'on-failure':
|
|
|
|
params['restart_policy']['MaximumRetryCount'] = optionals['restart_policy_retry']
|
|
|
|
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:
|
|
|
|
if optionals['pid'] is not None:
|
|
|
|
self.ensure_capability('pid')
|
|
|
|
self.ensure_capability('pid')
|
|
|
|
params['pid_mode'] = optionals['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
|
|
|
|
return params
|
|
|
|
|
|
|
|
|
|
|
|
def get_host_config(self):
|
|
|
|
def create_host_config(self):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Create HostConfig object
|
|
|
|
Create HostConfig object
|
|
|
|
"""
|
|
|
|
"""
|
|
|
@ -1340,65 +1363,6 @@ class DockerManager(object):
|
|
|
|
except Exception as e:
|
|
|
|
except Exception as e:
|
|
|
|
self.module.fail_json(msg="Failed to pull the specified image: %s" % resource, error=repr(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):
|
|
|
|
def create_containers(self, count=1):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
mem_limit = _human_to_bytes(self.module.params.get('memory_limit'))
|
|
|
|
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'),
|
|
|
|
'stdin_open': self.module.params.get('stdin_open'),
|
|
|
|
'tty': self.module.params.get('tty'),
|
|
|
|
'tty': self.module.params.get('tty'),
|
|
|
|
'cpuset': self.module.params.get('cpu_set'),
|
|
|
|
'cpuset': self.module.params.get('cpu_set'),
|
|
|
|
'host_config': self.create_host_config(),
|
|
|
|
|
|
|
|
'user': self.module.params.get('docker_user'),
|
|
|
|
'user': self.module.params.get('docker_user'),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if self.ensure_capability('host_config', fail=False):
|
|
|
|
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
|
|
|
|
#For v1.19 API and above use HostConfig, otherwise use Config
|
|
|
|
if api_version < 1.19:
|
|
|
|
if api_version < 1.19:
|
|
|
|