Skip to content

Commit

Permalink
Fix force when state==present. (#53003)
Browse files Browse the repository at this point in the history
  • Loading branch information
felixfontein authored and gundalow committed Feb 27, 2019
1 parent dec9738 commit 76e0e00
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/53003-docker_swarm-force-new-cluster.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bugfixes:
- "docker_swarm - the ``force`` option was ignored when ``state: present``."
9 changes: 4 additions & 5 deletions lib/ansible/modules/cloud/docker/docker_swarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,6 @@ def __init__(self):

self.advertise_addr = None
self.listen_addr = None
self.force_new_cluster = None
self.remote_addrs = None
self.join_token = None

Expand Down Expand Up @@ -356,8 +355,8 @@ def update_parameters(self, client):

def compare_to_active(self, other, differences):
for k in self.__dict__:
if k in ('advertise_addr', 'listen_addr', 'force_new_cluster', 'remote_addrs',
'join_token', 'force', 'rotate_worker_token', 'rotate_manager_token', 'spec'):
if k in ('advertise_addr', 'listen_addr', 'remote_addrs', 'join_token',
'rotate_worker_token', 'rotate_manager_token', 'spec'):
continue
if self.__dict__[k] is None:
continue
Expand Down Expand Up @@ -419,15 +418,15 @@ def inspect_swarm(self):
return

def init_swarm(self):
if self.client.check_if_swarm_manager():
if not self.force and self.client.check_if_swarm_manager():
self.__update_swarm()
return

if not self.check_mode:
try:
self.client.init_swarm(
advertise_addr=self.parameters.advertise_addr, listen_addr=self.parameters.listen_addr,
force_new_cluster=self.parameters.force_new_cluster, swarm_spec=self.parameters.spec)
force_new_cluster=self.force, swarm_spec=self.parameters.spec)
except APIError as exc:
self.client.fail("Can not create a new Swarm Cluster: %s" % to_native(exc))

Expand Down
23 changes: 23 additions & 0 deletions test/integration/targets/docker_swarm/tasks/tests/basic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,23 @@
diff: yes
register: output_4

- name: Create a Swarm cluster (force re-create)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address}}"
force: yes
diff: yes
register: output_5

- name: Create a Swarm cluster (force re-create, check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address}}"
force: yes
check_mode: yes
diff: yes
register: output_6

- name: assert changed when create a new swarm cluster
assert:
that:
Expand All @@ -79,6 +96,12 @@
- 'output_4 is not changed'
- 'output_4.diff.before is defined'
- 'output_4.diff.after is defined'
- 'output_5 is changed'
- 'output_5.diff.before is defined'
- 'output_5.diff.after is defined'
- 'output_6 is changed'
- 'output_6.diff.before is defined'
- 'output_6.diff.after is defined'

####################################################################
## Removal #########################################################
Expand Down

0 comments on commit 76e0e00

Please sign in to comment.