diff --git a/changelogs/fragments/1034-error-msg.yml b/changelogs/fragments/1034-error-msg.yml new file mode 100644 index 000000000..6b19124fe --- /dev/null +++ b/changelogs/fragments/1034-error-msg.yml @@ -0,0 +1,3 @@ +bugfixes: + - "vendored Docker SDK for Python - do not assume that ``KeyError`` is always for ``ApiVersion`` when querying version fails + (https://github.com/ansible-collections/community.docker/issues/1033, https://github.com/ansible-collections/community.docker/pull/1034)." diff --git a/plugins/module_utils/_api/api/client.py b/plugins/module_utils/_api/api/client.py index 8ad7c09e9..5ae7e2058 100644 --- a/plugins/module_utils/_api/api/client.py +++ b/plugins/module_utils/_api/api/client.py @@ -202,7 +202,14 @@ def __init__(self, base_url=None, version=None, def _retrieve_server_version(self): try: - return self.version(api_version=False)["ApiVersion"] + version_result = self.version(api_version=False) + except Exception as e: + raise DockerException( + 'Error while fetching server API version: {0}'.format(e) + ) + + try: + return version_result["ApiVersion"] except KeyError: raise DockerException( 'Invalid response from docker daemon: key "ApiVersion"' @@ -210,7 +217,7 @@ def _retrieve_server_version(self): ) except Exception as e: raise DockerException( - 'Error while fetching server API version: {0}'.format(e) + 'Error while fetching server API version: {0}. Response seems to be broken.'.format(e) ) def _set_request_timeout(self, kwargs):