get_ticket has been replaced by GetTicket
[sfa.git] / sfa / managers / slice_manager_pl.py
index 05c490f..1d2f695 100644 (file)
@@ -29,16 +29,14 @@ def get_version():
     version['geni_api'] = 1
     return version
 
-def delete_slice(api, xrn, origin_hrn=None):
-    credential = api.getCredential()
-    threads = ThreadManager()
-    for aggregate in api.aggregates:
-        server = api.aggregates[aggregate] 
-        threads.run(server.delete_slice, credential, xrn, origin_hrn)
-    threads.get_results()
-    return 1
+def slice_status(api, slice_xrn, creds ):
+    result = {}
+    result['geni_urn'] = slice_xrn
+    result['geni_status'] = 'unknown'
+    result['geni_resources'] = {}
+    return result
 
-def create_slice(api, xrn, rspec, origin_hrn=None):
+def create_slice(api, xrn, creds, rspec, users):
     hrn, type = urn_to_hrn(xrn)
 
     # Validate the RSpec against PlanetLab's schema --disabled for now
@@ -60,17 +58,34 @@ def create_slice(api, xrn, rspec, origin_hrn=None):
             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()
     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.create_slice, cred, xrn, rspec, origin_hrn)
-    threads.get_results() 
+            threads.run(server.CreateSliver, xrn, cred, 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()
+    threads = ThreadManager()
+    for aggregate in api.aggregates:
+        server = api.aggregates[aggregate]
+        threads.run(server.RenewSliver, xrn, credential, expiration_time)
+    threads.get_results()
     return 1
 
-def get_ticket(api, xrn, rspec, origin_hrn=None):
+def get_ticket(api, xrn, creds, rspec, users):
     slice_hrn, type = urn_to_hrn(xrn)
     # get the netspecs contained within the clients rspec
     aggregate_rspecs = {}
@@ -99,7 +114,8 @@ def get_ticket(api, xrn, rspec, origin_hrn=None):
                     break   
         if server is None:
             continue 
-        threads.run(server.get_ticket, credential, xrn, aggregate_rspec, origin_hrn)
+        threads.run(server.GetTicket, xrn, credential, aggregate_rspec, users)
+
     results = threads.get_results()
     
     # gather information from each ticket 
@@ -134,29 +150,62 @@ def get_ticket(api, xrn, rspec, origin_hrn=None):
     ticket.sign()          
     return ticket.save_to_string(save_parents=True)
 
-def start_slice(api, xrn):
+
+def delete_slice(api, xrn, origin_hrn=None):
+    # XX
+    # XX TODO: Should try to use delegated credential first
+    # XX
+    credential = api.getCredential()
+    threads = ThreadManager()
+    for aggregate in api.aggregates:
+        server = api.aggregates[aggregate]
+        threads.run(server.DeleteSliver, xrn, credential)
+    threads.get_results()
+    return 1
+
+def start_slice(api, xrn, creds):
+    # XX
+    # XX TODO: Should try to use delegated credential first
+    # XX
     credential = api.getCredential()
     threads = ThreadManager()
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
-        threads.run(server.stop_slice, credential, xrn)
+        threads.run(server.Start, xrn, credential)
     threads.get_results()    
     return 1
  
-def stop_slice(api, xrn):
+def stop_slice(api, xrn, creds):
+    # XX
+    # XX TODO: Should try to use delegated credential first
+    # XX
     credential = api.getCredential()
     threads = ThreadManager()
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
-        threads.run(server.stop_slice, credential, xrn)
+        threads.run(server.Stop, xrn, credential)
     threads.get_results()    
     return 1
 
 def reset_slice(api, xrn):
-    # XX not implemented at this interface
+    """
+    Not implemented
+    """
     return 1
 
-def get_slices(api):
+def shutdown(api, xrn, creds):
+    """
+    Not implemented   
+    """
+    return 1
+
+def status(api, xrn, creds):
+    """
+    Not implemented 
+    """
+    return 1
+
+def get_slices(api, creds):
     # look in cache first
     if api.cache:
         slices = api.cache.get('slices')
@@ -169,7 +218,7 @@ def get_slices(api):
     threads = ThreadManager()
     for aggregate in api.aggregates:
         server = api.aggregates[aggregate]
-        threads.run(server.get_slices, credential)
+        threads.run(server.ListSlices, credential)
 
     # combime results
     results = threads.get_results()
@@ -211,12 +260,8 @@ def get_rspec(api, creds, options):
         if aggregate not in [api.auth.client_cred.get_gid_caller().get_hrn()]:   
             # get the rspec from the aggregate
             server = api.aggregates[aggregate]
-            # XX
-            # XX TODO: switch to ProtoGeni spec in next release. Give other 
-            # XX aggregtes a chacne to upgrade to this release before switching 
-            # XX 
-            # threads.run(server.ListResources, cred, options)
-            threads.run(server.get_resources, cred, xrn, origin_hrn)
+            threads.run(server.ListResources, cred, options)
+            #threads.run(server.get_resources, cred, xrn, origin_hrn)
                     
 
     results = threads.get_results()
@@ -238,7 +283,6 @@ def get_rspec(api, creds, options):
                 for request in root.iterfind("./request"):
                     rspec.append(deepcopy(request))
     
-    print results
     rspec =  etree.tostring(rspec, xml_declaration=True, pretty_print=True)
     # cache the result
     if api.cache and not xrn:
@@ -246,18 +290,6 @@ def get_rspec(api, creds, options):
  
     return rspec
 
-"""
-Returns the request context required by sfatables. At some point, this
-mechanism should be changed to refer to "contexts", which is the
-information that sfatables is requesting. But for now, we just return
-the basic information needed in a dict.
-"""
-def fetch_context(slice_hrn, user_hrn, contexts):
-    #slice_hrn = urn_to_hrn(slice_xrn)[0]
-    #user_hrn = urn_to_hrn(user_xrn)[0]
-    base_context = {'sfa':{'user':{'hrn':user_hrn}, 'slice':{'hrn':slice_hrn}}}
-    return base_context
-
 def main():
     r = RSpec()
     r.parseFile(sys.argv[1])