summaryrefslogtreecommitdiffstats
path: root/cobbler/cobblerd.py
diff options
context:
space:
mode:
Diffstat (limited to 'cobbler/cobblerd.py')
-rw-r--r--cobbler/cobblerd.py29
1 files changed, 25 insertions, 4 deletions
diff --git a/cobbler/cobblerd.py b/cobbler/cobblerd.py
index 1e2f32f..289445b 100644
--- a/cobbler/cobblerd.py
+++ b/cobbler/cobblerd.py
@@ -15,13 +15,15 @@ import socket
import time
import os
import SimpleXMLRPCServer
-import yaml # Howell Clark version
import glob
-import api as cobbler_api
-import utils
from rhpl.translate import _, N_, textdomain, utf8
import xmlrpclib
+import api as cobbler_api
+import yaml # Howell Clark version
+import utils
+import sub_process
+
def main():
core(logger=None)
@@ -37,7 +39,15 @@ def core(logger=None):
if pid == 0:
do_xmlrpc(bootapi, settings, xmlrpc_port, logger)
else:
- do_syslog(bootapi, settings, syslog_port, logger)
+ if os.path.exists("/usr/bin/avahi-publish-service"):
+ pid2 = os.fork()
+ if pid2 == 0:
+ do_syslog(bootapi, settings, syslog_port, logger)
+ else:
+ do_avahi(bootapi, settings, logger)
+ else:
+ do_syslog(bootapi, settings, syslog_port, logger)
+
def log(logger,msg):
if logger is not None:
@@ -45,6 +55,17 @@ def log(logger,msg):
else:
print >>sys.stderr, msg
+def do_avahi(bootapi, settings, logger):
+ # publish via zeroconf. This command will not terminate
+ log(logger, "publishing avahi service")
+ cmd = [ "/usr/bin/avahi-publish-service",
+ "cobblerd",
+ "_http._tcp",
+ "%s" % settings.xmlrpc_port ]
+ result = sub_process.call(cmd, shell=False)
+ log(logger, "avahi service terminated: %d" % result)
+
+
def do_xmlrpc(bootapi, settings, port, logger):
xinterface = CobblerXMLRPCInterface(bootapi,logger)