Change cpu_min to cpu_pct to avoid name conflict with attributes affecting rlimits
[nodemanager.git] / sliver_vs.py
index dbe568f..2f183c8 100644 (file)
@@ -47,7 +47,7 @@ class Sliver_VS(accounts.Account, vserver.VServer):
     def __init__(self, rec):
         logger.verbose ('initing Sliver_VS with name=%s'%rec['name'])
         try:
-            vserver.VServer.__init__(self, rec['name'])
+            vserver.VServer.__init__(self, rec['name'],logfile='/var/log/nm')
         except Exception, err:
             if not isinstance(err, vserver.NoSuchVServer):
                 # Probably a bad vserver or vserver configuration file
@@ -55,7 +55,7 @@ class Sliver_VS(accounts.Account, vserver.VServer):
                 logger.log('%s: recreating bad vserver' % rec['name'])
                 self.destroy(rec['name'])
             self.create(rec['name'], rec['vref'])
-            vserver.VServer.__init__(self, rec['name'])
+            vserver.VServer.__init__(self, rec['name'],logfile='/var/log/nm')
 
         self.keys = ''
         self.rspec = {}
@@ -141,7 +141,10 @@ class Sliver_VS(accounts.Account, vserver.VServer):
             minimum  = self.rspec['%s_min'%type]
             soft = self.rspec['%s_soft'%type]
             hard = self.rspec['%s_hard'%type]
-            self.set_rlimit_config(limit, hard, soft, minimum)
+            update = self.set_rlimit(limit, hard, soft, minimum)
+            if update:
+                logger.log('%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']:
@@ -159,17 +162,22 @@ class Sliver_VS(accounts.Account, vserver.VServer):
             logger.log('%s: setting net share to %d' % (self.name, net_limits[-1]))
             self.set_bwlimit(*net_limits)
 
-        cpu_min = self.rspec['cpu_min']
+        cpu_pct = self.rspec['cpu_pct']
         cpu_share = self.rspec['cpu_share']
 
         if self.rspec['enabled'] > 0:
-            if cpu_min >= 50:  # at least 5%: keep people from shooting themselves in the foot
-                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)
+            if cpu_pct > 0:
+                logger.log('%s: setting cpu reservation to %d%%' % (self.name, cpu_pct))
             else:
+                cpu_pct = 0
+
+            if cpu_share > 0:
                 logger.log('%s: setting cpu share to %d' % (self.name, cpu_share))
-                self.set_sched_config(cpu_share, 0)
+            else:
+                cpu_share = 0
 
+            self.set_sched_config(cpu_pct, cpu_share)
+            # if IP address isn't set (even to 0.0.0.0), sliver won't be able to use network
             if self.rspec['ip_addresses'] != '0.0.0.0':
                 logger.log('%s: setting IP address(es) to %s' % (self.name, self.rspec['ip_addresses']))
             self.set_ipaddresses_config(self.rspec['ip_addresses'])