blob: fa9699b9fc21c40dae40052fad78ba7f5aa9b11c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
import distutils.sysconfig
import sys
import os
from utils import _
import traceback
import cexceptions
import os
import sys
import xmlrpclib
import cobbler.module_loader as module_loader
plib = distutils.sysconfig.get_python_lib()
mod_path="%s/cobbler" % plib
sys.path.insert(0, mod_path)
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/*"
def run(api,args):
settings = api.settings()
manage_dhcp = str(settings.manage_dhcp).lower()
manage_dns = str(settings.manage_dns).lower()
manage_xinetd = str(settings.manage_xinetd).lower()
restart_dhcp = str(settings.restart_dhcp).lower()
restart_dns = str(settings.restart_dns).lower()
restart_xinetd = str(settings.restart_xinetd).lower()
omapi_enabled = str(settings.omapi_enabled).lower()
omapi_port = str(settings.omapi_port).lower()
which_dhcp_module = module_loader.get_module_from_file("dhcp","module",just_name=True).strip()
which_dns_module = module_loader.get_module_from_file("dns","module",just_name=True).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 == "manage_isc":
if not omapi_enabled in [ "1", "true", "yes", "y" ] and restart_dhcp:
rc = os.system("/usr/sbin/dhcpd -t")
if rc != 0:
print "/usr/sbin/dhcpd -t failed"
return 1
rc = os.system("/sbin/service dhcpd restart")
elif which_dhcp_module == "manage_dnsmasq":
if restart_dhcp:
rc = os.system("/sbin/service dnsmasq restart")
has_restarted_dnsmasq = True
else:
print "- error: unknown DHCP engine: %s" % which_dhcp_module
rc = 411
if manage_dns != "0" and restart_dns != "0":
if which_dns_module == "manage_bind":
rc = os.system("/sbin/service named restart")
elif which_dns_module == "manage_dnsmasq" and not has_restarted_dnsmasq:
rc = os.ssytem("/sbin/service dnsmasq restart")
else:
print "- error: unknown DNS engine: %s" % which_dns_module
rc = 412
if manage_xinetd != "0" and restart_xinetd != "0":
rc = os.system("/sbin/service xinetd restart")
return rc
|