From 1e286852b218a882727539ad895d38c9b193441e Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Sat, 9 Dec 2023 18:38:54 +0100 Subject: [PATCH] [stable-2] Integration tests: split up Docker setup, move docker_compose tests into own group (#719) * Rename setup role. * Create new CI group 6, and move docker_compose v1 tests into there. * Split up Docker setup in integration tests. * Change setup_docker_compose_v1 to install its own Docker SDK for Python. * Restrict Docker SDK for Python to < 7.0.0 in EE. --- .azure-pipelines/azure-pipelines.yml | 3 ++ .github/workflows/ansible-test.yml | 48 +++++++++++++++++++ changelogs/fragments/719-ee-reqs.yml | 2 + meta/ee-requirements.txt | 2 +- .../connection_docker_api/meta/main.yml | 1 + .../targets/connection_docker_api/setup.yml | 4 ++ .../targets/docker_compose/aliases | 2 +- .../targets/docker_compose/meta/main.yml | 2 +- .../targets/docker_config/meta/main.yml | 1 + .../targets/docker_container/meta/main.yml | 1 + .../docker_container_copy_into/meta/main.yml | 9 ++++ .../docker_container_exec/meta/main.yml | 1 + .../docker_container_info/meta/main.yml | 1 + .../targets/docker_host_info/meta/main.yml | 1 + .../targets/docker_image_info/meta/main.yml | 1 + .../targets/docker_image_load/meta/main.yml | 1 + .../targets/docker_network/meta/main.yml | 1 + .../targets/docker_network_info/meta/main.yml | 1 + .../targets/docker_node/meta/main.yml | 1 + .../targets/docker_node_info/meta/main.yml | 1 + .../targets/docker_plugin/meta/main.yml | 1 + .../targets/docker_prune/meta/main.yml | 1 + .../targets/docker_secret/meta/main.yml | 1 + .../targets/docker_swarm/meta/main.yml | 1 + .../targets/docker_swarm_info/meta/main.yml | 1 + .../docker_swarm_service/meta/main.yml | 1 + .../docker_swarm_service_info/meta/main.yml | 1 + .../targets/docker_volume/meta/main.yml | 1 + .../targets/docker_volume_info/meta/main.yml | 1 + .../generic_connection_tests/meta/main.yml | 11 +++++ .../generic_ssh_connection/meta/main.yml | 1 + .../inventory_docker_containers/meta/main.yml | 1 + .../inventory_docker_swarm/meta/main.yml | 1 + .../playbooks/swarm_setup.yml | 4 ++ .../targets/setup_docker/defaults/main.yml | 5 -- .../targets/setup_docker/handlers/main.yml | 7 --- .../targets/setup_docker/tasks/main.yml | 37 +------------- .../targets/setup_docker/vars/RedHat-7.yml | 3 -- .../targets/setup_docker/vars/Ubuntu-14.yml | 5 -- .../setup_docker_compose/vars/RedHat-7.yml | 2 - .../defaults/main.yml | 5 ++ .../meta/main.yml | 0 .../tasks/Alpine.yml | 0 .../tasks/Archlinux.yml | 0 .../tasks/Debian.yml | 0 .../tasks/Fedora.yml | 0 .../tasks/RedHat-7.yml | 0 .../tasks/RedHat-8.yml | 0 .../tasks/RedHat-9.yml | 0 .../tasks/Suse.yml | 0 .../tasks/main.yml | 0 .../tasks/setup.yml | 22 ++++++++- .../vars/Archlinux.yml | 0 .../vars/CentOS-8.yml | 0 .../vars/Debian-11.yml | 8 ++++ .../vars/Debian-12.yml | 8 ++++ .../setup_docker_compose_v1/vars/RedHat-7.yml | 6 +++ .../vars/RedHat-8.yml | 0 .../vars/RedHat-9.yml | 0 .../vars/Suse-py2.yml | 0 .../vars/Suse-py3.yml | 0 .../vars/Ubuntu-14.yml | 9 ++++ .../vars/Ubuntu-16.yml | 0 .../vars/Ubuntu-18.yml | 0 .../vars/Ubuntu.yml | 0 .../vars/default.yml | 0 .../meta/main.yml | 7 +++ .../tasks/main.yml | 25 ++++++++++ .../targets/setup_docker_registry/aliases | 1 + .../setup_docker_registry/meta/main.yml | 2 + .../setup_docker_registry/tasks/setup.yml | 8 ++++ .../setup_docker_sdk_for_python/aliases | 5 ++ .../defaults/main.yml | 10 ++++ .../setup_docker_sdk_for_python/meta/main.yml | 8 ++++ .../tasks/main.yml | 47 ++++++++++++++++++ .../vars/RedHat-7.yml | 8 ++++ .../vars/Ubuntu-14.yml | 9 ++++ .../vars/default.yml | 4 ++ 78 files changed, 301 insertions(+), 61 deletions(-) create mode 100644 changelogs/fragments/719-ee-reqs.yml create mode 100644 tests/integration/targets/docker_container_copy_into/meta/main.yml create mode 100644 tests/integration/targets/generic_connection_tests/meta/main.yml delete mode 100644 tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/defaults/main.yml (56%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/meta/main.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/Alpine.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/Archlinux.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/Debian.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/Fedora.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/RedHat-7.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/RedHat-8.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/RedHat-9.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/Suse.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/main.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/tasks/setup.yml (74%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/Archlinux.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/CentOS-8.yml (100%) create mode 100644 tests/integration/targets/setup_docker_compose_v1/vars/Debian-11.yml create mode 100644 tests/integration/targets/setup_docker_compose_v1/vars/Debian-12.yml create mode 100644 tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.yml rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/RedHat-8.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/RedHat-9.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/Suse-py2.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/Suse-py3.yml (100%) create mode 100644 tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-14.yml rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/Ubuntu-16.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/Ubuntu-18.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/Ubuntu.yml (100%) rename tests/integration/targets/{setup_docker_compose => setup_docker_compose_v1}/vars/default.yml (100%) create mode 100644 tests/integration/targets/setup_docker_current_container_network_ip/meta/main.yml create mode 100644 tests/integration/targets/setup_docker_current_container_network_ip/tasks/main.yml create mode 100644 tests/integration/targets/setup_docker_sdk_for_python/aliases create mode 100644 tests/integration/targets/setup_docker_sdk_for_python/defaults/main.yml create mode 100644 tests/integration/targets/setup_docker_sdk_for_python/meta/main.yml create mode 100644 tests/integration/targets/setup_docker_sdk_for_python/tasks/main.yml create mode 100644 tests/integration/targets/setup_docker_sdk_for_python/vars/RedHat-7.yml create mode 100644 tests/integration/targets/setup_docker_sdk_for_python/vars/Ubuntu-14.yml create mode 100644 tests/integration/targets/setup_docker_sdk_for_python/vars/default.yml diff --git a/.azure-pipelines/azure-pipelines.yml b/.azure-pipelines/azure-pipelines.yml index d5ed0eca7..a64e06cbc 100644 --- a/.azure-pipelines/azure-pipelines.yml +++ b/.azure-pipelines/azure-pipelines.yml @@ -84,6 +84,7 @@ stages: groups: - 4 - 5 + - 6 ### Community Docker - stage: Docker_community_2_14 @@ -103,6 +104,7 @@ stages: groups: - 4 - 5 + - 6 ### Remote - stage: Remote_2_14 @@ -122,6 +124,7 @@ stages: - 3 - 4 - 5 + - 6 ## Finally diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index cb3f7f2e7..8f8ea4e39 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -114,6 +114,10 @@ jobs: docker: fedora31 python: '' target: shippable/posix/group5/ + - ansible: '2.9' + docker: fedora31 + python: '' + target: shippable/posix/group6/ # 2.10 - ansible: '2.10' docker: fedora32 @@ -123,6 +127,10 @@ jobs: docker: fedora32 python: '' target: shippable/posix/group5/ + - ansible: '2.10' + docker: fedora32 + python: '' + target: shippable/posix/group6/ - ansible: '2.10' docker: ubuntu1604 python: '' @@ -131,6 +139,10 @@ jobs: docker: ubuntu1604 python: '' target: shippable/posix/group5/ + - ansible: '2.10' + docker: ubuntu1604 + python: '' + target: shippable/posix/group6/ # 2.11 - ansible: '2.11' docker: fedora33 @@ -140,6 +152,10 @@ jobs: docker: fedora33 python: '' target: shippable/posix/group5/ + - ansible: '2.11' + docker: fedora33 + python: '' + target: shippable/posix/group6/ - ansible: '2.11' docker: alpine3 python: '' @@ -148,6 +164,10 @@ jobs: docker: alpine3 python: '' target: shippable/posix/group5/ + - ansible: '2.11' + docker: alpine3 + python: '' + target: shippable/posix/group6/ # 2.12 - ansible: '2.12' docker: fedora33 @@ -157,6 +177,10 @@ jobs: docker: fedora33 python: '' target: shippable/posix/group5/ + - ansible: '2.12' + docker: fedora33 + python: '' + target: shippable/posix/group6/ - ansible: '2.12' docker: fedora34 python: '' @@ -165,6 +189,10 @@ jobs: docker: fedora34 python: '' target: shippable/posix/group5/ + - ansible: '2.12' + docker: fedora34 + python: '' + target: shippable/posix/group6/ - ansible: '2.12' docker: ubuntu1804 python: '' @@ -173,6 +201,10 @@ jobs: docker: ubuntu1804 python: '' target: shippable/posix/group5/ + - ansible: '2.12' + docker: ubuntu1804 + python: '' + target: shippable/posix/group6/ # 2.13 # NB: We originally wanted to use centos7, but that requires cgroups v1. # So we used alpine3 instead. @@ -184,6 +216,10 @@ jobs: docker: alpine3 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: alpine3 + python: '' + target: shippable/posix/group6/ - ansible: '2.13' docker: fedora35 python: '' @@ -192,6 +228,10 @@ jobs: docker: fedora35 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: fedora35 + python: '' + target: shippable/posix/group6/ - ansible: '2.13' docker: opensuse15py2 python: '' @@ -200,6 +240,10 @@ jobs: docker: opensuse15py2 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: opensuse15py2 + python: '' + target: shippable/posix/group6/ - ansible: '2.13' docker: alpine3 python: '' @@ -208,6 +252,10 @@ jobs: docker: alpine3 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: alpine3 + python: '' + target: shippable/posix/group6/ steps: - name: >- diff --git a/changelogs/fragments/719-ee-reqs.yml b/changelogs/fragments/719-ee-reqs.yml new file mode 100644 index 000000000..af1742646 --- /dev/null +++ b/changelogs/fragments/719-ee-reqs.yml @@ -0,0 +1,2 @@ +bugfixes: + - "Execution Environment requirements - restrict Docker SDK for Python to < 7.0.0, as 7.0.0 is incompatible with docker-compose (https://github.com/ansible-collections/community.docker/pull/719)." diff --git a/meta/ee-requirements.txt b/meta/ee-requirements.txt index 52fdd0170..2e33479da 100644 --- a/meta/ee-requirements.txt +++ b/meta/ee-requirements.txt @@ -1,2 +1,2 @@ -docker +docker<7.0.0 docker-compose diff --git a/tests/integration/targets/connection_docker_api/meta/main.yml b/tests/integration/targets/connection_docker_api/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/connection_docker_api/meta/main.yml +++ b/tests/integration/targets/connection_docker_api/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/connection_docker_api/setup.yml b/tests/integration/targets/connection_docker_api/setup.yml index a709d2c79..dd333705b 100644 --- a/tests/integration/targets/connection_docker_api/setup.yml +++ b/tests/integration/targets/connection_docker_api/setup.yml @@ -8,3 +8,7 @@ - name: Setup docker import_role: name: setup_docker + + - name: Setup docker + import_role: + name: setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_compose/aliases b/tests/integration/targets/docker_compose/aliases index 02b78723c..85687fd08 100644 --- a/tests/integration/targets/docker_compose/aliases +++ b/tests/integration/targets/docker_compose/aliases @@ -1,2 +1,2 @@ -shippable/posix/group4 +shippable/posix/group6 destructive diff --git a/tests/integration/targets/docker_compose/meta/main.yml b/tests/integration/targets/docker_compose/meta/main.yml index a033c656f..f834b2fa9 100644 --- a/tests/integration/targets/docker_compose/meta/main.yml +++ b/tests/integration/targets/docker_compose/meta/main.yml @@ -1,4 +1,4 @@ --- dependencies: - - setup_docker_compose + - setup_docker_compose_v1 - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_config/meta/main.yml b/tests/integration/targets/docker_config/meta/main.yml index a2419b9ad..9534afb0c 100644 --- a/tests/integration/targets/docker_config/meta/main.yml +++ b/tests/integration/targets/docker_config/meta/main.yml @@ -1,4 +1,5 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_container/meta/main.yml b/tests/integration/targets/docker_container/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_container/meta/main.yml +++ b/tests/integration/targets/docker_container/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_container_copy_into/meta/main.yml b/tests/integration/targets/docker_container_copy_into/meta/main.yml new file mode 100644 index 000000000..9eeb6626b --- /dev/null +++ b/tests/integration/targets/docker_container_copy_into/meta/main.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_docker + - setup_docker_sdk_for_python + - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_container_exec/meta/main.yml b/tests/integration/targets/docker_container_exec/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_container_exec/meta/main.yml +++ b/tests/integration/targets/docker_container_exec/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_container_info/meta/main.yml b/tests/integration/targets/docker_container_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_container_info/meta/main.yml +++ b/tests/integration/targets/docker_container_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_host_info/meta/main.yml b/tests/integration/targets/docker_host_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_host_info/meta/main.yml +++ b/tests/integration/targets/docker_host_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_image_info/meta/main.yml b/tests/integration/targets/docker_image_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_image_info/meta/main.yml +++ b/tests/integration/targets/docker_image_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_image_load/meta/main.yml b/tests/integration/targets/docker_image_load/meta/main.yml index a2419b9ad..9534afb0c 100644 --- a/tests/integration/targets/docker_image_load/meta/main.yml +++ b/tests/integration/targets/docker_image_load/meta/main.yml @@ -1,4 +1,5 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_network/meta/main.yml b/tests/integration/targets/docker_network/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_network/meta/main.yml +++ b/tests/integration/targets/docker_network/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_network_info/meta/main.yml b/tests/integration/targets/docker_network_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_network_info/meta/main.yml +++ b/tests/integration/targets/docker_network_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_node/meta/main.yml b/tests/integration/targets/docker_node/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_node/meta/main.yml +++ b/tests/integration/targets/docker_node/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_node_info/meta/main.yml b/tests/integration/targets/docker_node_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_node_info/meta/main.yml +++ b/tests/integration/targets/docker_node_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_plugin/meta/main.yml b/tests/integration/targets/docker_plugin/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_plugin/meta/main.yml +++ b/tests/integration/targets/docker_plugin/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_prune/meta/main.yml b/tests/integration/targets/docker_prune/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_prune/meta/main.yml +++ b/tests/integration/targets/docker_prune/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_secret/meta/main.yml b/tests/integration/targets/docker_secret/meta/main.yml index a2419b9ad..9534afb0c 100644 --- a/tests/integration/targets/docker_secret/meta/main.yml +++ b/tests/integration/targets/docker_secret/meta/main.yml @@ -1,4 +1,5 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_swarm/meta/main.yml b/tests/integration/targets/docker_swarm/meta/main.yml index 1257e9e0c..467bee78f 100644 --- a/tests/integration/targets/docker_swarm/meta/main.yml +++ b/tests/integration/targets/docker_swarm/meta/main.yml @@ -1,5 +1,6 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_openssl - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_swarm_info/meta/main.yml b/tests/integration/targets/docker_swarm_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_swarm_info/meta/main.yml +++ b/tests/integration/targets/docker_swarm_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_swarm_service/meta/main.yml b/tests/integration/targets/docker_swarm_service/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_swarm_service/meta/main.yml +++ b/tests/integration/targets/docker_swarm_service/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_swarm_service_info/meta/main.yml b/tests/integration/targets/docker_swarm_service_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_swarm_service_info/meta/main.yml +++ b/tests/integration/targets/docker_swarm_service_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_volume/meta/main.yml b/tests/integration/targets/docker_volume/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_volume/meta/main.yml +++ b/tests/integration/targets/docker_volume/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_volume_info/meta/main.yml b/tests/integration/targets/docker_volume_info/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/docker_volume_info/meta/main.yml +++ b/tests/integration/targets/docker_volume_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/generic_connection_tests/meta/main.yml b/tests/integration/targets/generic_connection_tests/meta/main.yml new file mode 100644 index 000000000..a9fdfb119 --- /dev/null +++ b/tests/integration/targets/generic_connection_tests/meta/main.yml @@ -0,0 +1,11 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_docker + - setup_docker_sdk_for_python + - setup_docker_current_container_network_ip + - setup_openssl + - setup_remote_tmp_dir diff --git a/tests/integration/targets/generic_ssh_connection/meta/main.yml b/tests/integration/targets/generic_ssh_connection/meta/main.yml index b69559bec..20f853a1d 100644 --- a/tests/integration/targets/generic_ssh_connection/meta/main.yml +++ b/tests/integration/targets/generic_ssh_connection/meta/main.yml @@ -2,3 +2,4 @@ dependencies: - setup_docker - setup_paramiko + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/inventory_docker_containers/meta/main.yml b/tests/integration/targets/inventory_docker_containers/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/inventory_docker_containers/meta/main.yml +++ b/tests/integration/targets/inventory_docker_containers/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/inventory_docker_swarm/meta/main.yml b/tests/integration/targets/inventory_docker_swarm/meta/main.yml index 07da8c6dd..c2484f5ac 100644 --- a/tests/integration/targets/inventory_docker_swarm/meta/main.yml +++ b/tests/integration/targets/inventory_docker_swarm/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml b/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml index 6fe0f874a..304910c92 100644 --- a/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml +++ b/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml @@ -9,6 +9,10 @@ import_role: name: setup_docker + - name: Setup Docker SDK for Python + import_role: + name: setup_docker_sdk_for_python + - name: Create a Swarm cluster community.docker.docker_swarm: state: present diff --git a/tests/integration/targets/setup_docker/defaults/main.yml b/tests/integration/targets/setup_docker/defaults/main.yml index 661a309ee..1c799d6d5 100644 --- a/tests/integration/targets/setup_docker/defaults/main.yml +++ b/tests/integration/targets/setup_docker/defaults/main.yml @@ -1,7 +1,6 @@ --- docker_cli_version: '0.0' docker_api_version: '0.0' -docker_py_version: '0.0' docker_skip_cleanup: yes docker_prereq_packages: [] docker_packages: @@ -9,10 +8,6 @@ docker_packages: docker_cli_packages: - docker-ce-cli -docker_pip_extra_packages: [] -docker_pip_package: docker -docker_pip_package_limit: '' - docker_cleanup_packages: - docker - docker-ce diff --git a/tests/integration/targets/setup_docker/handlers/main.yml b/tests/integration/targets/setup_docker/handlers/main.yml index a389f91df..b19f2b69b 100644 --- a/tests/integration/targets/setup_docker/handlers/main.yml +++ b/tests/integration/targets/setup_docker/handlers/main.yml @@ -1,10 +1,3 @@ -- name: Remove pip packages - pip: - state: present - name: "{{ [docker_pip_package] | union(docker_pip_extra_packages) }}" - listen: cleanup docker - when: not docker_skip_cleanup | bool - - name: Remove docker pagkages action: "{{ ansible_facts.pkg_mgr }}" args: diff --git a/tests/integration/targets/setup_docker/tasks/main.yml b/tests/integration/targets/setup_docker/tasks/main.yml index c7057318a..0bb093144 100644 --- a/tests/integration/targets/setup_docker/tasks/main.yml +++ b/tests/integration/targets/setup_docker/tasks/main.yml @@ -64,41 +64,18 @@ register: docker_api_version_stdout ignore_errors: yes - - name: Limit docker pypi package version to < 4.3.0 - set_fact: - docker_pip_package_limit: '<4.3.0' - when: (docker_api_version_stdout.stdout | default('0.0')) is version('1.39', '<') - - - name: Install/upgrade Python requirements - pip: - name: "{{ [docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages }}" - extra_args: "-c {{ remote_constraints }}" - state: "{{ 'latest' if force_docker_sdk_for_python_pypi | default(false) else 'present' }}" - notify: cleanup docker - - # Detect docker CLI, API and docker-py versions + # Detect docker CLI version - name: Check Docker CLI version command: "docker version -f {% raw %}'{{.Client.Version}}'{% endraw %}" register: docker_cli_version_stdout ignore_errors: yes - - name: Check Docker API version - command: "{{ ansible_python.executable }} -c 'import docker; print(docker.from_env().version()[\"ApiVersion\"])'" - register: docker_api_version_stdout - ignore_errors: yes - - - name: Check docker-py API version - command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'" - register: docker_py_version_stdout - ignore_errors: yes - - set_fact: docker_cli_version: "{{ docker_cli_version_stdout.stdout | default('0.0') }}" docker_api_version: "{{ docker_api_version_stdout.stdout | default('0.0') }}" - docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}" - debug: - msg: "Docker CLI version: {{ docker_cli_version }}; Docker API version: {{ docker_api_version }}; docker-py library version: {{ docker_py_version }}" + msg: "Docker CLI version: {{ docker_cli_version }}; Docker API version: {{ docker_api_version }}" - block: # Cleanup docker daemon @@ -163,13 +140,3 @@ images: "{{ docker_images.stdout_lines | default([]) }}" when: docker_cli_version is version('0.0', '>') - - - name: Inspect current container - docker_container_info: - name: "{{ ansible_module_container_id }}" - register: current_container_info - when: ansible_module_running_in_container - - - name: Determine network name - set_fact: - current_container_network_ip: "{{ (current_container_info.container.NetworkSettings.Networks | dictsort)[0].0 | default('') if ansible_module_running_in_container else '' }}" diff --git a/tests/integration/targets/setup_docker/vars/RedHat-7.yml b/tests/integration/targets/setup_docker/vars/RedHat-7.yml index 100a878d1..313550c11 100644 --- a/tests/integration/targets/setup_docker/vars/RedHat-7.yml +++ b/tests/integration/targets/setup_docker/vars/RedHat-7.yml @@ -4,6 +4,3 @@ docker_prereq_packages: - device-mapper-persistent-data - lvm2 - libseccomp - -docker_pip_extra_packages: - - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml index 84130934e..ed97d539c 100644 --- a/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml +++ b/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml @@ -1,6 +1 @@ --- -docker_pip_extra_packages: - # Installing requests >=2.12.0 on Ubuntu 14.04 breaks certificate validation. We restrict to an older version - # to ensure out get_url tests work out fine. This is only an issue if pyOpenSSL is also installed. - # Not sure why RHEL7 needs this specific version - - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml deleted file mode 100644 index bc5b92ae2..000000000 --- a/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -skip_docker_compose: true diff --git a/tests/integration/targets/setup_docker_compose/defaults/main.yml b/tests/integration/targets/setup_docker_compose_v1/defaults/main.yml similarity index 56% rename from tests/integration/targets/setup_docker_compose/defaults/main.yml rename to tests/integration/targets/setup_docker_compose_v1/defaults/main.yml index 0bccf7964..21a30f21b 100644 --- a/tests/integration/targets/setup_docker_compose/defaults/main.yml +++ b/tests/integration/targets/setup_docker_compose_v1/defaults/main.yml @@ -1,5 +1,10 @@ --- skip_docker_compose: false + +docker_pip_extra_packages: [] +docker_pip_package: docker +docker_pip_package_limit: '<7.0.0' + docker_compose_packages: - docker-compose docker_compose_pip_packages: diff --git a/tests/integration/targets/setup_docker_compose/meta/main.yml b/tests/integration/targets/setup_docker_compose_v1/meta/main.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/meta/main.yml rename to tests/integration/targets/setup_docker_compose_v1/meta/main.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Alpine.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Alpine.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Alpine.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Alpine.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Archlinux.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Archlinux.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Archlinux.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Archlinux.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Debian.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Debian.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Debian.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Debian.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Fedora.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Fedora.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Fedora.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Fedora.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/RedHat-7.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-7.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/RedHat-7.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-7.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/RedHat-8.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-8.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/RedHat-8.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-8.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/RedHat-9.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-9.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/RedHat-9.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-9.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Suse.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Suse.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Suse.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Suse.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/main.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/main.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/main.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/main.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/setup.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml similarity index 74% rename from tests/integration/targets/setup_docker_compose/tasks/setup.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml index c82fb817c..2336d2f22 100644 --- a/tests/integration/targets/setup_docker_compose/tasks/setup.yml +++ b/tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml @@ -33,21 +33,41 @@ paths: - "{{ role_path }}/tasks" + - name: Limit docker pypi package version to < 4.3.0 + set_fact: + docker_pip_package_limit: '<4.3.0' + when: docker_api_version is version('1.39', '<') + + - name: Install/upgrade Docker SDK for Python + pip: + name: "{{ [docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages }}" + extra_args: "-c {{ remote_constraints }}" + state: present + - name: Install docker-compose pip: state: present name: "{{ docker_compose_pip_packages }}" extra_args: "-c {{ remote_constraints }}" + - name: Check docker-py version + command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'" + register: docker_py_version_stdout + ignore_errors: true + - name: Register docker-compose version command: "{{ ansible_python.executable }} -c 'import compose; print(compose.__version__)'" register: docker_compose_version ignore_errors: true - - name: Declare docker-compose version + - name: Declare docker-py and docker-compose version set_fact: + docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}" docker_compose_version: "{{ docker_compose_version.stdout | default('0.0.0') }}" + - debug: + msg: "Docker SDK for Python version: {{ docker_py_version }}; Docker Compose version: {{ docker_compose_version }}" + - name: Declare docker-compose as existing set_fact: has_docker_compose: true diff --git a/tests/integration/targets/setup_docker_compose/vars/Archlinux.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Archlinux.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Archlinux.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Archlinux.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/CentOS-8.yml b/tests/integration/targets/setup_docker_compose_v1/vars/CentOS-8.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/CentOS-8.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/CentOS-8.yml diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/Debian-11.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-11.yml new file mode 100644 index 000000000..727d541fd --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-11.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # https://github.com/docker/docker-py/issues/3113 + - requests<2.29.0 diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/Debian-12.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-12.yml new file mode 100644 index 000000000..727d541fd --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-12.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # https://github.com/docker/docker-py/issues/3113 + - requests<2.29.0 diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.yml new file mode 100644 index 000000000..8903e40d2 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.yml @@ -0,0 +1,6 @@ +--- +skip_docker_compose: true + +docker_pip_extra_packages: + # Not sure why RHEL7 needs this specific version + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_compose/vars/RedHat-8.yml b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-8.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/RedHat-8.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/RedHat-8.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/RedHat-9.yml b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-9.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/RedHat-9.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/RedHat-9.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Suse-py2.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Suse-py2.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Suse-py2.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Suse-py2.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Suse-py3.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Suse-py3.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Suse-py3.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Suse-py3.yml diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-14.yml new file mode 100644 index 000000000..f701e1f77 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-14.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # Installing requests >=2.12.0 on Ubuntu 14.04 breaks certificate validation. We restrict to an older version + # to ensure out get_url tests work out fine. This is only an issue if pyOpenSSL is also installed. + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_compose/vars/Ubuntu-16.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-16.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Ubuntu-16.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-16.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Ubuntu-18.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-18.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Ubuntu-18.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-18.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Ubuntu.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Ubuntu.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/default.yml b/tests/integration/targets/setup_docker_compose_v1/vars/default.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/default.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/default.yml diff --git a/tests/integration/targets/setup_docker_current_container_network_ip/meta/main.yml b/tests/integration/targets/setup_docker_current_container_network_ip/meta/main.yml new file mode 100644 index 000000000..48b38f939 --- /dev/null +++ b/tests/integration/targets/setup_docker_current_container_network_ip/meta/main.yml @@ -0,0 +1,7 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/setup_docker_current_container_network_ip/tasks/main.yml b/tests/integration/targets/setup_docker_current_container_network_ip/tasks/main.yml new file mode 100644 index 000000000..21ed39723 --- /dev/null +++ b/tests/integration/targets/setup_docker_current_container_network_ip/tasks/main.yml @@ -0,0 +1,25 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +#################################################################### +# WARNING: These are designed specifically for Ansible tests # +# and should not be used as examples of how to write Ansible roles # +#################################################################### + +- name: Setup Docker + when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6'] + block: + - name: Detect whether we are running inside a container + current_container_facts: + + - name: Inspect current container + docker_container_info: + name: "{{ ansible_module_container_id }}" + register: current_container_info + when: ansible_module_running_in_container + + - name: Determine network name + set_fact: + current_container_network_ip: "{{ (current_container_info.container.NetworkSettings.Networks | dictsort)[0].0 | default('') if ansible_module_running_in_container else '' }}" diff --git a/tests/integration/targets/setup_docker_registry/aliases b/tests/integration/targets/setup_docker_registry/aliases index 688c8884b..26097932c 100644 --- a/tests/integration/targets/setup_docker_registry/aliases +++ b/tests/integration/targets/setup_docker_registry/aliases @@ -1,2 +1,3 @@ needs/target/setup_docker +needs/target/setup_docker_current_container_network_ip needs/target/setup_openssl diff --git a/tests/integration/targets/setup_docker_registry/meta/main.yml b/tests/integration/targets/setup_docker_registry/meta/main.yml index 2d30cdf96..af9bef7d0 100644 --- a/tests/integration/targets/setup_docker_registry/meta/main.yml +++ b/tests/integration/targets/setup_docker_registry/meta/main.yml @@ -1,4 +1,6 @@ dependencies: #- setup_docker -- done in setup.yml, to work around cleanup problems! + #- setup_docker_sdk_for_python + #- setup_docker_current_container_network_ip - setup_openssl - setup_remote_tmp_dir diff --git a/tests/integration/targets/setup_docker_registry/tasks/setup.yml b/tests/integration/targets/setup_docker_registry/tasks/setup.yml index 7962fbee0..2c170ec91 100644 --- a/tests/integration/targets/setup_docker_registry/tasks/setup.yml +++ b/tests/integration/targets/setup_docker_registry/tasks/setup.yml @@ -12,6 +12,14 @@ include_role: name: setup_docker +- name: Setup Docker SDK for Python + include_role: + name: setup_docker_sdk_for_python + +- name: Figure out current container's network IP + include_role: + name: setup_docker_current_container_network_ip + - name: Create random name prefix and test registry name set_fact: docker_registry_container_name_registry: '{{ ''ansible-docker-test-registry-%0x'' % ((2**32) | random) }}' diff --git a/tests/integration/targets/setup_docker_sdk_for_python/aliases b/tests/integration/targets/setup_docker_sdk_for_python/aliases new file mode 100644 index 000000000..0a430dff1 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/aliases @@ -0,0 +1,5 @@ +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +needs/target/setup_epel diff --git a/tests/integration/targets/setup_docker_sdk_for_python/defaults/main.yml b/tests/integration/targets/setup_docker_sdk_for_python/defaults/main.yml new file mode 100644 index 000000000..29a257f81 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/defaults/main.yml @@ -0,0 +1,10 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_py_version: '0.0' + +docker_pip_extra_packages: [] +docker_pip_package: docker +docker_pip_package_limit: '' diff --git a/tests/integration/targets/setup_docker_sdk_for_python/meta/main.yml b/tests/integration/targets/setup_docker_sdk_for_python/meta/main.yml new file mode 100644 index 000000000..d4a5c7d05 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/meta/main.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_remote_constraints + - setup_pkg_mgr diff --git a/tests/integration/targets/setup_docker_sdk_for_python/tasks/main.yml b/tests/integration/targets/setup_docker_sdk_for_python/tasks/main.yml new file mode 100644 index 000000000..91cd5fcba --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/tasks/main.yml @@ -0,0 +1,47 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +#################################################################### +# WARNING: These are designed specifically for Ansible tests # +# and should not be used as examples of how to write Ansible roles # +#################################################################### + +- name: Setup Docker SDK for Python + when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6'] + block: + - name: Include distribution specific variables + include_vars: "{{ lookup('first_found', params) }}" + vars: + params: + files: + - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml" + - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml" + - "{{ ansible_facts.distribution }}.yml" + - "{{ ansible_facts.os_family }}.yml" + - default.yml + paths: + - "{{ role_path }}/vars" + + - name: Limit docker pypi package version to < 4.3.0 + set_fact: + docker_pip_package_limit: '<4.3.0' + when: docker_api_version is version('1.39', '<') + + - name: Install/upgrade Python requirements + pip: + name: "{{ [docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages }}" + extra_args: "-c {{ remote_constraints }}" + state: "{{ 'latest' if force_docker_sdk_for_python_pypi | default(false) else 'present' }}" + + - name: Check docker-py version + command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'" + register: docker_py_version_stdout + ignore_errors: true + + - set_fact: + docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}" + + - debug: + msg: "Docker SDK for Python version: {{ docker_py_version }}" diff --git a/tests/integration/targets/setup_docker_sdk_for_python/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_sdk_for_python/vars/RedHat-7.yml new file mode 100644 index 000000000..9fa5efa5c --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/vars/RedHat-7.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # Not sure why RHEL7 needs this specific version + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_sdk_for_python/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker_sdk_for_python/vars/Ubuntu-14.yml new file mode 100644 index 000000000..f701e1f77 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/vars/Ubuntu-14.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # Installing requests >=2.12.0 on Ubuntu 14.04 breaks certificate validation. We restrict to an older version + # to ensure out get_url tests work out fine. This is only an issue if pyOpenSSL is also installed. + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_sdk_for_python/vars/default.yml b/tests/integration/targets/setup_docker_sdk_for_python/vars/default.yml new file mode 100644 index 000000000..f55df21f8 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/vars/default.yml @@ -0,0 +1,4 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later