docker_swarm: add diff support (#52947)

* Add diff support to docker_swarm.

* Add changelog.

* Using diff mode for docker_swarm tests. This improves debugging, since the the module now outputs more information on *why* it did certain actions.
This commit is contained in:
Felix Fontein 2019-02-26 12:57:02 +01:00 committed by John R Barker
parent 84cc5202db
commit bf3c291606
3 changed files with 33 additions and 0 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- "docker_swarm - module now supports ``--diff`` mode."

View file

@ -391,6 +391,11 @@ class SwarmManager(DockerBaseClass):
choice_map.get(self.state)() choice_map.get(self.state)()
if self.client.module._diff or self.parameters.debug:
diff = dict()
diff['before'], diff['after'] = self.differences.get_before_after()
self.results['diff'] = diff
def __isSwarmManager(self): def __isSwarmManager(self):
try: try:
data = self.client.inspect_swarm() data = self.client.inspect_swarm()

View file

@ -4,6 +4,7 @@
docker_swarm: docker_swarm:
state: absent state: absent
force: true force: true
diff: no
- name: Test parameters with state=join - name: Test parameters with state=join
docker_swarm: docker_swarm:
@ -34,18 +35,21 @@
state: present state: present
advertise_addr: "{{ansible_default_ipv4.address}}" advertise_addr: "{{ansible_default_ipv4.address}}"
check_mode: yes check_mode: yes
diff: yes
register: output_1 register: output_1
- name: Create a Swarm cluster - name: Create a Swarm cluster
docker_swarm: docker_swarm:
state: present state: present
advertise_addr: "{{ansible_default_ipv4.address}}" advertise_addr: "{{ansible_default_ipv4.address}}"
diff: yes
register: output_2 register: output_2
- name: Create a Swarm cluster (idempotent) - name: Create a Swarm cluster (idempotent)
docker_swarm: docker_swarm:
state: present state: present
advertise_addr: "{{ansible_default_ipv4.address}}" advertise_addr: "{{ansible_default_ipv4.address}}"
diff: yes
register: output_3 register: output_3
- name: Create a Swarm cluster (idempotent, check mode) - name: Create a Swarm cluster (idempotent, check mode)
@ -53,36 +57,48 @@
state: present state: present
advertise_addr: "{{ansible_default_ipv4.address}}" advertise_addr: "{{ansible_default_ipv4.address}}"
check_mode: yes check_mode: yes
diff: yes
register: output_4 register: output_4
- name: assert changed when create a new swarm cluster - name: assert changed when create a new swarm cluster
assert: assert:
that: that:
- 'output_1 is changed' - 'output_1 is changed'
- 'output_1.diff.before is defined'
- 'output_1.diff.after is defined'
- 'output_2 is changed' - 'output_2 is changed'
- 'output_2.actions[0] | regex_search("New Swarm cluster created: ")' - 'output_2.actions[0] | regex_search("New Swarm cluster created: ")'
- 'output_2.swarm_facts.JoinTokens.Manager' - 'output_2.swarm_facts.JoinTokens.Manager'
- 'output_2.swarm_facts.JoinTokens.Worker' - 'output_2.swarm_facts.JoinTokens.Worker'
- 'output_2.diff.before is defined'
- 'output_2.diff.after is defined'
- 'output_3 is not changed' - 'output_3 is not changed'
- 'output_3.diff.before is defined'
- 'output_3.diff.after is defined'
- 'output_4 is not changed' - 'output_4 is not changed'
- 'output_4.diff.before is defined'
- 'output_4.diff.after is defined'
- name: Remove a Swarm cluster (check mode) - name: Remove a Swarm cluster (check mode)
docker_swarm: docker_swarm:
state: absent state: absent
force: true force: true
check_mode: yes check_mode: yes
diff: yes
register: output_1 register: output_1
- name: Remove a Swarm cluster - name: Remove a Swarm cluster
docker_swarm: docker_swarm:
state: absent state: absent
force: true force: true
diff: yes
register: output_2 register: output_2
- name: Remove a Swarm cluster (idempotent) - name: Remove a Swarm cluster (idempotent)
docker_swarm: docker_swarm:
state: absent state: absent
force: true force: true
diff: yes
register: output_3 register: output_3
- name: Remove a Swarm cluster (idempotent, check mode) - name: Remove a Swarm cluster (idempotent, check mode)
@ -90,19 +106,29 @@
state: absent state: absent
force: true force: true
check_mode: yes check_mode: yes
diff: yes
register: output_4 register: output_4
- name: assert changed when remove a swarm cluster - name: assert changed when remove a swarm cluster
assert: assert:
that: that:
- 'output_1 is changed' - 'output_1 is changed'
- 'output_1.diff.before is defined'
- 'output_1.diff.after is defined'
- 'output_2 is changed' - 'output_2 is changed'
- 'output_2.actions[0] == "Node has left the swarm cluster"' - 'output_2.actions[0] == "Node has left the swarm cluster"'
- 'output_2.diff.before is defined'
- 'output_2.diff.after is defined'
- 'output_3 is not changed' - 'output_3 is not changed'
- 'output_3.diff.before is defined'
- 'output_3.diff.after is defined'
- 'output_4 is not changed' - 'output_4 is not changed'
- 'output_4.diff.before is defined'
- 'output_4.diff.after is defined'
always: always:
- name: Cleanup - name: Cleanup
docker_swarm: docker_swarm:
state: absent state: absent
force: true force: true
diff: no