mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-03-28 08:04:31 +00:00
* Adding 'replicas_max_per_node' placement parameter * Adding 'replicas_max_per_node' placement parameter * Adding 'replicas_max_per_node' integration tests * Adding 'replicas_max_per_node' feature * 'replicas_max_per_node' documentation update * 'replicas_max_per_node' unit test fix * Documentation and changelog updates * Update changelogs/fragments/92-replicas-max-per-node.yml Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: WojciechowskiPiotr <devel@it-playground.pl> Co-authored-by: Felix Fontein <felix@fontein.de>
259 lines
7.4 KiB
YAML
259 lines
7.4 KiB
YAML
---
|
|
|
|
- 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', '<')
|