Improve envvar fallback handling. (#554) (#555)

(cherry picked from commit 4e6ac335f3)
This commit is contained in:
Felix Fontein 2023-01-13 21:04:00 +01:00 committed by GitHub
parent ca89e93302
commit 40bef226c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 20 deletions

View File

@ -0,0 +1,2 @@
bugfixes:
- "most modules - fix handling of ``DOCKER_TIMEOUT`` environment variable, and improve handling of other fallback environment variables (https://github.com/ansible-collections/community.docker/issues/551, https://github.com/ansible-collections/community.docker/pull/554)."

View File

@ -259,13 +259,17 @@ class AnsibleDockerClientBase(Client):
pass pass
@staticmethod @staticmethod
def _get_value(param_name, param_value, env_variable, default_value): def _get_value(param_name, param_value, env_variable, default_value, type='str'):
if param_value is not None: if param_value is not None:
# take module parameter value # take module parameter value
if param_value in BOOLEANS_TRUE: if type == 'bool':
return True if param_value in BOOLEANS_TRUE:
if param_value in BOOLEANS_FALSE: return True
return False if param_value in BOOLEANS_FALSE:
return False
return bool(param_value)
if type == 'int':
return int(param_value)
return param_value return param_value
if env_variable is not None: if env_variable is not None:
@ -278,10 +282,14 @@ class AnsibleDockerClientBase(Client):
return os.path.join(env_value, 'ca.pem') return os.path.join(env_value, 'ca.pem')
if param_name == 'key_path': if param_name == 'key_path':
return os.path.join(env_value, 'key.pem') return os.path.join(env_value, 'key.pem')
if env_value in BOOLEANS_TRUE: if type == 'bool':
return True if env_value in BOOLEANS_TRUE:
if env_value in BOOLEANS_FALSE: return True
return False if env_value in BOOLEANS_FALSE:
return False
return bool(env_value)
if type == 'int':
return int(env_value)
return env_value return env_value
# take the default # take the default
@ -306,21 +314,21 @@ class AnsibleDockerClientBase(Client):
result = dict( result = dict(
docker_host=self._get_value('docker_host', params['docker_host'], 'DOCKER_HOST', docker_host=self._get_value('docker_host', params['docker_host'], 'DOCKER_HOST',
DEFAULT_DOCKER_HOST), DEFAULT_DOCKER_HOST, type='str'),
tls_hostname=self._get_value('tls_hostname', params['tls_hostname'], tls_hostname=self._get_value('tls_hostname', params['tls_hostname'],
'DOCKER_TLS_HOSTNAME', None), 'DOCKER_TLS_HOSTNAME', None, type='str'),
api_version=self._get_value('api_version', params['api_version'], 'DOCKER_API_VERSION', api_version=self._get_value('api_version', params['api_version'], 'DOCKER_API_VERSION',
'auto'), 'auto', type='str'),
cacert_path=self._get_value('cacert_path', params['ca_cert'], 'DOCKER_CERT_PATH', None), cacert_path=self._get_value('cacert_path', params['ca_cert'], 'DOCKER_CERT_PATH', None, type='str'),
cert_path=self._get_value('cert_path', params['client_cert'], 'DOCKER_CERT_PATH', None), cert_path=self._get_value('cert_path', params['client_cert'], 'DOCKER_CERT_PATH', None, type='str'),
key_path=self._get_value('key_path', params['client_key'], 'DOCKER_CERT_PATH', None), key_path=self._get_value('key_path', params['client_key'], 'DOCKER_CERT_PATH', None, type='str'),
ssl_version=self._get_value('ssl_version', params['ssl_version'], 'DOCKER_SSL_VERSION', None), ssl_version=self._get_value('ssl_version', params['ssl_version'], 'DOCKER_SSL_VERSION', None, type='str'),
tls=self._get_value('tls', params['tls'], 'DOCKER_TLS', DEFAULT_TLS), tls=self._get_value('tls', params['tls'], 'DOCKER_TLS', DEFAULT_TLS, type='bool'),
tls_verify=self._get_value('tls_verfy', params['validate_certs'], 'DOCKER_TLS_VERIFY', tls_verify=self._get_value('tls_verfy', params['validate_certs'], 'DOCKER_TLS_VERIFY',
DEFAULT_TLS_VERIFY), DEFAULT_TLS_VERIFY, type='bool'),
timeout=self._get_value('timeout', params['timeout'], 'DOCKER_TIMEOUT', timeout=self._get_value('timeout', params['timeout'], 'DOCKER_TIMEOUT',
DEFAULT_TIMEOUT_SECONDS), DEFAULT_TIMEOUT_SECONDS, type='int'),
use_ssh_client=self._get_value('use_ssh_client', params['use_ssh_client'], None, False), use_ssh_client=self._get_value('use_ssh_client', params['use_ssh_client'], None, False, type='bool'),
) )
def depr(*args, **kwargs): def depr(*args, **kwargs):