diff options
author | Felix Fontein <felix@fontein.de> | 2019-04-17 19:50:57 +0200 |
---|---|---|
committer | Toshio Kuratomi <a.badger@gmail.com> | 2019-04-23 12:24:56 -0600 |
commit | d83adc4debc5dbada77b15918aec7398525893a4 (patch) | |
tree | 33b984fb70746e89958f64475e9a97626d2ae256 /test | |
parent | c4d98fa1342c9f54e30d4d4ac71a3f8d185374d6 (diff) | |
download | ansible-d83adc4debc5dbada77b15918aec7398525893a4.tar.gz |
docker modules: make sure everything works with older docker-py versions (#55258)
* General test improvements.
* Adjust tests to older docker-py versions.
* docker_swarm_server_info: work around problems with older docker-py versions
* Bump minimal docker-py version for options network_filters and disk_usage.
* More general test improvements.
* Correct usage of docker_image.
* Put files into output directory.
* Speed up test.
* Remove old check.
(cherry picked from commit 12d26eceb1e178a0f42ddecb3626dea2ad826c3f)
Diffstat (limited to 'test')
16 files changed, 94 insertions, 29 deletions
diff --git a/test/integration/targets/docker_container/tasks/tests/options.yml b/test/integration/targets/docker_container/tasks/tests/options.yml index 7808c06b66..52260b2687 100644 --- a/test/integration/targets/docker_container/tasks/tests/options.yml +++ b/test/integration/targets/docker_container/tasks/tests/options.yml @@ -937,6 +937,7 @@ dns_search_domains: - example.org - example.com + force_kill: yes register: dns_search_domains_3 - name: dns_search_domains (changed elements) @@ -1000,6 +1001,7 @@ dns_servers: - 8.8.8.8 - 1.1.1.1 + force_kill: yes register: dns_servers_3 - name: dns_servers (changed elements) diff --git a/test/integration/targets/docker_container_info/tasks/main.yml b/test/integration/targets/docker_container_info/tasks/main.yml index a31dc32349..71d07fe0df 100644 --- a/test/integration/targets/docker_container_info/tasks/main.yml +++ b/test/integration/targets/docker_container_info/tasks/main.yml @@ -27,7 +27,6 @@ image: alpine:3.8 command: '/bin/sh -c "sleep 10m"' state: started - auto_remove: yes force_kill: yes - name: Inspect a present container @@ -45,12 +44,6 @@ - name: Dump docker inspect result debug: var=docker_inspect_result - - name: Cleanup - docker_container: - name: "{{ cname }}" - state: absent - force_kill: yes - - assert: that: - result.exists @@ -58,6 +51,13 @@ - "result.container" - "result.container == docker_inspect_result[0]" + always: + - name: Cleanup + docker_container: + name: "{{ cname }}" + state: absent + force_kill: yes + when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=') - fail: msg="Too old docker / docker-py version to run docker_container_info tests!" diff --git a/test/integration/targets/docker_host_info/tasks/test_host_info.yml b/test/integration/targets/docker_host_info/tasks/test_host_info.yml index 779e4ff32d..bbf3bf8e82 100644 --- a/test/integration/targets/docker_host_info/tasks/test_host_info.yml +++ b/test/integration/targets/docker_host_info/tasks/test_host_info.yml @@ -183,6 +183,7 @@ docker_host_info: disk_usage: yes register: output + ignore_errors: yes - name: assert reading docker host facts when docker is running and get disk usage assert: @@ -194,12 +195,19 @@ - 'output.images is not defined' - 'output.disk_usage.LayersSize is number' - 'output.disk_usage.BuilderSize is not defined' + when: docker_py_version is version('2.2.0', '>=') + - assert: + that: + - output is failed + - "('version is ' ~ docker_py_version ~'. Minimum version required is 2.2.0') in output.msg" + when: docker_py_version is version('2.2.0', '<') - name: Get info on Docker host and get disk usage with verbose output docker_host_info: disk_usage: yes verbose_output: yes register: output + ignore_errors: yes - name: assert reading docker host facts when docker is running and get disk usage with verbose output assert: @@ -211,6 +219,12 @@ - 'output.images is not defined' - 'output.disk_usage.LayersSize is number' - 'output.disk_usage.BuilderSize is number' + when: docker_py_version is version('2.2.0', '>=') + - assert: + that: + - output is failed + - "('version is ' ~ docker_py_version ~'. Minimum version required is 2.2.0') in output.msg" + when: docker_py_version is version('2.2.0', '<') - name: Get info on Docker host, disk usage and get all lists together docker_host_info: @@ -218,7 +232,7 @@ containers: yes networks: yes images: yes - disk_usage: yes + disk_usage: "{{ docker_py_version is version('2.2.0', '>=') }}" register: output - name: assert reading docker host facts when docker is running, disk usage and get lists together @@ -233,8 +247,11 @@ - 'output.volumes[0].Mountpoint is not defined' - 'output.images[0].Id is string' - 'output.images[0].ParentId is not defined' + - assert: + that: - 'output.disk_usage.LayersSize is number' - 'output.disk_usage.BuilderSize is not defined' + when: docker_py_version is version('2.2.0', '>=') - name: Get info on Docker host, disk usage and get all lists together with verbose output docker_host_info: @@ -242,7 +259,7 @@ containers: yes networks: yes images: yes - disk_usage: yes + disk_usage: "{{ docker_py_version is version('2.2.0', '>=') }}" verbose_output: yes register: output @@ -258,8 +275,11 @@ - 'output.volumes[0].Mountpoint is string' - 'output.images[0].Id is string' - 'output.images[0].ParentId is string' + - assert: + that: - 'output.disk_usage.LayersSize is number' - 'output.disk_usage.BuilderSize is number' + when: docker_py_version is version('2.2.0', '>=') always: - name: Delete container diff --git a/test/integration/targets/docker_image/tasks/tests/basic.yml b/test/integration/targets/docker_image/tasks/tests/basic.yml index 53195294e0..f87b4b2ffd 100644 --- a/test/integration/targets/docker_image/tasks/tests/basic.yml +++ b/test/integration/targets/docker_image/tasks/tests/basic.yml @@ -46,21 +46,24 @@ - name: Tag image with alias docker_image: + source: local name: "hello-world:latest" repository: "hello-world:alias" register: tag_1 - name: Tag image with alias (idempotent) docker_image: + source: local name: "hello-world:latest" repository: "hello-world:alias" register: tag_2 - name: Tag image with alias (force, still idempotent) docker_image: + source: local name: "hello-world:latest" repository: "hello-world:alias" - force: yes + force_tag: yes register: tag_3 - assert: @@ -105,7 +108,8 @@ name: "hello-world:latest" repository: "{{ registry_address }}/test/hello-world" push: yes - force: yes + source: local + force_tag: yes register: push_3 - assert: diff --git a/test/integration/targets/docker_image/tasks/tests/options.yml b/test/integration/targets/docker_image/tasks/tests/options.yml index 76975a8566..96d7a0afe4 100644 --- a/test/integration/targets/docker_image/tasks/tests/options.yml +++ b/test/integration/targets/docker_image/tasks/tests/options.yml @@ -228,7 +228,7 @@ - name: Archive image docker_image: name: "hello-world:latest" - archive_path: image.tar + archive_path: "{{ output_dir }}/image.tar" source: pull register: archive_image @@ -241,14 +241,14 @@ - name: load image (changed) docker_image: name: "hello-world:latest" - load_path: image.tar + load_path: "{{ output_dir }}/image.tar" source: load register: load_image - name: load image (idempotency) docker_image: name: "hello-world:latest" - load_path: image.tar + load_path: "{{ output_dir }}/image.tar" source: load register: load_image_1 diff --git a/test/integration/targets/docker_image_info/tasks/main.yml b/test/integration/targets/docker_image_info/tasks/main.yml index be7f7e8d9c..1063473693 100644 --- a/test/integration/targets/docker_image_info/tasks/main.yml +++ b/test/integration/targets/docker_image_info/tasks/main.yml @@ -17,7 +17,7 @@ - name: Make sure images are there docker_image: name: "{{ item }}" - pull: yes + source: pull state: present loop: - "hello-world:latest" diff --git a/test/integration/targets/docker_network/tasks/tests/ipam.yml b/test/integration/targets/docker_network/tasks/tests/ipam.yml index bc5b7db07c..45bb20c02c 100644 --- a/test/integration/targets/docker_network/tasks/tests/ipam.yml +++ b/test/integration/targets/docker_network/tasks/tests/ipam.yml @@ -221,6 +221,7 @@ ipam_driver_options: a: b register: network_1 + ignore_errors: yes - name: Create network with IPAM driver options (idempotence) docker_network: name: "{{ nname_ipam_3 }}" @@ -229,6 +230,7 @@ a: b diff: yes register: network_2 + ignore_errors: yes - name: Create network with IPAM driver options (change) docker_network: name: "{{ nname_ipam_3 }}" @@ -237,6 +239,7 @@ a: c diff: yes register: network_3 + ignore_errors: yes - name: Cleanup network docker_network: name: "{{ nname_ipam_3 }}" @@ -247,3 +250,9 @@ - network_1 is changed - network_2 is not changed - network_3 is changed + when: docker_py_version is version('2.0.0', '>=') +- assert: + that: + - network_1 is failed + - "('version is ' ~ docker_py_version ~'. Minimum version required is 2.0.0') in network_1.msg" + when: docker_py_version is version('2.0.0', '<') diff --git a/test/integration/targets/docker_node/tasks/test_node.yml b/test/integration/targets/docker_node/tasks/test_node.yml index 9658a8386e..bdc01afb88 100644 --- a/test/integration/targets/docker_node/tasks/test_node.yml +++ b/test/integration/targets/docker_node/tasks/test_node.yml @@ -19,6 +19,7 @@ - name: Create a Swarm cluster docker_swarm: state: present + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" register: output - name: assert changed when create a new swarm cluster diff --git a/test/integration/targets/docker_node_info/tasks/test_node_info.yml b/test/integration/targets/docker_node_info/tasks/test_node_info.yml index 3cdd06e90b..3ee5549b37 100644 --- a/test/integration/targets/docker_node_info/tasks/test_node_info.yml +++ b/test/integration/targets/docker_node_info/tasks/test_node_info.yml @@ -19,6 +19,7 @@ - name: Create a Swarm cluster docker_swarm: state: present + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" register: output - name: assert changed when create a new swarm cluster diff --git a/test/integration/targets/docker_prune/tasks/main.yml b/test/integration/targets/docker_prune/tasks/main.yml index e1ca68eea9..3d2f38392b 100644 --- a/test/integration/targets/docker_prune/tasks/main.yml +++ b/test/integration/targets/docker_prune/tasks/main.yml @@ -45,7 +45,8 @@ - volume.volume.Name in result.volumes - "'volumes_space_reclaimed' in result" # builder_cache - - "'builder_cache_space_reclaimed' in result" + - "'builder_cache_space_reclaimed' in result or docker_py_version is version('3.3.0', '<')" + - "'builder_cache_space_reclaimed' not in result or docker_py_version is version('3.3.0', '>=')" # Test with filters - docker_prune: diff --git a/test/integration/targets/docker_swarm/tasks/tests/options.yml b/test/integration/targets/docker_swarm/tasks/tests/options.yml index 85f8223ddb..39c2eb571d 100644 --- a/test/integration/targets/docker_swarm/tasks/tests/options.yml +++ b/test/integration/targets/docker_swarm/tasks/tests/options.yml @@ -65,6 +65,7 @@ docker_swarm: state: present force: yes + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" autolock_managers: yes diff: yes register: output_7 diff --git a/test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml b/test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml index e65d2dfcd0..7248543db4 100644 --- a/test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml +++ b/test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml @@ -23,6 +23,7 @@ - name: Create a Swarm cluster docker_swarm: state: present + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" register: output - name: assert changed when create a new swarm cluster @@ -135,6 +136,7 @@ docker_swarm_info: unlock_key: yes register: output + ignore_errors: yes - name: assert reading swarm facts and non existing swarm unlock key assert: @@ -143,17 +145,26 @@ - 'output.can_talk_to_docker == true' - 'output.docker_swarm_active == true' - 'output.docker_swarm_manager == true' + when: docker_py_version is version('2.7.0', '>=') + - assert: + that: + - output is failed + - "('version is ' ~ docker_py_version ~'. Minimum version required is 2.7.0') in output.msg" + when: docker_py_version is version('2.7.0', '<') - name: Update swarm cluster to be locked docker_swarm: state: present + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" autolock_managers: true register: autolock_managers_update_output + ignore_errors: yes - name: Try to get docker_swarm_info and swarm_unlock_key docker_swarm_info: unlock_key: yes register: output + ignore_errors: yes - name: assert reading swarm facts and swarm unlock key assert: @@ -163,6 +174,12 @@ - 'output.can_talk_to_docker == true' - 'output.docker_swarm_active == true' - 'output.docker_swarm_manager == true' + when: docker_py_version is version('2.7.0', '>=') + - assert: + that: + - output is failed + - "('version is ' ~ docker_py_version ~'. Minimum version required is 2.7.0') in output.msg" + when: docker_py_version is version('2.7.0', '<') always: - name: Cleanup diff --git a/test/integration/targets/docker_swarm_service/tasks/main.yml b/test/integration/targets/docker_swarm_service/tasks/main.yml index 022e68746d..86e9fceae4 100644 --- a/test/integration/targets/docker_swarm_service/tasks/main.yml +++ b/test/integration/targets/docker_swarm_service/tasks/main.yml @@ -18,7 +18,7 @@ - name: Create a Swarm cluster docker_swarm: state: present - advertise_addr: "{{ansible_default_ipv4.address}}" + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" - include_tasks: run-test.yml with_fileglob: diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/options.yml b/test/integration/targets/docker_swarm_service/tasks/tests/options.yml index 4d2dac3a15..09ee229180 100644 --- a/test/integration/targets/docker_swarm_service/tasks/tests/options.yml +++ b/test/integration/targets/docker_swarm_service/tasks/tests/options.yml @@ -919,8 +919,8 @@ resolve_image: no command: '/bin/sh -v -c "sleep 10m"' groups: - - 1234 - - 5678 + - "1234" + - "5678" register: groups_1 ignore_errors: yes @@ -931,8 +931,8 @@ resolve_image: no command: '/bin/sh -v -c "sleep 10m"' groups: - - 1234 - - 5678 + - "1234" + - "5678" register: groups_2 ignore_errors: yes @@ -943,7 +943,7 @@ resolve_image: no command: '/bin/sh -v -c "sleep 10m"' groups: - - 1234 + - "1234" register: groups_3 ignore_errors: yes @@ -1001,7 +1001,7 @@ test: - CMD - sleep - - 1 + - "1" timeout: 2s interval: 0h0m2s3ms4us retries: 2 @@ -1035,7 +1035,7 @@ test: - CMD - sleep - - 1 + - "1" timeout: 3s interval: 0h1m2s3ms4us retries: 3 @@ -1855,6 +1855,7 @@ command: '/bin/sh -v -c "sleep 10m"' resolve_image: true register: resolve_image_3 + ignore_errors: yes - name: cleanup docker_swarm_service: @@ -1872,7 +1873,8 @@ that: - resolve_image_1 is changed - resolve_image_2 is not changed - - resolve_image_3 is not changed + - resolve_image_3 is failed + - "('version is ' ~ docker_py_version ~'. Minimum version required is 3.2.0') in resolve_image_3.msg" when: docker_api_version is version('1.30', '<') or docker_py_version is version('3.2.0', '<') #################################################################### diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml b/test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml index 33f437bab0..ac8bc03b4a 100644 --- a/test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml +++ b/test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml @@ -276,12 +276,12 @@ - rollback_config_order_1 is changed - rollback_config_order_2 is not changed - rollback_config_order_3 is changed - when: docker_api_version is version('1.29', '>=') and docker_py_version is version('2.7.0', '>=') + when: docker_api_version is version('1.29', '>=') and docker_py_version is version('3.5.0', '>=') - assert: that: - rollback_config_order_1 is failed - "'Minimum version required' in rollback_config_order_1.msg" - when: docker_api_version is version('1.29', '<') or docker_py_version is version('2.7.0', '<') + when: docker_api_version is version('1.29', '<') or docker_py_version is version('3.5.0', '<') ################################################################### ## rollback_config.parallelism ###################################### @@ -331,9 +331,9 @@ - rollback_config_parallelism_1 is changed - rollback_config_parallelism_2 is not changed - rollback_config_parallelism_3 is changed - when: docker_api_version is version('1.28', '>=') and docker_py_version is version('2.7.0', '>=') + when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=') - assert: that: - rollback_config_parallelism_1 is failed - "'Minimum version required' in rollback_config_parallelism_1.msg" - when: docker_api_version is version('1.28', '<') or docker_py_version is version('2.7.0', '<') + when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<') diff --git a/test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml b/test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml index 0658e40986..4da3ec066c 100644 --- a/test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml +++ b/test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml @@ -29,6 +29,7 @@ - name: Create a Swarm cluster docker_swarm: state: present + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" register: output - name: Create services @@ -74,3 +75,9 @@ docker_swarm: state: absent force: true + + # Maximum of 1.24 (docker API version for docker_swarm_service_info) and 1.25 (docker API version for docker_swarm) is 1.25 + when: docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=') + +- fail: msg="Too old docker / docker-py version to run docker_swarm_service_info tests!" + when: not(docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6) |