mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
docker_swarm_service: Add option rollback_config (#53594)
* Add rollback_config * Add change log fragment * Fix broken test * Actually fix broken tests * Add rollback_config example * Default rollback_config as None * Abort early if rollback_config does not exist
This commit is contained in:
parent
73ba6a9bc8
commit
7bb174214c
5 changed files with 553 additions and 2 deletions
|
@ -0,0 +1,339 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-rollback_config' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names }} + [service_name]"
|
||||
|
||||
###################################################################
|
||||
## rollback_config.delay ############################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.delay
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
delay: 5s
|
||||
register: rollback_config_delay_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.delay (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
delay: 5s
|
||||
register: rollback_config_delay_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.delay (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
delay: 12s
|
||||
register: rollback_config_delay_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_delay_1 is changed
|
||||
- rollback_config_delay_2 is not changed
|
||||
- rollback_config_delay_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_delay_1 is failed
|
||||
- "'Minimum version required' in rollback_config_delay_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
## rollback_config.failure_action ###################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.failure_action
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
failure_action: "pause"
|
||||
register: rollback_config_failure_action_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.failure_action (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
failure_action: "pause"
|
||||
register: rollback_config_failure_action_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.failure_action (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
failure_action: "continue"
|
||||
register: rollback_config_failure_action_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_failure_action_1 is changed
|
||||
- rollback_config_failure_action_2 is not changed
|
||||
- rollback_config_failure_action_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_failure_action_1 is failed
|
||||
- "'Minimum version required' in rollback_config_failure_action_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
## rollback_config.max_failure_ratio ################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.max_failure_ratio
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
max_failure_ratio: 0.25
|
||||
register: rollback_config_max_failure_ratio_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.max_failure_ratio (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
max_failure_ratio: 0.25
|
||||
register: rollback_config_max_failure_ratio_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.max_failure_ratio (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
max_failure_ratio: 0.50
|
||||
register: rollback_config_max_failure_ratio_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_max_failure_ratio_1 is changed
|
||||
- rollback_config_max_failure_ratio_2 is not changed
|
||||
- rollback_config_max_failure_ratio_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_max_failure_ratio_1 is failed
|
||||
- "'Minimum version required' in rollback_config_max_failure_ratio_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
# rollback_config.monitor ###########################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.monitor
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
monitor: 10s
|
||||
register: rollback_config_monitor_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.monitor (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
monitor: 10s
|
||||
register: rollback_config_monitor_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.monitor (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
monitor: 60s
|
||||
register: rollback_config_monitor_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_monitor_1 is changed
|
||||
- rollback_config_monitor_2 is not changed
|
||||
- rollback_config_monitor_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_monitor_1 is failed
|
||||
- "'Minimum version required' in rollback_config_monitor_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
# rollback_config.order #############################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.order
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
order: "start-first"
|
||||
register: rollback_config_order_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.order (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
order: "start-first"
|
||||
register: rollback_config_order_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.order (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
order: "stop-first"
|
||||
register: rollback_config_order_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 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', '>=')
|
||||
- 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', '<')
|
||||
|
||||
###################################################################
|
||||
## rollback_config.parallelism ######################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.parallelism
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
parallelism: 2
|
||||
register: rollback_config_parallelism_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.parallelism (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
parallelism: 2
|
||||
register: rollback_config_parallelism_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.parallelism (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
parallelism: 1
|
||||
register: rollback_config_parallelism_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 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', '>=')
|
||||
- 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', '<')
|
|
@ -107,6 +107,27 @@
|
|||
failure_action: "continue"
|
||||
register: update_failure_action_3
|
||||
|
||||
- name: update_config.failure_action (rollback)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
failure_action: "rollback"
|
||||
register: update_failure_action_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.failure_action (rollback idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_failure_action: "rollback"
|
||||
register: update_failure_action_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
|
@ -120,6 +141,18 @@
|
|||
- update_failure_action_2b is not changed
|
||||
- update_failure_action_3 is changed
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_failure_action_4 is changed
|
||||
- update_failure_action_5 is not changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_failure_action_4 is failed
|
||||
- "'Minimum version required' in update_failure_action_4.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
## update_config.max_failure_ratio ################################
|
||||
###################################################################
|
||||
|
|
|
@ -41,6 +41,7 @@ service_expected_output:
|
|||
restart_policy_attempts: null
|
||||
restart_policy_delay: null
|
||||
restart_policy_window: null
|
||||
rollback_config: null
|
||||
tty: null
|
||||
update_delay: null
|
||||
update_failure_action: null
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue