From 99fb0fcb2f27fb41f9a09185915b3840341c831e Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 14 Aug 2019 11:23:38 +0200 Subject: [PATCH] docker_logout: report change on successful logout (#60381) * Mark logout as changed when docker logout does not return 'Not logged in to '. * Add changelog. * Improve logout detection. * Also return output of 'docker logout'. --- .../fragments/60381-docker_login-logout-change.yml | 2 ++ lib/ansible/modules/cloud/docker/docker_login.py | 9 +++++++++ 2 files changed, 11 insertions(+) create mode 100644 changelogs/fragments/60381-docker_login-logout-change.yml diff --git a/changelogs/fragments/60381-docker_login-logout-change.yml b/changelogs/fragments/60381-docker_login-logout-change.yml new file mode 100644 index 00000000000..f2697c57216 --- /dev/null +++ b/changelogs/fragments/60381-docker_login-logout-change.yml @@ -0,0 +1,2 @@ +bugfixes: +- "docker_login - report change on successful logout (https://github.com/ansible/ansible/issues/59232)" diff --git a/lib/ansible/modules/cloud/docker/docker_login.py b/lib/ansible/modules/cloud/docker/docker_login.py index 19df546de39..590379a4ba2 100644 --- a/lib/ansible/modules/cloud/docker/docker_login.py +++ b/lib/ansible/modules/cloud/docker/docker_login.py @@ -224,6 +224,15 @@ class LoginManager(DockerBaseClass): (rc, out, err) = self.client.module.run_command(cmd) if rc != 0: self.fail("Could not log out: %s" % err) + if b'Not logged in to ' in out: + self.results['changed'] = False + elif b'Removing login credentials for ' in out: + self.results['changed'] = True + else: + self.client.module.warn('Unable to determine whether logout was successful.') + + # Adding output to actions, so that user can inspect what was actually returned + self.results['actions'].append(to_text(out)) def config_file_exists(self, path): if os.path.exists(path):