community.docker/tests/integration/targets/docker_swarm_service/tasks/tests/placement.yml
Felix Fontein a4539a309e
Move licenses to LICENSES/, use SPDX-License-Identifier, mention all licenses in galaxy.yml (#430)
* Move licenses to LICENSES/, use SPDX-License-Identifier, mention all licenses in galaxy.yml.

* ignore.txt lines cannot be empty or contain only a comment.

* Cleanup.

* This particular __init__.py seems to be crucial.

* Try extra newline.

* Markdown comments are a real mess. I hope this won't break Galaxy...

* More licenses.

* Add sanity test.

* Skip some files, lint.

* Make sure there is a copyright line everywhere.

* Also check for copyright line in sanity tests.

* Remove colon after 'Copyright'.

* Normalize lint script.

* Avoid colon after 'Copyright' in lint script.

* Improve license checker.

* Update README.md

Co-authored-by: Maxwell G <9920591+gotmax23@users.noreply.github.com>

* Remove superfluous space.

* Referencing target instead of symlink

Co-authored-by: Maxwell G <9920591+gotmax23@users.noreply.github.com>
2022-07-20 07:45:33 +02:00

262 lines
7.6 KiB
YAML

---
# 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
- name: Registering service name
set_fact:
service_name: "{{ name_prefix ~ '-placement' }}"
- name: Registering service name
set_fact:
service_names: "{{ service_names + [service_name] }}"
####################################################################
## placement.preferences ###########################################
####################################################################
- name: placement.preferences
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
preferences:
- spread: "node.labels.test"
register: placement_preferences_1
ignore_errors: yes
- name: placement.preferences (idempotency)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
preferences:
- spread: "node.labels.test"
register: placement_preferences_2
ignore_errors: yes
- name: placement.preferences (change)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
preferences:
- spread: "node.labels.test2"
register: placement_preferences_3
ignore_errors: yes
- name: placement.preferences (empty)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
preferences: []
register: placement_preferences_4
ignore_errors: yes
- name: placement.preferences (empty idempotency)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
preferences: []
register: placement_preferences_5
ignore_errors: yes
- name: cleanup
docker_swarm_service:
name: "{{ service_name }}"
state: absent
diff: no
- assert:
that:
- placement_preferences_1 is changed
- placement_preferences_2 is not changed
- placement_preferences_3 is changed
- placement_preferences_4 is changed
- placement_preferences_5 is not changed
when: docker_api_version is version('1.27', '>=') and docker_py_version is version('2.4.0', '>=')
- assert:
that:
- placement_preferences_1 is failed
- "'Minimum version required' in placement_preferences_1.msg"
when: docker_api_version is version('1.27', '<') or docker_py_version is version('2.4.0', '<')
####################################################################
## placement.constraints #####################################################
####################################################################
- name: placement.constraints
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
constraints:
- "node.role == manager"
register: constraints_1
ignore_errors: yes
- name: placement.constraints (idempotency)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
constraints:
- "node.role == manager"
register: constraints_2
ignore_errors: yes
- name: placement.constraints (change)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
constraints:
- "node.role == worker"
register: constraints_3
ignore_errors: yes
- name: placement.constraints (add)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
constraints:
- "node.role == worker"
- "node.label != non_existent_label"
register: constraints_4
ignore_errors: yes
- name: placement.constraints (order idempotency)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
constraints:
- "node.label != non_existent_label"
- "node.role == worker"
register: constraints_5
ignore_errors: yes
- name: placement.constraints (empty)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
constraints: []
register: constraints_6
ignore_errors: yes
- name: placement.constraints (empty idempotency)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
constraints: []
register: constraints_7
ignore_errors: yes
- name: cleanup
docker_swarm_service:
name: "{{ service_name }}"
state: absent
diff: no
- assert:
that:
- constraints_1 is changed
- constraints_2 is not changed
- constraints_3 is changed
- constraints_4 is changed
- constraints_5 is not changed
- constraints_6 is changed
- constraints_7 is not changed
when: docker_api_version is version('1.27', '>=') and docker_py_version is version('2.4.0', '>=')
- assert:
that:
- constraints_1 is failed
- "'Minimum version required' in constraints_1.msg"
when: docker_api_version is version('1.27', '<') or docker_py_version is version('2.4.0', '<')
####################################################################
## placement.replicas_max_per_node #####################################################
####################################################################
- name: placement.replicas_max_per_node
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
replicas_max_per_node: 1
register: replicas_max_per_node_1
ignore_errors: yes
- name: placement.replicas_max_per_node (idempotency)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
replicas_max_per_node: 1
register: replicas_max_per_node_2
ignore_errors: yes
- name: placement.replicas_max_per_node (change)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: no
command: '/bin/sh -v -c "sleep 10m"'
placement:
replicas_max_per_node: 2
register: replicas_max_per_node_3
ignore_errors: yes
- name: cleanup
docker_swarm_service:
name: "{{ service_name }}"
state: absent
diff: no
- assert:
that:
- replicas_max_per_node_1 is changed
- replicas_max_per_node_2 is not changed
- replicas_max_per_node_3 is changed
when: docker_api_version is version('1.40', '>=') and docker_py_version is version('4.4.3', '>=')
- assert:
that:
- replicas_max_per_node_1 is failed
- "'Minimum version required' in replicas_max_per_node_1.msg"
when: docker_api_version is version('1.40', '<') or docker_py_version is version('4.4.3', '<')