diff --git a/library/ipajoin.py b/library/ipajoin.py index 746d842fbeef28f61f01a3fa9711eb093bbbece6..014ff0aa0688744ed9d8634e525db93627670d7b 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()