From 1f2d397588fe317855b09378298c6d40c2a95a8d Mon Sep 17 00:00:00 2001 From: Thomas Woerner <twoerner@redhat.com> Date: Mon, 18 Sep 2017 17:41:07 +0200 Subject: [PATCH] library/ipajoin.py: Return changed state and new parameter already_joined The choined tag is only set if changes have been done with the join. already_joined is set if the ipa-join command is filing with error 13 (already joined). The module is not calling fail_json in this case anymore. --- library/ipajoin.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/library/ipajoin.py b/library/ipajoin.py index 746d842f..014ff0aa 100644 --- a/library/ipajoin.py +++ b/library/ipajoin.py @@ -108,6 +108,10 @@ EXAMPLES = ''' ''' RETURN = ''' +already_joined: + description: The flag describes if the host is arelady joined. + returned: always + type: bool ''' class Object(object): @@ -238,6 +242,8 @@ def main(): options.password = password ccache_dir = None + changed = False + already_joined = False try: (krb_fd, krb_name) = tempfile.mkstemp() os.close(krb_fd) @@ -315,8 +321,15 @@ def main(): stderr = result.error_output if result.returncode != 0: - module.fail_json(msg="Joining realm failed: %s" % stderr) + if result.returncode == 13: + already_joined = True + module.log("Host is already joined") + else: + if principal: + run(["kdestroy"], raiseonerr=False, env=env) + module.fail_json(msg="Joining realm failed: %s" % stderr) else: + changed = True module.log("Enrolled in IPA realm %s" % realm) start = stderr.find('Certificate subject base is: ') @@ -360,7 +373,8 @@ def main(): except OSError: module.fail_json(msg="Could not remove %s.ipabkp" % krb_name) - module.exit_json(changed=True) + module.exit_json(changed=changed, + already_joined=already_joined) if __name__ == '__main__': main() -- GitLab