- resources = {'VS_WHITELISTED': whitelisted}
- self.update_resources(resources)
-
- config_var_re = re.compile(r"^ *([A-Z_]+)=(.*)\n?$", re.MULTILINE)
-
- def __read_config_file(self, filename):
-
- f = open(filename, "r")
- data = f.read()
- f.close()
- config = {}
- for m in self.config_var_re.finditer(data):
- (key, val) = m.groups()
- config[key] = val.strip('"')
- return config
-
- def __update_config_file(self, filename, newvars):
-
- # read old file, apply changes
- f = open(filename, "r")
- data = f.read()
- f.close()
- todo = newvars.copy()
- changed = False
- offset = 0
- for m in self.config_var_re.finditer(data):
- (key, val) = m.groups()
- newval = todo.pop(key, None)
- if newval != None:
- data = data[:offset+m.start(2)] + str(newval) + data[offset+m.end(2):]
- offset += len(str(newval)) - (m.end(2)-m.start(2))
- changed = True
- for (newkey, newval) in todo.items():
- data += "%s=%s\n" % (newkey, newval)
- changed = True
-
- if not changed:
- return
-
- # write new file
- newfile = filename + ".new"
- f = open(newfile, "w")
- f.write(data)
- f.close()
-
- # replace old file with new
- os.rename(newfile, filename)
+ self.config.update('whitelisted', whitelisted)
+
+ def set_capabilities(self, capabilities):
+ return vserverimpl.setbcaps(self.ctx, vserverimpl.text2bcaps(capabilities))
+
+ def set_capabilities_config(self, capabilities):
+ self.config.update('bcapabilities', capabilities)
+ self.set_capabilities(capabilities)
+
+ def get_capabilities(self):
+ return vserverimpl.bcaps2text(vserverimpl.getbcaps(self.ctx))
+
+ def get_capabilities_config(self):
+ return self.config.get('bcapabilities', '')
+
+ def set_ipaddresses(self, addresses):
+ vserverimpl.netremove(self.ctx, "all")
+ for a in addresses.split(","):
+ vserverimpl.netadd(self.ctx, a)
+
+ def set_ipaddresses_config(self, addresses):
+ i = 0
+ for a in addresses.split(","):
+ self.config.update("interfaces/%d/ip" % i, a)
+ i += 1
+ while self.config.unset("interfaces/%d/ip" % i):
+ i += 1
+ self.set_ipaddresses(addresses)
+
+ def get_ipaddresses_config(self):
+ i = 0
+ ret = []
+ while True:
+ r = self.config.get("interfaces/%d/ip" % i, '')
+ if r == '':
+ break
+ ret += [r]
+ i += 1
+ return ",".join(ret)
+
+ def get_ipaddresses(self):
+ # No clean way to do this right now.
+ return None