diff --git a/changelogs/fragments/143-tls_hostname-deprecation.yml b/changelogs/fragments/143-tls_hostname-deprecation.yml new file mode 100644 index 000000000..c5270b1ba --- /dev/null +++ b/changelogs/fragments/143-tls_hostname-deprecation.yml @@ -0,0 +1,2 @@ +bugfixes: +- "docker_* modules and plugins, except ``docker_swarm`` connection plugin and ``docker_compose`` and ``docker_stack*` modules - only emit ``tls_hostname`` deprecation message if TLS is actually used (https://github.com/ansible-collections/community.docker/pull/143)." diff --git a/plugins/module_utils/common.py b/plugins/module_utils/common.py index fd7cdeaf5..fbe2ba28c 100644 --- a/plugins/module_utils/common.py +++ b/plugins/module_utils/common.py @@ -172,11 +172,11 @@ def log(self, msg, pretty_print=False): # log_file.write(msg + u'\n') -def update_tls_hostname(result, old_behavior=False, deprecate_function=None): +def update_tls_hostname(result, old_behavior=False, deprecate_function=None, uses_tls=True): if result['tls_hostname'] is None: if old_behavior: result['tls_hostname'] = DEFAULT_TLS_HOSTNAME - if deprecate_function is not None: + if uses_tls and deprecate_function is not None: deprecate_function( 'The default value "localhost" for tls_hostname is deprecated and will be removed in community.docker 2.0.0.' ' From then on, docker_host will be used to compute tls_hostname. If you want to keep using "localhost",' @@ -200,8 +200,12 @@ def _get_tls_config(fail_function, **kwargs): fail_function("TLS config error: %s" % exc) +def is_using_tls(auth): + return auth['tls_verify'] or auth['tls'] + + def get_connect_params(auth, fail_function): - if auth['tls'] or auth['tls_verify']: + if is_using_tls(auth): auth['docker_host'] = auth['docker_host'].replace('tcp://', 'https://') result = dict( @@ -391,7 +395,7 @@ def auth_params(self): def depr(*args, **kwargs): self.deprecate(*args, **kwargs) - update_tls_hostname(result, old_behavior=True, deprecate_function=depr) + update_tls_hostname(result, old_behavior=True, deprecate_function=depr, uses_tls=is_using_tls(result)) return result