From a57724fa1808b69e1fc137d5396ad8b67234991d Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Fri, 17 Aug 2007 12:49:21 -0400 Subject: Publish cobblerd under avahi if avahi-tools is installed --- cobbler/cobblerd.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'cobbler') 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) -- cgit