From c3eaabc14845d8c70937a1c4dc890bacf6fd80d0 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 12 Nov 2025 19:37:30 +0100 Subject: [PATCH] Work around Docker 29.0.0 bug. (#1187) (#1190) (cherry picked from commit ec14568b22507dfcfdd9ce27fc05184d72c87c04) --- changelogs/fragments/1187-docker.yml | 2 ++ plugins/module_utils/common_cli.py | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/1187-docker.yml diff --git a/changelogs/fragments/1187-docker.yml b/changelogs/fragments/1187-docker.yml new file mode 100644 index 00000000..83794875 --- /dev/null +++ b/changelogs/fragments/1187-docker.yml @@ -0,0 +1,2 @@ +bugfixes: + - "Docker CLI based modules - work around bug in Docker 29.0.0 that caused a breaking change in ``docker version --format json`` output (https://github.com/ansible-collections/community.docker/issues/1185, https://github.com/ansible-collections/community.docker/pull/1187)." diff --git a/plugins/module_utils/common_cli.py b/plugins/module_utils/common_cli.py index ae175f2f..4d1c032d 100644 --- a/plugins/module_utils/common_cli.py +++ b/plugins/module_utils/common_cli.py @@ -86,9 +86,10 @@ class AnsibleDockerClientBase(object): self._info = None if needs_api_version: - if not isinstance(self._version.get('Server'), dict) or not isinstance(self._version['Server'].get('ApiVersion'), string_types): + api_version_string = self._version["Server"].get("ApiVersion") or self._version["Server"].get("APIVersion") + if not isinstance(self._version.get('Server'), dict) or not isinstance(api_version_string, string_types): self.fail('Cannot determine Docker Daemon information. Are you maybe using podman instead of docker?') - self.docker_api_version_str = to_native(self._version['Server']['ApiVersion']) + self.docker_api_version_str = to_native(api_version_string) self.docker_api_version = LooseVersion(self.docker_api_version_str) min_docker_api_version = min_docker_api_version or '1.25' if self.docker_api_version < LooseVersion(min_docker_api_version):