add support for capabilities
authorDaniel Hokka Zakrisson <dhokka@cs.princeton.edu>
Mon, 16 Jul 2007 17:53:22 +0000 (17:53 +0000)
committerDaniel Hokka Zakrisson <dhokka@cs.princeton.edu>
Mon, 16 Jul 2007 17:53:22 +0000 (17:53 +0000)
sliver_vs.py
sm.py

index db1d340..ad37e3e 100644 (file)
@@ -143,6 +143,9 @@ class Sliver_VS(accounts.Account, vserver.VServer):
             self.set_rlimit_config(limit, hard, soft, minimum)
 
         self.set_WHITELISTED_config(self.rspec['whitelist'])
+        self.set_capabilities_config(self.rspec['capabilities'])
+        if self.rspec['capabilities']:
+            logger.log('%s: setting capabilities to %s' % (self.name, self.rspec['capabilities']))
 
         if False: # this code was commented out before
             # N.B. net_*_rate are in kbps because of XML-RPC maxint
diff --git a/sm.py b/sm.py
index 919b72a..11c9ee7 100644 (file)
--- a/sm.py
+++ b/sm.py
@@ -38,6 +38,8 @@ DEFAULT_ALLOCATION = {
     'net_i2_thresh_kbyte': 13757316,
     # disk space limit
     'disk_max': 5000000, # bytes
+    # capabilities
+    'capabilities': '',
 
     # NOTE: this table is further populated with resource names and
     # default amounts via the start() function below.  This probably
@@ -163,7 +165,12 @@ def GetSlivers(data, fullupdate=True):
         rec['rspec'] = rspec
         for resname, default_amt in DEFAULT_ALLOCATION.iteritems():
             try: amt = int(attr_dict[resname])
-            except (KeyError, ValueError): amt = default_amt
+            except KeyError: amt = default_amt
+            except ValueError:
+                if type(default_amt) is type('str'):
+                    amt = attr_dict[resname]
+                else:
+                    amt = default_amt
             rspec[resname] = amt
 
         # disable sliver