mirror of
https://github.com/ansible-collections/community.docker.git
synced 2025-12-16 03:52:05 +00:00
docker_container_exec: improve handling of chdir option (#243)
* Only pass chdir on when it is provided, and prevent this option from being used for Docker SDK for Python < 3.0.0. * Also fix docker_api connection plugin.
This commit is contained in:
parent
abd057f447
commit
bed775c4ea
3
changelogs/fragments/243-docker_container_exec-chdir.yml
Normal file
3
changelogs/fragments/243-docker_container_exec-chdir.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
bugfixes:
|
||||||
|
- "docker_container_exec - ``chdir`` is only supported since Docker SDK for Python 3.0.0. Make sure that this option can only use when 3.0.0 or later is installed, and prevent passing this parameter on when ``chdir`` is not provided to this module (https://github.com/ansible-collections/community.docker/pull/243, https://github.com/ansible-collections/community.docker/issues/242)."
|
||||||
|
- "docker_api connection plugin - avoid passing an unnecessary argument to a Docker SDK for Python call that is only supported by version 3.0.0 or later (https://github.com/ansible-collections/community.docker/pull/243)."
|
||||||
@ -164,7 +164,7 @@ class Connection(ConnectionBase):
|
|||||||
stderr=True,
|
stderr=True,
|
||||||
stdin=need_stdin,
|
stdin=need_stdin,
|
||||||
user=self._play_context.remote_user or '',
|
user=self._play_context.remote_user or '',
|
||||||
workdir=None,
|
# workdir=None, - only works for Docker SDK for Python 3.0.0 and later
|
||||||
))
|
))
|
||||||
exec_id = exec_data['Id']
|
exec_id = exec_data['Id']
|
||||||
|
|
||||||
|
|||||||
@ -163,8 +163,13 @@ def main():
|
|||||||
tty=dict(type='bool', default=False),
|
tty=dict(type='bool', default=False),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
option_minimal_versions = dict(
|
||||||
|
chdir=dict(docker_py_version='3.0.0'),
|
||||||
|
)
|
||||||
|
|
||||||
client = AnsibleDockerClient(
|
client = AnsibleDockerClient(
|
||||||
argument_spec=argument_spec,
|
argument_spec=argument_spec,
|
||||||
|
option_minimal_versions=option_minimal_versions,
|
||||||
min_docker_api_version='1.20',
|
min_docker_api_version='1.20',
|
||||||
mutually_exclusive=[('argv', 'command')],
|
mutually_exclusive=[('argv', 'command')],
|
||||||
required_one_of=[('argv', 'command')],
|
required_one_of=[('argv', 'command')],
|
||||||
@ -190,6 +195,9 @@ def main():
|
|||||||
selectors = find_selectors(client.module)
|
selectors = find_selectors(client.module)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
kwargs = {}
|
||||||
|
if chdir is not None:
|
||||||
|
kwargs['workdir'] = chdir
|
||||||
exec_data = client.exec_create(
|
exec_data = client.exec_create(
|
||||||
container,
|
container,
|
||||||
argv,
|
argv,
|
||||||
@ -197,7 +205,7 @@ def main():
|
|||||||
stderr=True,
|
stderr=True,
|
||||||
stdin=bool(stdin),
|
stdin=bool(stdin),
|
||||||
user=user or '',
|
user=user or '',
|
||||||
workdir=chdir,
|
**kwargs
|
||||||
)
|
)
|
||||||
exec_id = exec_data['Id']
|
exec_id = exec_data['Id']
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user