a096cd08c5
* docker_swarm_service: Sort lists when checking for changes When two lists are checked for changes in this module, the lists are reported changed when the order of the items is different. This PR resolves this issue. * docker_swarm_service: Minor typo fix * docker_swarm_service: Another minor typo * docker_swarm_service: Should use sorted(), not sort() * docker_swarm_service: Sort lists of dictionaries * docker_swarm_service: Fix style issues in tests * docker_swarm_service: Updates to integration tests * docker_swarm_service: Casting string types within lists when comparing * docker_swarm_service: Special handling of unordered networks with ordered aliases * docker_swarm_service: Sorting network lists * docker_swarm_serivce: Better unit test code coverage for lists and networks * docker_swarm_service: Fixed coding style for sanity tests * docker_swarm_service: More coding style fixes * docker_swarm_service: Ignoring test for Python < 3 * docker_swarm_service: Update to version info check for backwards compatibility * docker_swarm_service: Added change fragment #63887 * docker_swarm_service: Better handling of missing sort key for dictionary of lists * docker_swarm_service: Preventing sorts from modifying in-place Co-Authored-By: Felix Fontein <felix@fontein.de> * docker_swarm_service: Removed spurious import in test * docker_swarm_service: Preventing sorts from modifying more data in-place Co-Authored-By: Felix Fontein <felix@fontein.de>
413 lines
12 KiB
YAML
413 lines
12 KiB
YAML
---
|
|
|
|
- name: Registering container name
|
|
set_fact:
|
|
service_name: "{{ name_prefix ~ '-configs' }}"
|
|
config_name_1: "{{ name_prefix ~ '-configs-1' }}"
|
|
config_name_2: "{{ name_prefix ~ '-configs-2' }}"
|
|
|
|
- name: Registering container name
|
|
set_fact:
|
|
config_names: "{{ config_names + [config_name_1, config_name_2] }}"
|
|
|
|
- docker_config:
|
|
name: "{{ config_name_1 }}"
|
|
data: "hello"
|
|
state: present
|
|
register: "config_result_1"
|
|
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
|
|
|
- docker_config:
|
|
name: "{{ config_name_2 }}"
|
|
data: "test"
|
|
state: present
|
|
register: "config_result_2"
|
|
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
|
|
|
####################################################################
|
|
## configs #########################################################
|
|
####################################################################
|
|
|
|
- name: configs
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
filename: "/tmp/{{ config_name_1 }}.txt"
|
|
register: configs_1
|
|
ignore_errors: yes
|
|
|
|
- name: configs (idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_name: "{{ config_name_1 }}"
|
|
filename: "/tmp/{{ config_name_1 }}.txt"
|
|
register: configs_2
|
|
ignore_errors: yes
|
|
|
|
- name: configs (add)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
filename: "/tmp/{{ config_name_1 }}.txt"
|
|
- config_name: "{{ config_name_2 }}"
|
|
filename: "/tmp/{{ config_name_2 }}.txt"
|
|
register: configs_3
|
|
ignore_errors: yes
|
|
|
|
- name: configs (add idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_name: "{{ config_name_1 }}"
|
|
filename: "/tmp/{{ config_name_1 }}.txt"
|
|
- config_id: "{{ config_result_2.config_id|default('') }}"
|
|
config_name: "{{ config_name_2 }}"
|
|
filename: "/tmp/{{ config_name_2 }}.txt"
|
|
register: configs_4
|
|
ignore_errors: yes
|
|
|
|
- name: configs (add idempotency no id)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_name: "{{ config_name_1 }}"
|
|
filename: "/tmp/{{ config_name_1 }}.txt"
|
|
- config_name: "{{ config_name_2 }}"
|
|
filename: "/tmp/{{ config_name_2 }}.txt"
|
|
register: configs_5
|
|
ignore_errors: yes
|
|
|
|
- name: configs (add idempotency no id and re-ordered)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_name: "{{ config_name_2 }}"
|
|
filename: "/tmp/{{ config_name_2 }}.txt"
|
|
- config_name: "{{ config_name_1 }}"
|
|
filename: "/tmp/{{ config_name_1 }}.txt"
|
|
register: configs_6
|
|
ignore_errors: yes
|
|
|
|
- name: configs (empty)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs: []
|
|
register: configs_7
|
|
ignore_errors: yes
|
|
|
|
- name: configs (empty idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs: []
|
|
register: configs_8
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
state: absent
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- configs_1 is changed
|
|
- configs_2 is not changed
|
|
- configs_3 is changed
|
|
- configs_4 is not changed
|
|
- configs_5 is not changed
|
|
- configs_6 is not changed
|
|
- configs_7 is changed
|
|
- configs_8 is not changed
|
|
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
|
|
|
- assert:
|
|
that:
|
|
- configs_1 is failed
|
|
- "'Minimum version required' in configs_1.msg"
|
|
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
|
|
|
####################################################################
|
|
## configs (uid) ###################################################
|
|
####################################################################
|
|
|
|
- name: configs (uid int)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
uid: 1000
|
|
register: configs_1
|
|
ignore_errors: yes
|
|
|
|
- name: configs (uid int idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
uid: 1000
|
|
register: configs_2
|
|
ignore_errors: yes
|
|
|
|
- name: configs (uid int change)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
uid: 1002
|
|
register: configs_3
|
|
ignore_errors: yes
|
|
|
|
- name: configs (uid str)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
uid: "1001"
|
|
register: configs_4
|
|
ignore_errors: yes
|
|
|
|
- name: configs (uid str idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
uid: "1001"
|
|
register: configs_5
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
state: absent
|
|
diff: no
|
|
- assert:
|
|
that:
|
|
- configs_1 is changed
|
|
- configs_2 is not changed
|
|
- configs_3 is changed
|
|
- configs_4 is changed
|
|
- configs_5 is not changed
|
|
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
|
|
|
- assert:
|
|
that:
|
|
- configs_1 is failed
|
|
- "'Minimum version required' in configs_1.msg"
|
|
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
|
|
|
|
|
####################################################################
|
|
## configs (gid) ###################################################
|
|
####################################################################
|
|
|
|
- name: configs (gid int)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
gid: 1000
|
|
register: configs_1
|
|
ignore_errors: yes
|
|
|
|
- name: configs (gid int idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
gid: 1000
|
|
register: configs_2
|
|
ignore_errors: yes
|
|
|
|
- name: configs (gid int change)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
gid: 1002
|
|
register: configs_3
|
|
ignore_errors: yes
|
|
|
|
- name: configs (gid str)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
gid: "1001"
|
|
register: configs_4
|
|
ignore_errors: yes
|
|
|
|
- name: configs (gid str idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
gid: "1001"
|
|
register: configs_5
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
state: absent
|
|
diff: no
|
|
- assert:
|
|
that:
|
|
- configs_1 is changed
|
|
- configs_2 is not changed
|
|
- configs_3 is changed
|
|
- configs_4 is changed
|
|
- configs_5 is not changed
|
|
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
|
|
|
- assert:
|
|
that:
|
|
- configs_1 is failed
|
|
- "'Minimum version required' in configs_1.msg"
|
|
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
|
|
|
####################################################################
|
|
## configs (mode) ##################################################
|
|
####################################################################
|
|
|
|
- name: configs (mode)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
mode: 0600
|
|
register: configs_1
|
|
ignore_errors: yes
|
|
|
|
- name: configs (mode idempotency)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
mode: 0600
|
|
register: configs_2
|
|
ignore_errors: yes
|
|
|
|
- name: configs (mode change)
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
image: alpine:3.8
|
|
resolve_image: no
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
configs:
|
|
- config_id: "{{ config_result_1.config_id|default('') }}"
|
|
config_name: "{{ config_name_1 }}"
|
|
mode: 0777
|
|
register: configs_3
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_swarm_service:
|
|
name: "{{ service_name }}"
|
|
state: absent
|
|
diff: no
|
|
- assert:
|
|
that:
|
|
- configs_1 is changed
|
|
- configs_2 is not changed
|
|
- configs_3 is changed
|
|
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
|
|
|
- assert:
|
|
that:
|
|
- configs_1 is failed
|
|
- "'Minimum version required' in configs_1.msg"
|
|
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
|
|
|
####################################################################
|
|
####################################################################
|
|
####################################################################
|
|
|
|
- name: Delete configs
|
|
docker_config:
|
|
name: "{{ config_name }}"
|
|
state: absent
|
|
force: yes
|
|
loop:
|
|
- "{{ config_name_1 }}"
|
|
- "{{ config_name_2 }}"
|
|
loop_control:
|
|
loop_var: config_name
|
|
ignore_errors: yes
|
|
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|