Delegation fix. Slivers weren't being created once ticket was delivered.
authorFaiyaz Ahmed <faiyaza@cs.princeton.edu>
Mon, 16 Jul 2007 20:52:20 +0000 (20:52 +0000)
committerFaiyaz Ahmed <faiyaza@cs.princeton.edu>
Mon, 16 Jul 2007 20:52:20 +0000 (20:52 +0000)
api.py
database.py
sm.py

diff --git a/api.py b/api.py
index 96fafe7..5f32350 100644 (file)
--- a/api.py
+++ b/api.py
@@ -52,11 +52,14 @@ def Ticket(tkt):
     """Ticket(tkt): deliver a ticket"""
     try:
         data = ticket.verify(tkt)
+        name = data['slivers'][0]['name']
         if data != None:
             deliver_ticket(data)
-        logger.log('Got ticket')
+        logger.log('Ticket delivered for %s' % name)
+        Create(database.db.get(name))
     except Exception, err:
         raise xmlrpclib.Fault(102, 'Ticket error: ' + str(err))
+        logger.log_exc()
 
 @export_to_api(0)
 def GetXIDs():
@@ -149,6 +152,7 @@ class APIRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
             if method_name not in ('ReCreate', 'Help', 'Ticket', 'GetXIDs', 'GetSSHKeys'):
                 target_name = args[0]
                 target_rec = database.db.get(target_name)
+                print target_rec
                 if not (target_rec and target_rec['type'].startswith('sliver.')): 
                     raise xmlrpclib.Fault(102, 'Invalid argument: the first argument must be a sliver name.')
                 if not (caller_name, method_name) in target_rec['delegations']:
index be304d3..46a4e47 100644 (file)
@@ -104,10 +104,8 @@ class Database(dict):
             if rec['instantiation'] == 'plc-instantiated': accounts.get(name).ensure_created(rec)
             if rec['instantiation'] == 'nm-controller': accounts.get(name).ensure_created(rec)
 
-        #try: bwmon.GetSlivers(self)
-        #except: logger.log_exc()
+               # Wake up bwmom to update limits.
         bwmon.lock.set()
-        # request a database dump
         global dump_requested
         dump_requested = True
         db_cond.notify()
diff --git a/sm.py b/sm.py
index 11c9ee7..eb45362 100644 (file)
--- a/sm.py
+++ b/sm.py
@@ -158,7 +158,7 @@ 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 = {}