Creating a new branch for gpo edits from 18694
[sfa.git] / sfa / managers / slice_manager_pl.py
index 1103bdc..4230978 100644 (file)
@@ -60,26 +60,25 @@ def create_slice(api, xrn, creds, rspec, users):
             message = "%s (line %s)" % (error.message, error.line)
             raise InvalidRSpec(message)
 
-    # XX
-    # XX TODO: Should try to use delegated credential first
-    # XX
-    cred = api.getCredential()
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:     
+        credential = api.getCredential()
     threads = ThreadManager()
     for aggregate in api.aggregates:
-        if aggregate not in [api.auth.client_cred.get_gid_caller().get_hrn()]:
-            server = api.aggregates[aggregate]
-            # Just send entire RSpec to each aggregate
-            threads.run(server.CreateSliver, xrn, cred, rspec, users)
+        # Just send entire RSpec to each aggregate
+        server = api.aggregates[aggregate]
+        threads.run(server.CreateSliver, xrn, credential, rspec, users)
             
     results = threads.get_results() 
     merged_rspec = merge_rspecs(results)
     return merged_rspec
 
 def renew_slice(api, xrn, creds, expiration_time):
-    # XX
-    # XX TODO: Should try to use delegated credential first
-    # XX
-    credential = api.getCredential()
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:
+        credential = api.getCredential()
     threads = ThreadManager()
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
@@ -97,8 +96,10 @@ def get_ticket(api, xrn, creds, rspec, users):
         aggregate_hrn = element.values()[0]
         aggregate_rspecs[aggregate_hrn] = rspec 
 
-    # get a ticket from each aggregate 
-    credential = api.getCredential()
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:
+        credential = api.getCredential() 
     threads = ThreadManager()
     for aggregate, aggregate_rspec in aggregate_rspecs.items():
         server = None
@@ -155,11 +156,11 @@ def get_ticket(api, xrn, creds, rspec, users):
     return ticket.save_to_string(save_parents=True)
 
 
-def delete_slice(api, xrn, origin_hrn=None):
-    # XX
-    # XX TODO: Should try to use delegated credential first
-    # XX
-    credential = api.getCredential()
+def delete_slice(api, xrn, creds):
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:
+        credential = api.getCredential()
     threads = ThreadManager()
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
@@ -168,10 +169,10 @@ def delete_slice(api, xrn, origin_hrn=None):
     return 1
 
 def start_slice(api, xrn, creds):
-    # XX
-    # XX TODO: Should try to use delegated credential first
-    # XX
-    credential = api.getCredential()
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:
+        credential = api.getCredential()
     threads = ThreadManager()
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
@@ -180,10 +181,10 @@ def start_slice(api, xrn, creds):
     return 1
  
 def stop_slice(api, xrn, creds):
-    # XX
-    # XX TODO: Should try to use delegated credential first
-    # XX
-    credential = api.getCredential()
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:
+        credential = api.getCredential()
     threads = ThreadManager()
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
@@ -216,10 +217,12 @@ def get_slices(api, creds):
         if slices:
             return slices    
 
-    # fetch from aggregates
-    slices = []
-    credential = api.getCredential()
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:
+        credential = api.getCredential()
     threads = ThreadManager()
+    # fetch from aggregates
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
         threads.run(server.ListSlices, credential)
@@ -254,22 +257,20 @@ def get_rspec(api, creds, options):
 
     hrn, type = urn_to_hrn(xrn)
     rspec = None
-    # XX
-    # XX TODO: Should try to use delegated credential first 
-    # XX
-    cred = api.getCredential()
-    threads = ThreadManager()
     
+    # attempt to use delegated credential first
+    credential = api.getDelegatedCredential(creds)
+    if not credential:
+        credential = api.getCredential()
+    threads = ThreadManager()
     for aggregate in api.aggregates:
-        if aggregate not in [api.auth.client_cred.get_gid_caller().get_hrn()]:   
-            # get the rspec from the aggregate
-            server = api.aggregates[aggregate]
-            my_opts = copy(options)
-            my_opts['geni_compressed'] = False
-            threads.run(server.ListResources, cred, my_opts)
-            #threads.run(server.get_resources, cred, xrn, origin_hrn)
+        # get the rspec from the aggregate
+        server = api.aggregates[aggregate]
+        my_opts = copy(options)
+        my_opts['geni_compressed'] = False
+        threads.run(server.ListResources, credential, my_opts)
+        #threads.run(server.get_resources, cred, xrn, origin_hrn)
                     
-
     results = threads.get_results()
     # combine the rspecs into a single rspec 
     for agg_rspec in results: