-# $Id$
-# $URL$
-
"""Codemux configurator. Monitors slice attributes and configures CoDemux to mux port 80 based on HOST field in HTTP request. Forwards to localhost port belonging to configured slice."""
import logger
import os
-import vserver
+
from config import Config
+import slivermanager
CODEMUXCONF="/etc/codemux/codemux.conf"
try:
# Check to see if sliver is running. If not, continue
- if vserver.VServer(sliver['name']).is_running():
+ if slivermanager.is_running(sliver['name']):
# Check if new or needs updating
if (sliver['name'] not in slicesinconf.keys()) \
or (params not in slicesinconf.get(sliver['name'], [])):
- logger.log("codemux: Updaiting slice %s using %s" % \
+ logger.log("codemux: Updating slice %s using %s" % \
(sliver['name'], params['host']))
# Toggle write.
_writeconf = True
# Add to dict of codemuxslices. Make list to support more than one
# codemuxed host per slice.
- codemuxslices.setdefault(sliver['name'],[])
+ codemuxslices.setdefault(sliver['name'], [])
codemuxslices[sliver['name']].append(params)
except:
logger.log("codemux: sliver %s not running yet. Deferring."\
try:
f = open(conf)
for line in f.readlines():
- if line.startswith("#") \
- or (len(line.split()) > 4) \
- or (len(line.split()) < 3):
+ parts = line.split()
+ if line.startswith("#") or (len(parts) > 4) or (len(parts) < 3):
continue
- (host, slice, port) = line.split()[:3]
- logger.log("codemux: found %s in conf" % slice, 2)
- slicesinconf.setdefault(slice, [])
- slicesinconf[slice].append({"host": host, "port": port})
+ if len(parts) == 4:
+ (host, slice, port, ip) = parts
+ logger.log("codemux: found %s in conf" % slice, 2)
+ slicesinconf.setdefault(slice, [])
+ slicesinconf[slice].append({"host": host, "port": port, "ip": ip})
+ else:
+ (host, slice, port) = parts[:3]
+ logger.log("codemux: found %s in conf" % slice, 2)
+ slicesinconf.setdefault(slice, [])
+ slicesinconf[slice].append({"host": host, "port": port})
f.close()
except IOError: logger.log_exc("codemux.parseConf got IOError")
return slicesinconf
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", ])
+ logger.log_call(["/etc/init.d/codemux", "condrestart", ])
else:
- logger.log_call(["/etc/init.d/codemux","restart", ])
+ logger.log_call(["/etc/init.d/codemux", "restart", ])
def startService():
if not os.path.exists("/etc/init.d/codemux"): return
logger.log("codemux: Stopping codemux service")
logger.log_call(["/etc/init.d/codemux", "stop", ])
logger.log_call(["/sbin/chkconfig", "codemux", "off"])
+