X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fcodemux.py;h=02200d627f973e933b83d48ffdfadc893d2e92a9;hb=91b79c5c9868abb8f2f97ef5a9110e660fa3c551;hp=aa2935171a4d4b7495bec150f07dde145f766c5c;hpb=658683174ea538f4cacdab54302882005e148b8f;p=nodemanager.git diff --git a/plugins/codemux.py b/plugins/codemux.py index aa29351..02200d6 100644 --- a/plugins/codemux.py +++ b/plugins/codemux.py @@ -11,11 +11,10 @@ from config import Config CODEMUXCONF="/etc/codemux/codemux.conf" -def start(options, config): - pass +def start(options, conf): + logger.log("codemux: plugin starting up...") - -def GetSlivers(data, plc = None, config = None): +def GetSlivers(data, config, plc = None): """ For each sliver with the codemux attribute, parse out "host,port" and make entry in conf. Restart service after. @@ -36,13 +35,25 @@ def GetSlivers(data, plc = None, config = None): if slicesinconf.has_key("root"): _writeconf = False else: _writeconf = True + if 'slivers' not in data: + logger.log("codemux.GetSlivers: could not find the slivers keyin data (PLC connection down?) - IGNORED") + return + # Parse attributes and update dict of scripts for sliver in data['slivers']: for attribute in sliver['attributes']: if attribute['tagname'] == 'codemux': # add to conf. Attribute is [host, port] - params = {'host': attribute['value'].split(",")[0], - 'port': attribute['value'].split(",")[1]} + parts = attribute['value'].split(",") + if len(parts)<2: + logger.log("codemux: attribute value (%s) for codemux not separated by comma. Skipping."%attribute['value']) + continue + if len(parts) == 3: + ip = parts[2] + else: + ip = "" + params = {'host': parts[0], 'port': parts[1], 'ip': ip} + try: # Check to see if sliver is running. If not, continue if vserver.VServer(sliver['name']).is_running(): @@ -87,7 +98,7 @@ def writeConf(slivers, conf = CODEMUXCONF): for mapping in slivers: for (host, params) in mapping.iteritems(): if params['slice'] == "root": continue - f.write("%s %s %s\n" % (host, params['slice'], params['port'])) + f.write("%s %s %s %s\n" % (host, params['slice'], params['port'], params['ip'])) f.truncate() f.close() try: restartService() @@ -99,7 +110,7 @@ def sortDomains(slivers): dnames = {} # {host: slice} for (slice, params) in slivers.iteritems(): for mapping in params: - dnames[mapping['host']] = {"slice":slice, "port": mapping['port']} + dnames[mapping['host']] = {"slice":slice, "port": mapping['port'], "ip": mapping['ip']} hosts = dnames.keys() # sort by length hosts.sort(key=str.__len__) @@ -139,6 +150,7 @@ def isRunning(): def restartService(): + if not os.path.exists("/etc/init.d/codemux"): return logger.log("codemux: Restarting codemux service") if isRunning(): logger.log_call("/etc/init.d/codemux","condrestart") @@ -147,12 +159,16 @@ def restartService(): def startService(): + if not os.path.exists("/etc/init.d/codemux"): return if not isRunning(): logger.log("codemux: Starting codemux service") logger.log_call("/etc/init.d/codemux", "start") + logger.log_call("/sbin/chkconfig", "codemux", "on") def stopService(): + if not os.path.exists("/etc/init.d/codemux"): return if isRunning(): logger.log("codemux: Stopping codemux service") logger.log_call("/etc/init.d/codemux", "stop") + logger.log_call("/sbin/chkconfig", "codemux", "off")