docker_swarm: fix idempotency (#52976)

* Improve idempotency checking: only consider parameters which are part of the generated spec.

* Properly handle rotate_worker_token and rotate_manager_token.

(cherry picked from commit 42ae6cdb95)
This commit is contained in:
Felix Fontein 2019-02-26 12:46:43 +01:00 committed by Toshio Kuratomi
parent aed59e5695
commit 2ee64fd507
2 changed files with 7 additions and 1 deletions

View file

@ -1,2 +1,3 @@
bugfixes: bugfixes:
- "docker_swarm - do not crash with older docker daemons (https://github.com/ansible/ansible/issues/51175)." - "docker_swarm - do not crash with older docker daemons (https://github.com/ansible/ansible/issues/51175)."
- "docker_swarm - improve idempotency checking; ``rotate_worker_token`` and ``rotate_manager_token`` are now also used when all other parameters have not changed."

View file

@ -353,12 +353,17 @@ class TaskParameters(DockerBaseClass):
def compare_to_active(self, other): def compare_to_active(self, other):
for k in self.__dict__: for k in self.__dict__:
if k in ('advertise_addr', 'listen_addr', 'rotate_worker_token', 'rotate_manager_token', 'spec'): if k in ('advertise_addr', 'listen_addr', 'force_new_cluster', 'remote_addrs',
'join_token', 'force', 'rotate_worker_token', 'rotate_manager_token', 'spec'):
continue continue
if self.__dict__[k] is None: if self.__dict__[k] is None:
continue continue
if self.__dict__[k] != other.__dict__[k]: if self.__dict__[k] != other.__dict__[k]:
return False return False
if self.rotate_worker_token:
return False
if self.rotate_manager_token:
return False
return True return True