INITSCRIPTS = [('/etc/rc.vinit', 'start'),
('/etc/rc.d/rc', '%(runlevel)d')]
- def __init__(self, name, vm_running = False, resources = {}):
+ def __init__(self, name, vm_id, vm_running = False, resources = {}):
self.name = name
self.config_file = "/etc/vservers/%s.conf" % name
if not (os.path.isdir(self.dir) and
os.access(self.dir, os.R_OK | os.W_OK | os.X_OK)):
raise Exception, "no such vserver: " + name
- self.config = self.__read_config_file("/etc/vservers.conf")
- self.config.update(self.__read_config_file(self.config_file))
+ self.config = {}
+ for config_file in ["/etc/vservers.conf", self.config_file]:
+ try:
+ self.config.update(self.__read_config_file(config_file))
+ except IOError, ex:
+ if ex.errno != errno.ENOENT:
+ raise
self.flags = 0
- flags = self.config["S_FLAGS"].split(" ")
+ flags = self.config.get("S_FLAGS", "").split(" ")
if "lock" in flags:
self.flags |= FLAGS_LOCK
if "nproc" in flags:
self.flags |= FLAGS_NPROC
self.remove_caps = ~vserverimpl.CAP_SAFE;
- self.ctx = int(self.config["S_CONTEXT"])
+ self.ctx = vm_id
self.vm_running = vm_running
self.resources = resources
ret = vserverimpl.getrlimit(self.ctx,6)
return ret
- def set_bwlimit(self, eth, limit, cap, minrate, maxrate):
- if cap == "-1":
- bwlimit.off(self.ctx,eth)
+ def set_bwlimit(self, share, minrate, maxrate = None, dev = "eth0"):
+
+ if False:
+ bwlimit.off(self.ctx, dev)
else:
- bwlimit.on(self.ctx, eth, limit, cap, minrate, maxrate)
+ bwlimit.on(self.ctx, dev, share, minrate, maxrate)
def get_bwlimit(self, eth):
# not implemented yet