Delegation fix. Slivers weren't being created once ticket was delivered.
[nodemanager.git] / sm.py
diff --git a/sm.py b/sm.py
index e159213..eb45362 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
@@ -156,14 +158,19 @@ def GetSlivers(data, fullupdate=True):
             rec['initscript'] = initscripts_by_id[is_id]
         else:
             rec['initscript'] = ''
-        rec.setdefault('delegations', [])
+        rec.setdefault('delegations', attr_dict.get("delegations", []))
 
         # extract the implied rspec
         rspec = {}
         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
@@ -175,15 +182,7 @@ def GetSlivers(data, fullupdate=True):
         database.db.deliver_record(rec)
     if fullupdate: database.db.set_min_timestamp(data['timestamp'])
     database.db.sync()
-
-    # handle requested startup
-    global start_requested
-    if start_requested:
-        start_requested = False
-        cumulative_delay = 0
-        for name in database.db.iterkeys():
-            accounts.get(name).start(delay=cumulative_delay)
-            cumulative_delay += 3
+    accounts.Startingup = False
 
 def deliver_ticket(data): return GetSlivers(data, fullupdate=False)
 
@@ -194,8 +193,7 @@ def start(options, config):
         
     accounts.register_class(sliver_vs.Sliver_VS)
     accounts.register_class(delegate.Delegate)
-    global start_requested
-    start_requested = options.startup
+    accounts.Startingup = options.startup
     database.start()
     api.deliver_ticket = deliver_ticket
     api.start()