basics are OK; still needs to prevent the regular slivermanager from starting slivers...
[nodemanager.git] / plugins / codemux.py
index 7c24f8e..ef8634f 100644 (file)
@@ -6,7 +6,6 @@
 import logger
 import os
 import vserver
-from sets import Set
 from config import Config
 
 CODEMUXCONF="/etc/codemux/codemux.conf"
@@ -47,7 +46,12 @@ def GetSlivers(data, config, plc = None):
                 if len(parts)<2:
                     logger.log("codemux: attribute value (%s) for codemux not separated by comma. Skipping."%attribute['value'])
                     continue
-                params = {'host': parts[0], 'port': parts[1]}
+                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():
@@ -68,7 +72,7 @@ def GetSlivers(data, config, plc = None):
                     pass
 
     # Remove slices from conf that no longer have the attribute
-    for deadslice in Set(slicesinconf.keys()) - Set(codemuxslices.keys()):
+    for deadslice in set(slicesinconf.keys()) - set(codemuxslices.keys()):
         # XXX Hack for root slice
         if deadslice != "root": 
             logger.log("codemux:  Removing %s" % deadslice)
@@ -92,7 +96,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()
@@ -104,7 +108,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__)
@@ -142,16 +146,16 @@ def isRunning():
     else:
         return False
 
-
 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", ])
     else:
         logger.log_call(["/etc/init.d/codemux","restart", ])
 
-
 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", ])
@@ -159,6 +163,7 @@ def startService():
 
 
 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", ])