diff --git a/roles/ipaclient/library/ipaclient_configure_dns_resolver.py b/roles/ipaclient/library/ipaclient_configure_dns_resolver.py index ca8caf5c15d7bee53f618fd25d94483101107e46..38793a25975869a886d22aa0bbf4e1efd0a2561e 100644 --- a/roles/ipaclient/library/ipaclient_configure_dns_resolver.py +++ b/roles/ipaclient/library/ipaclient_configure_dns_resolver.py @@ -152,8 +152,10 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): if not searchdomains or not isinstance(searchdomains, list): raise AssertionError("searchdomains must be of type list") + changed = False if fstore is not None and not fstore.has_file(paths.RESOLV_CONF): fstore.backup_file(paths.RESOLV_CONF) + changed = True resolve1_enabled = detect_resolve1_resolv_conf() if "NetworkManager" not in services.knownservices: @@ -192,6 +194,7 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): sdrd_service = services.service("systemd-resolved.service") if sdrd_service.is_enabled(): sdrd_service.reload_or_restart() + changed = True # Then configure NetworkManager or resolve.conf if nm_service.is_enabled(): @@ -217,6 +220,7 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): outf.write(cfg) # reload NetworkManager nm_service.reload_or_restart() + changed = True # Configure resolv.conf if NetworkManager and systemd-resoled are not # enabled @@ -231,6 +235,9 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): cfg.append("nameserver %s" % nameserver) with open(paths.RESOLV_CONF, 'w') as outf: outf.write('\n'.join(cfg)) + changed = True + + return changed def unconfigure_dns_resolver(fstore=None): @@ -239,8 +246,11 @@ def unconfigure_dns_resolver(fstore=None): :param fstore: optional file store for resolv.conf restore """ + changed = False + if fstore is not None and fstore.has_file(paths.RESOLV_CONF): fstore.restore_file(paths.RESOLV_CONF) + changed = True if os.path.isfile(NETWORK_MANAGER_IPA_CONF): os.unlink(NETWORK_MANAGER_IPA_CONF) @@ -252,6 +262,7 @@ def unconfigure_dns_resolver(fstore=None): nm_service = services.knownservices['NetworkManager'] if nm_service.is_enabled(): nm_service.reload_or_restart() + changed = True if os.path.isfile(SYSTEMD_RESOLVED_IPA_CONF): os.unlink(SYSTEMD_RESOLVED_IPA_CONF) @@ -261,6 +272,9 @@ def unconfigure_dns_resolver(fstore=None): sdrd_service = services.service("systemd-resolved.service") if sdrd_service.is_enabled(): sdrd_service.reload_or_restart() + changed = True + + return changed def main(): @@ -308,11 +322,12 @@ def main(): fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE) if state == "present": - configure_dns_resolver(nameservers, searchdomains, fstore) + changed = configure_dns_resolver(nameservers, + searchdomains, fstore) else: - unconfigure_dns_resolver(fstore) + changed = unconfigure_dns_resolver(fstore) - module.exit_json(changed=True) + module.exit_json(changed=changed) if __name__ == '__main__':