Skip to content
Snippets Groups Projects
Commit bef748cf authored by Thomas Woerner's avatar Thomas Woerner
Browse files

ipaclient_configure_dns_resolver: Return proper changed state

The changed state returned from ipaclient_configure_dns_resolver was
always True. The internal functions (copies from FreeIPA code) have been
fixed to return a changed state.

Fixes: #1217 (ipaclient: Configure DNS resolver always reports as changed)
parent c24e8b49
No related branches found
No related tags found
No related merge requests found
...@@ -152,8 +152,10 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): ...@@ -152,8 +152,10 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None):
if not searchdomains or not isinstance(searchdomains, list): if not searchdomains or not isinstance(searchdomains, list):
raise AssertionError("searchdomains must be of type list") raise AssertionError("searchdomains must be of type list")
changed = False
if fstore is not None and not fstore.has_file(paths.RESOLV_CONF): if fstore is not None and not fstore.has_file(paths.RESOLV_CONF):
fstore.backup_file(paths.RESOLV_CONF) fstore.backup_file(paths.RESOLV_CONF)
changed = True
resolve1_enabled = detect_resolve1_resolv_conf() resolve1_enabled = detect_resolve1_resolv_conf()
if "NetworkManager" not in services.knownservices: if "NetworkManager" not in services.knownservices:
...@@ -192,6 +194,7 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): ...@@ -192,6 +194,7 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None):
sdrd_service = services.service("systemd-resolved.service") sdrd_service = services.service("systemd-resolved.service")
if sdrd_service.is_enabled(): if sdrd_service.is_enabled():
sdrd_service.reload_or_restart() sdrd_service.reload_or_restart()
changed = True
# Then configure NetworkManager or resolve.conf # Then configure NetworkManager or resolve.conf
if nm_service.is_enabled(): if nm_service.is_enabled():
...@@ -217,6 +220,7 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): ...@@ -217,6 +220,7 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None):
outf.write(cfg) outf.write(cfg)
# reload NetworkManager # reload NetworkManager
nm_service.reload_or_restart() nm_service.reload_or_restart()
changed = True
# Configure resolv.conf if NetworkManager and systemd-resoled are not # Configure resolv.conf if NetworkManager and systemd-resoled are not
# enabled # enabled
...@@ -231,6 +235,9 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None): ...@@ -231,6 +235,9 @@ def configure_dns_resolver(nameservers, searchdomains, fstore=None):
cfg.append("nameserver %s" % nameserver) cfg.append("nameserver %s" % nameserver)
with open(paths.RESOLV_CONF, 'w') as outf: with open(paths.RESOLV_CONF, 'w') as outf:
outf.write('\n'.join(cfg)) outf.write('\n'.join(cfg))
changed = True
return changed
def unconfigure_dns_resolver(fstore=None): def unconfigure_dns_resolver(fstore=None):
...@@ -239,8 +246,11 @@ 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 :param fstore: optional file store for resolv.conf restore
""" """
changed = False
if fstore is not None and fstore.has_file(paths.RESOLV_CONF): if fstore is not None and fstore.has_file(paths.RESOLV_CONF):
fstore.restore_file(paths.RESOLV_CONF) fstore.restore_file(paths.RESOLV_CONF)
changed = True
if os.path.isfile(NETWORK_MANAGER_IPA_CONF): if os.path.isfile(NETWORK_MANAGER_IPA_CONF):
os.unlink(NETWORK_MANAGER_IPA_CONF) os.unlink(NETWORK_MANAGER_IPA_CONF)
...@@ -252,6 +262,7 @@ def unconfigure_dns_resolver(fstore=None): ...@@ -252,6 +262,7 @@ def unconfigure_dns_resolver(fstore=None):
nm_service = services.knownservices['NetworkManager'] nm_service = services.knownservices['NetworkManager']
if nm_service.is_enabled(): if nm_service.is_enabled():
nm_service.reload_or_restart() nm_service.reload_or_restart()
changed = True
if os.path.isfile(SYSTEMD_RESOLVED_IPA_CONF): if os.path.isfile(SYSTEMD_RESOLVED_IPA_CONF):
os.unlink(SYSTEMD_RESOLVED_IPA_CONF) os.unlink(SYSTEMD_RESOLVED_IPA_CONF)
...@@ -261,6 +272,9 @@ def unconfigure_dns_resolver(fstore=None): ...@@ -261,6 +272,9 @@ def unconfigure_dns_resolver(fstore=None):
sdrd_service = services.service("systemd-resolved.service") sdrd_service = services.service("systemd-resolved.service")
if sdrd_service.is_enabled(): if sdrd_service.is_enabled():
sdrd_service.reload_or_restart() sdrd_service.reload_or_restart()
changed = True
return changed
def main(): def main():
...@@ -308,11 +322,12 @@ def main(): ...@@ -308,11 +322,12 @@ def main():
fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE) fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE)
if state == "present": if state == "present":
configure_dns_resolver(nameservers, searchdomains, fstore) changed = configure_dns_resolver(nameservers,
searchdomains, fstore)
else: else:
unconfigure_dns_resolver(fstore) changed = unconfigure_dns_resolver(fstore)
module.exit_json(changed=True) module.exit_json(changed=changed)
if __name__ == '__main__': if __name__ == '__main__':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment