docker_swarm_service: add support for replicated jobs (#1108)

* feat(docker_swarm_service): Add support for replicated jobs

* chore(docker_swarm_plugin): Fixes after review

* chore(docker_swarm_service): Add a check for minimum version

* chore(docker_swarm_service): Add changelog fragment for #1108

* fix(docker_swarm_service): Fix typo in version check

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Tristan Pourcelot <tristan.pourcelot@exatrack.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
tpourcelot
2025-08-03 13:12:29 +02:00
committed by GitHub
parent 920015706b
commit 449448e820
3 changed files with 60 additions and 2 deletions
@@ -1301,6 +1301,38 @@
replicas: 1
register: mode_3
- name: mode (change)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: false
command: '/bin/sh -v -c "sleep 10m"'
mode: "replicated-job"
replicas: 1
register: mode_4
ignore_errors: true
- name: mode (idempotency)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: false
command: '/bin/sh -v -c "sleep 10m"'
mode: "replicated-job"
replicas: 1
register: mode_5
ignore_errors: true
- name: mode (change)
docker_swarm_service:
name: "{{ service_name }}"
image: "{{ docker_test_image_alpine }}"
resolve_image: false
command: '/bin/sh -v -c "sleep 10m"'
mode: "replicated"
replicas: 1
register: mode_6
- name: cleanup
docker_swarm_service:
name: "{{ service_name }}"
@@ -1313,6 +1345,19 @@
- mode_2 is not changed
- mode_3 is changed
- assert:
that:
- mode_4 is changed
- mode_5 is not changed and mode_5 is not failed
- mode_6 is changed
when: docker_api_version is version('1.41', '>=') and docker_py_version is version('6.0.0', '>=')
- assert:
that:
- mode_4 is failed
- "'Minimum version required' in mode_4.msg"
when: docker_api_version is version('1.41', '<') or docker_py_version is version('6.0.0', '<')
####################################################################
## stop_grace_period ###############################################
####################################################################