- vserver.VServer.set_disklimit(self, disk_max_KiB)
- except OSError: logger.log_exc()
-
- net_limits = (int(self.rec['net_min']),
- int(self.rec['net_max']),
- int(self.rec['net2_min']),
- int(self.rec['net2_max']),
- int(self.rec['net_share']))
- logger.log('%s: setting net limits to %s bps' % (self.name, net_limits[:-1]))
- logger.log('%s: setting net share to %d' % (self.name, net_limits[-1]))
- self.set_bwlimit(*net_limits)
-
- cpu_min = int(self.rec['cpu_min'])
- cpu_share = int(self.rec['cpu_share'])
- if bool(self.rec['enabled']):
- if cpu_min > 0:
- logger.log('%s: setting cpu share to %d%% guaranteed' % (self.name, cpu_min/10.0))
- self.set_sched_config(cpu_min, vserver.SCHED_CPU_GUARANTEED)
+ vserver.VServer.set_disklimit(self, max(disk_max, self.disk_blocks))
+ except:
+ logger.log_exc('sliver_vs: failed to set max disk usage',name=self.name)
+
+ # get/set the min/soft/hard values for all of the vserver
+ # related RLIMITS. Note that vserver currently only
+ # implements support for hard limits.
+ for limit in vserver.RLIMITS.keys():
+ type = limit.lower()
+ minimum = self.rspec['%s_min'%type]
+ soft = self.rspec['%s_soft'%type]
+ hard = self.rspec['%s_hard'%type]
+ update = self.set_rlimit(limit, hard, soft, minimum)
+ if update:
+ logger.log('sliver_vs: %s: setting rlimit %s to (%d, %d, %d)'
+ % (self.name, type, hard, soft, minimum))
+
+ self.set_capabilities_config(self.rspec['capabilities'])
+ if self.rspec['capabilities']:
+ logger.log('sliver_vs: %s: setting capabilities to %s' % (self.name, self.rspec['capabilities']))
+
+ cpu_pct = self.rspec['cpu_pct']
+ cpu_share = self.rspec['cpu_share']
+
+ count = 1
+ for key in self.rspec.keys():
+ if key.find('sysctl.') == 0:
+ sysctl=key.split('.')
+ try:
+ # /etc/vservers/<guest>/sysctl/<id>/
+ dirname = "/etc/vservers/%s/sysctl/%s" % (self.name, count)
+ try:
+ os.makedirs(dirname, 0755)
+ except:
+ pass
+ setting = open("%s/setting" % dirname, "w")
+ setting.write("%s\n" % key.lstrip("sysctl."))
+ setting.close()
+ value = open("%s/value" % dirname, "w")
+ value.write("%s\n" % self.rspec[key])
+ value.close()
+ count += 1
+
+ logger.log("sliver_vs: %s: writing %s=%s"%(self.name,key,self.rspec[key]))
+ except IOError, e:
+ logger.log("sliver_vs: %s: could not set %s=%s"%(self.name,key,self.rspec[key]))
+ logger.log("sliver_vs: %s: error = %s"%(self.name,e))
+
+
+ if self.rspec['enabled'] > 0:
+ if cpu_pct > 0:
+ logger.log('sliver_vs: %s: setting cpu reservation to %d%%' % (self.name, cpu_pct))