summaryrefslogtreecommitdiffstats
path: root/cobbler
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@mdehaan.rdu.redhat.com>2007-08-17 12:49:21 -0400
committerMichael DeHaan <mdehaan@mdehaan.rdu.redhat.com>2007-08-17 12:49:21 -0400
commita57724fa1808b69e1fc137d5396ad8b67234991d (patch)
treedb0482546b20ed5869fa67480164a257c1c9621b /cobbler
parentce27d1422dafbefcde15d5df4e7853a62304262d (diff)
downloadthird_party-cobbler-a57724fa1808b69e1fc137d5396ad8b67234991d.tar.gz
third_party-cobbler-a57724fa1808b69e1fc137d5396ad8b67234991d.tar.xz
third_party-cobbler-a57724fa1808b69e1fc137d5396ad8b67234991d.zip
Publish cobblerd under avahi if avahi-tools is installed
Diffstat (limited to 'cobbler')
-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)