Merge pull request #2185 from AndrewPashkin/add_entrypoint_param_to_docker_module
Add entrypoint parameter to docker module
This commit is contained in:
commit
2220dc8e12
1 changed files with 36 additions and 7 deletions
|
@ -46,6 +46,14 @@ options:
|
||||||
default: missing
|
default: missing
|
||||||
choices: [ "missing", "always" ]
|
choices: [ "missing", "always" ]
|
||||||
version_added: "1.9"
|
version_added: "1.9"
|
||||||
|
entrypoint:
|
||||||
|
description:
|
||||||
|
- Corresponds to ``--entrypoint`` option of ``docker run`` command and
|
||||||
|
``ENTRYPOINT`` directive of Dockerfile.
|
||||||
|
Used to match and launch containers.
|
||||||
|
default: null
|
||||||
|
required: false
|
||||||
|
version_added: "2.0"
|
||||||
command:
|
command:
|
||||||
description:
|
description:
|
||||||
- Command used to match and launch containers.
|
- Command used to match and launch containers.
|
||||||
|
@ -1083,6 +1091,21 @@ class DockerManager(object):
|
||||||
differing.append(container)
|
differing.append(container)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# ENTRYPOINT
|
||||||
|
|
||||||
|
expected_entrypoint = self.module.params.get('entrypoint')
|
||||||
|
if expected_entrypoint:
|
||||||
|
expected_entrypoint = shlex.split(expected_entrypoint)
|
||||||
|
actual_entrypoint = container["Config"]["Entrypoint"]
|
||||||
|
|
||||||
|
if actual_entrypoint != expected_entrypoint:
|
||||||
|
self.reload_reasons.append(
|
||||||
|
'entrypoint ({0} => {1})'
|
||||||
|
.format(actual_entrypoint, expected_entrypoint)
|
||||||
|
)
|
||||||
|
differing.append(container)
|
||||||
|
continue
|
||||||
|
|
||||||
# COMMAND
|
# COMMAND
|
||||||
|
|
||||||
expected_command = self.module.params.get('command')
|
expected_command = self.module.params.get('command')
|
||||||
|
@ -1384,9 +1407,12 @@ class DockerManager(object):
|
||||||
Return any matching containers that are already present.
|
Return any matching containers that are already present.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
entrypoint = self.module.params.get('entrypoint')
|
||||||
|
if entrypoint is not None:
|
||||||
|
entrypoint = shlex.split(entrypoint)
|
||||||
command = self.module.params.get('command')
|
command = self.module.params.get('command')
|
||||||
if command:
|
if command is not None:
|
||||||
command = command.strip()
|
command = shlex.split(command)
|
||||||
name = self.module.params.get('name')
|
name = self.module.params.get('name')
|
||||||
if name and not name.startswith('/'):
|
if name and not name.startswith('/'):
|
||||||
name = '/' + name
|
name = '/' + name
|
||||||
|
@ -1413,15 +1439,16 @@ class DockerManager(object):
|
||||||
details = _docker_id_quirk(details)
|
details = _docker_id_quirk(details)
|
||||||
|
|
||||||
running_image = normalize_image(details['Config']['Image'])
|
running_image = normalize_image(details['Config']['Image'])
|
||||||
running_command = container['Command'].strip()
|
|
||||||
|
|
||||||
image_matches = running_image in repo_tags
|
image_matches = running_image in repo_tags
|
||||||
|
|
||||||
# if a container has an entrypoint, `command` will actually equal
|
command_matches = command == details['Config']['Cmd']
|
||||||
# '{} {}'.format(entrypoint, command)
|
entrypoint_matches = (
|
||||||
command_matches = (not command or running_command.endswith(command))
|
entrypoint == details['Config']['Entrypoint']
|
||||||
|
)
|
||||||
|
|
||||||
matches = image_matches and command_matches
|
matches = (image_matches and command_matches and
|
||||||
|
entrypoint_matches)
|
||||||
|
|
||||||
if matches:
|
if matches:
|
||||||
if not details:
|
if not details:
|
||||||
|
@ -1486,6 +1513,7 @@ class DockerManager(object):
|
||||||
api_version = self.client.version()['ApiVersion']
|
api_version = self.client.version()['ApiVersion']
|
||||||
|
|
||||||
params = {'image': self.module.params.get('image'),
|
params = {'image': self.module.params.get('image'),
|
||||||
|
'entrypoint': self.module.params.get('entrypoint'),
|
||||||
'command': self.module.params.get('command'),
|
'command': self.module.params.get('command'),
|
||||||
'ports': self.exposed_ports,
|
'ports': self.exposed_ports,
|
||||||
'volumes': self.volumes,
|
'volumes': self.volumes,
|
||||||
|
@ -1704,6 +1732,7 @@ def main():
|
||||||
count = dict(default=1),
|
count = dict(default=1),
|
||||||
image = dict(required=True),
|
image = dict(required=True),
|
||||||
pull = dict(required=False, default='missing', choices=['missing', 'always']),
|
pull = dict(required=False, default='missing', choices=['missing', 'always']),
|
||||||
|
entrypoint = dict(required=False, default=None, type='str'),
|
||||||
command = dict(required=False, default=None),
|
command = dict(required=False, default=None),
|
||||||
expose = dict(required=False, default=None, type='list'),
|
expose = dict(required=False, default=None, type='list'),
|
||||||
ports = dict(required=False, default=None, type='list'),
|
ports = dict(required=False, default=None, type='list'),
|
||||||
|
|
Loading…
Reference in a new issue