--- - 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: alpine:3.8 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: alpine:3.8 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: alpine:3.8 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: alpine:3.8 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: alpine:3.8 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: alpine:3.8 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: alpine:3.8 resolve_image: no command: '/bin/sh -v -c "sleep 10m"' placement: constraints: - "node.role == manager" register: constraints_2 ignore_errors: yes - name: constraints (idempotency, old name) docker_swarm_service: name: "{{ service_name }}" image: alpine:3.8 resolve_image: no command: '/bin/sh -v -c "sleep 10m"' constraints: - "node.role == manager" register: constraints_2b ignore_errors: yes - name: placement.constraints (change) docker_swarm_service: name: "{{ service_name }}" image: alpine:3.8 resolve_image: no command: '/bin/sh -v -c "sleep 10m"' placement: constraints: - "node.role == worker" register: constraints_3 ignore_errors: yes - name: placement.constraints (empty) docker_swarm_service: name: "{{ service_name }}" image: alpine:3.8 resolve_image: no command: '/bin/sh -v -c "sleep 10m"' placement: constraints: [] register: constraints_4 ignore_errors: yes - name: placement.constraints (empty idempotency) docker_swarm_service: name: "{{ service_name }}" image: alpine:3.8 resolve_image: no command: '/bin/sh -v -c "sleep 10m"' placement: constraints: [] register: constraints_5 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_2b is not changed - constraints_3 is changed - constraints_4 is changed - constraints_5 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', '<')