Make docker_host and cli_context mutually exclusive. (#895)

This commit is contained in:
Felix Fontein 2024-06-28 22:26:34 +02:00 committed by GitHub
parent 36dcb94b39
commit ad9d362336
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 12 additions and 4 deletions

View File

@ -0,0 +1,2 @@
bugfixes:
- "docker_compose_v2*, docker_stack*, docker_image_build modules - using ``cli_context`` no longer leads to an invalid parameter combination being passed to the corresponding Docker CLI tool, unless ``docker_host`` is also provided. Combining ``cli_context`` and ``docker_host`` is no longer allowed (https://github.com/ansible-collections/community.docker/issues/892, https://github.com/ansible-collections/community.docker/pull/895)."

View File

@ -318,8 +318,9 @@ options:
the module will automatically replace C(tcp) in the connection URL with C(https). the module will automatically replace C(tcp) in the connection URL with C(https).
- If the value is not specified in the task, the value of environment variable E(DOCKER_HOST) will be used - If the value is not specified in the task, the value of environment variable E(DOCKER_HOST) will be used
instead. If the environment variable is not set, the default value will be used. instead. If the environment variable is not set, the default value will be used.
- Mutually exclusive with O(cli_context). If neither O(docker_host) nor O(cli_context) are provided, the
value V(unix:///var/run/docker.sock) is used.
type: str type: str
default: unix:///var/run/docker.sock
aliases: [ docker_url ] aliases: [ docker_url ]
tls_hostname: tls_hostname:
description: description:
@ -381,6 +382,7 @@ options:
cli_context: cli_context:
description: description:
- The Docker CLI context to use. - The Docker CLI context to use.
- Mutually exclusive with O(docker_host).
type: str type: str
notes: notes:

View File

@ -30,7 +30,7 @@ from ansible_collections.community.docker.plugins.module_utils.util import ( #
DOCKER_COMMON_ARGS = dict( DOCKER_COMMON_ARGS = dict(
docker_cli=dict(type='path'), docker_cli=dict(type='path'),
docker_host=dict(type='str', default=DEFAULT_DOCKER_HOST, fallback=(env_fallback, ['DOCKER_HOST']), aliases=['docker_url']), docker_host=dict(type='str', fallback=(env_fallback, ['DOCKER_HOST']), aliases=['docker_url']),
tls_hostname=dict(type='str', fallback=(env_fallback, ['DOCKER_TLS_HOSTNAME'])), tls_hostname=dict(type='str', fallback=(env_fallback, ['DOCKER_TLS_HOSTNAME'])),
api_version=dict(type='str', default='auto', fallback=(env_fallback, ['DOCKER_API_VERSION']), aliases=['docker_api_version']), api_version=dict(type='str', default='auto', fallback=(env_fallback, ['DOCKER_API_VERSION']), aliases=['docker_api_version']),
ca_path=dict(type='path', aliases=['ca_cert', 'tls_ca_cert', 'cacert_path']), ca_path=dict(type='path', aliases=['ca_cert', 'tls_ca_cert', 'cacert_path']),
@ -62,7 +62,11 @@ class AnsibleDockerClientBase(object):
self.fail('Cannot find docker CLI in path. Please provide it explicitly with the docker_cli parameter') self.fail('Cannot find docker CLI in path. Please provide it explicitly with the docker_cli parameter')
self._cli_base = [self._cli] self._cli_base = [self._cli]
self._cli_base.extend(['--host', common_args['docker_host']]) docker_host = common_args['docker_host']
if not docker_host and not common_args['cli_context']:
docker_host = DEFAULT_DOCKER_HOST
if docker_host:
self._cli_base.extend(['--host', docker_host])
if common_args['validate_certs']: if common_args['validate_certs']:
self._cli_base.append('--tlsverify') self._cli_base.append('--tlsverify')
elif common_args['tls']: elif common_args['tls']:
@ -275,7 +279,7 @@ class AnsibleModuleDockerClient(AnsibleDockerClientBase):
merged_arg_spec.update(argument_spec) merged_arg_spec.update(argument_spec)
self.arg_spec = merged_arg_spec self.arg_spec = merged_arg_spec
mutually_exclusive_params = [] mutually_exclusive_params = [('docker_host', 'cli_context')]
mutually_exclusive_params += DOCKER_MUTUALLY_EXCLUSIVE mutually_exclusive_params += DOCKER_MUTUALLY_EXCLUSIVE
if mutually_exclusive: if mutually_exclusive:
mutually_exclusive_params += mutually_exclusive mutually_exclusive_params += mutually_exclusive