From 5a338bbc9a9f020697a6ce65f8f70b953065146f Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Fri, 31 Jan 2025 19:39:08 +0100 Subject: [PATCH] Improve error handling. (#1035) (cherry picked from commit 511cfe52ca23ee3607ab5d265564007678cd8399) --- changelogs/fragments/1034-error-msg.yml | 3 +++ plugins/module_utils/_api/api/client.py | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/1034-error-msg.yml 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):