Source code for cobbler.modules.sync_post_restart_services

from builtins import str
import cobbler.module_loader as module_loader
import cobbler.utils as utils


[docs]def register(): # this pure python trigger acts as if it were a legacy shell-trigger, but is much faster. # the return of this method indicates the trigger type return "/var/lib/cobbler/triggers/sync/post/*"
[docs]def run(api, args, logger): settings = api.settings() manage_dhcp = str(settings.manage_dhcp).lower() manage_dns = str(settings.manage_dns).lower() restart_dhcp = str(settings.restart_dhcp).lower() restart_dns = str(settings.restart_dns).lower() which_dhcp_module = module_loader.get_module_name("dhcp", "module").strip() which_dns_module = module_loader.get_module_name("dns", "module").strip() # special handling as we don't want to restart it twice has_restarted_dnsmasq = False rc = 0 if manage_dhcp != "0": if which_dhcp_module == "managers.isc": if restart_dhcp != "0": rc = utils.subprocess_call(logger, "dhcpd -t -q", shell=True) if rc != 0: logger.error("dhcpd -t failed") return 1 dhcp_service_name = utils.dhcp_service_name(api) dhcp_restart_command = "service %s restart" % dhcp_service_name rc = utils.subprocess_call(logger, dhcp_restart_command, shell=True) elif which_dhcp_module == "managers.dnsmasq": if restart_dhcp != "0": rc = utils.subprocess_call(logger, "service dnsmasq restart") has_restarted_dnsmasq = True else: logger.error("unknown DHCP engine: %s" % which_dhcp_module) rc = 411 if manage_dns != "0" and restart_dns != "0": if which_dns_module == "managers.bind": named_service_name = utils.named_service_name(api) dns_restart_command = "service %s restart" % named_service_name rc = utils.subprocess_call(logger, dns_restart_command, shell=True) elif which_dns_module == "managers.dnsmasq" and not has_restarted_dnsmasq: rc = utils.subprocess_call(logger, "service dnsmasq restart", shell=True) elif which_dns_module == "managers.dnsmasq" and has_restarted_dnsmasq: rc = 0 elif which_dns_module == "managers.ndjbdns": # N-DJBDNS picks up configuration changes automatically and does not need to be restarted. pass else: logger.error("unknown DNS engine: %s" % which_dns_module) rc = 412 return rc