From d8a6214f6e311130529f05676bee50c902e2893f Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Sat, 2 Jul 2022 22:30:32 +0200 Subject: [PATCH 1/2] Rewrite the docker_network_info module. --- changelogs/fragments/409-docker-api.yml | 4 ++++ plugins/modules/docker_network_info.py | 13 +++---------- .../targets/docker_network_info/tasks/main.yml | 4 ++-- 3 files changed, 9 insertions(+), 12 deletions(-) create mode 100644 changelogs/fragments/409-docker-api.yml diff --git a/changelogs/fragments/409-docker-api.yml b/changelogs/fragments/409-docker-api.yml new file mode 100644 index 000000000..e24be58cc --- /dev/null +++ b/changelogs/fragments/409-docker-api.yml @@ -0,0 +1,4 @@ +major_changes: + - "docker_network_info - no longer uses the Docker SDK for Python. It requires ``requests`` to be installed, + and depending on the features used has some more requirements. If the Docker SDK for Python is installed, + these requirements are likely met (https://github.com/ansible-collections/community.docker/pull/409)." diff --git a/plugins/modules/docker_network_info.py b/plugins/modules/docker_network_info.py index 202c7617d..bc4e4210e 100644 --- a/plugins/modules/docker_network_info.py +++ b/plugins/modules/docker_network_info.py @@ -27,15 +27,13 @@ type: str required: yes extends_documentation_fragment: -- community.docker.docker -- community.docker.docker.docker_py_1_documentation +- community.docker.docker.api_documentation author: - "Dave Bendit (@DBendit)" requirements: - - "L(Docker SDK for Python,https://docker-py.readthedocs.io/en/stable/) >= 1.8.0" - "Docker API >= 1.25" ''' @@ -102,16 +100,11 @@ from ansible.module_utils.common.text.converters import to_native -try: - from docker.errors import DockerException -except ImportError: - # missing Docker SDK for Python handled in ansible.module_utils.docker.common - pass - -from ansible_collections.community.docker.plugins.module_utils.common import ( +from ansible_collections.community.docker.plugins.module_utils.common_api import ( AnsibleDockerClient, RequestException, ) +from ansible_collections.community.docker.plugins.module_utils._api.errors import DockerException def main(): diff --git a/tests/integration/targets/docker_network_info/tasks/main.yml b/tests/integration/targets/docker_network_info/tasks/main.yml index 4d4ff698f..34f46559a 100644 --- a/tests/integration/targets/docker_network_info/tasks/main.yml +++ b/tests/integration/targets/docker_network_info/tasks/main.yml @@ -70,7 +70,7 @@ - "'is too new. Maximum supported API version is' in docker_inspect.stderr" when: docker_inspect is failed - when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.25', '>=') + when: docker_api_version is version('1.25', '>=') - fail: msg="Too old docker / docker-py version to run docker_network_info tests!" - when: not(docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6) + when: not(docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6) From 4b2cbb2a584b28d81655aeb0f5c6fad3cb9bb785 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Sun, 3 Jul 2022 16:31:46 +0200 Subject: [PATCH 2/2] Improve error messages. --- plugins/modules/docker_network_info.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/modules/docker_network_info.py b/plugins/modules/docker_network_info.py index bc4e4210e..18a65924e 100644 --- a/plugins/modules/docker_network_info.py +++ b/plugins/modules/docker_network_info.py @@ -126,10 +126,10 @@ def main(): network=network, ) except DockerException as e: - client.fail('An unexpected docker error occurred: {0}'.format(to_native(e)), exception=traceback.format_exc()) + client.fail('An unexpected Docker error occurred: {0}'.format(to_native(e)), exception=traceback.format_exc()) except RequestException as e: client.fail( - 'An unexpected requests error occurred when Docker SDK for Python tried to talk to the docker daemon: {0}'.format(to_native(e)), + 'An unexpected requests error occurred when trying to talk to the Docker daemon: {0}'.format(to_native(e)), exception=traceback.format_exc())