support GENI v2 API 'options' argument for all Aggregate API methods
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 21 Nov 2011 21:50:42 +0000 (16:50 -0500)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 21 Nov 2011 21:50:42 +0000 (16:50 -0500)
14 files changed:
sfa/client/sfi.py
sfa/managers/aggregate_manager.py
sfa/managers/aggregate_manager_eucalyptus.py
sfa/managers/aggregate_manager_max.py
sfa/managers/slice_manager.py
sfa/methods/CreateSliver.py
sfa/methods/DeleteSliver.py
sfa/methods/GetTicket.py
sfa/methods/GetVersion.py
sfa/methods/ListResources.py
sfa/methods/ListSlices.py
sfa/methods/RenewSliver.py
sfa/methods/SliverStatus.py
sfa/methods/UpdateSliver.py

index fc6a7b4..b937feb 100755 (executable)
@@ -429,7 +429,7 @@ class Sfi:
         return version   
         
 
-    def server_supports_call_id_arg(self, server):
+    def server_supports_options_arg(self, server):
         """
         Returns true if server support the optional call_id arg, false otherwise. 
         """
@@ -441,11 +441,11 @@ class Sfi:
             version_parts = code_tag_parts[0].split(".")
             major, minor = version_parts[0], version_parts[1]
             rev = code_tag_parts[1]
-            if int(major) > 1:
-                if int(minor) > 0 or int(rev) > 20:
+            if int(major) >= 1:
+                if int(minor) >= 2:
                     return True
         return False                
-             
+        
     #
     # Get various credential and spec files
     #
@@ -929,8 +929,11 @@ class Sfi:
             delegated_cred = self.delegate_cred(user_cred, get_authority(self.authority))
             creds.append(delegated_cred)  
         server = self.server_proxy_from_opts(opts)
-        #results = server.ListSlices(creds, unique_call_id())
-        results = server.ListSlices(creds)
+        call_args = [creds]
+        if self.server_supports_options_arg(server):
+            options = {'call_id': unique_call_id()}
+            call_args.append(options)
+        results = server.ListSlices(*call_args)
         display_list(results)
         return
     
@@ -938,13 +941,12 @@ class Sfi:
     def resources(self, opts, args):
         user_cred = self.get_user_cred().save_to_string(save_parents=True)
         server = self.slicemgr
-        call_options = {}
         server = self.server_proxy_from_opts(opts)
         
         if args:
             cred = self.get_slice_cred(args[0]).save_to_string(save_parents=True)
             hrn = args[0]
-           call_options = {'geni_slice_urn': hrn_to_urn(hrn, 'slice')}
+           options = {'geni_slice_urn': hrn_to_urn(hrn, 'slice')}
         else:
             cred = user_cred
             hrn = None
@@ -958,18 +960,19 @@ class Sfi:
             server_version = self.get_cached_server_version(server)
             if 'sfa' in server_version:
                 # just request the version the client wants 
-                call_options['rspec_version'] = version_manager.get_version(opts.rspec_version).to_dict()
+                options['rspec_version'] = version_manager.get_version(opts.rspec_version).to_dict()
             else:
                 # this must be a protogeni aggregate. We should request a v2 ad rspec
                 # regardless of what the client user requested 
-                call_options['rspec_version'] = version_manager.get_version('ProtoGENI 2').to_dict()     
+                options['rspec_version'] = version_manager.get_version('ProtoGENI 2').to_dict()     
         #panos add info options
         if opts.info:
-            call_options['info'] = opts.info 
+            options['info'] = opts.info 
 
-        call_args = [creds, call_options]
-        if self.server_supports_call_id_arg(server):
-            call_args.append(unique_call_id())
+        call_args = [creds]
+        if self.server_supports_options_arg(server):
+            options = {'call_id': unique_call_id()}
+            call_args.append(options)
         result = server.ListResources(*call_args)
         if opts.file is None:
             display_rspec(result, opts.format)
@@ -1022,9 +1025,9 @@ class Sfi:
                 if delegated_cred:
                     creds.append(delegated_cred)
         call_args = [slice_urn, creds, rspec, users]
-        if self.server_supports_call_id_arg(server):
-            call_args.append(unique_call_id())
-
+        if self.server_supports_options_arg(server):
+            options = {'call_id': unique_call_id()}
+            call_args.append(options)
         result = server.CreateSliver(*call_args)
         if opts.file is None:
             print result
@@ -1095,10 +1098,10 @@ class Sfi:
             delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
             creds.append(delegated_cred)
         server = self.server_proxy_from_opts(opts)
-
         call_args = [slice_urn, creds]
-        if self.server_supports_call_id_arg(server):
-            call_args.append(unique_call_id())
+        if self.server_supports_options_arg(server):
+            options = {'call_id': unique_call_id()}
+            call_args.append(options)
         return server.DeleteSliver(*call_args) 
   
     # start named slice
@@ -1149,8 +1152,9 @@ class Sfi:
         time = args[1]
         
         call_args = [slice_urn, creds, time]
-        if self.server_supports_call_id_arg(server):
-            call_args.append(unique_call_id())
+        if self.server_supports_options_arg(server):
+            options = {'call_id': unique_call_id()}
+            call_args.append(options)
         return server.RenewSliver(*call_args)
 
 
@@ -1164,8 +1168,9 @@ class Sfi:
             creds.append(delegated_cred)
         server = self.server_proxy_from_opts(opts)
         call_args = [slice_urn, creds]
-        if self.server_supports_call_id_arg(server):
-            call_args.append(unique_call_id())
+        if self.server_supports_options_arg(server):
+            options = {'call_id': unique_call_id()}
+            call_args.append(options)
         result = server.SliverStatus(*call_args)
         print result
         if opts.file:
index 1b069f7..a31efc6 100644 (file)
@@ -28,7 +28,7 @@ class AggregateManager:
         #self.caching=True
         self.caching=False
     
-    def GetVersion(self, api):
+    def GetVersion(self, api, options={}):
     
         version_manager = VersionManager()
         ad_rspec_versions = []
@@ -108,7 +108,8 @@ class AggregateManager:
     
             return reg_objects
     
-    def SliverStatus(self, api, slice_xrn, creds, call_id):
+    def SliverStatus(self, api, slice_xrn, creds, options={}):
+        call_id = options.get('call_id')
         if Callids().already_handled(call_id): return {}
     
         (hrn, _) = urn_to_hrn(slice_xrn)
@@ -158,11 +159,12 @@ class AggregateManager:
         result['geni_resources'] = resources
         return result
     
-    def CreateSliver(self, api, slice_xrn, creds, rspec_string, users, call_id):
+    def CreateSliver(self, api, slice_xrn, creds, rspec_string, users, options={}):
         """
         Create the sliver[s] (slice) at this aggregate.    
         Verify HRN and initialize the slice record in PLC if necessary.
         """
+        call_id = options.get('call_id')
         if Callids().already_handled(call_id): return ""
     
         aggregate = Aggregate(api)
@@ -201,7 +203,8 @@ class AggregateManager:
         return aggregate.get_rspec(slice_xrn=slice_xrn, version=rspec.version)
     
     
-    def RenewSliver(self, api, xrn, creds, expiration_time, call_id):
+    def RenewSliver(self, api, xrn, creds, expiration_time, options={}):
+        call_id = options.get('call_id')
         if Callids().already_handled(call_id): return True
         (hrn, _) = urn_to_hrn(xrn)
         slicename = hrn_to_pl_slicename(hrn)
@@ -250,7 +253,8 @@ class AggregateManager:
         # XX not implemented at this interface
         return 1
     
-    def DeleteSliver(self, api, xrn, creds, call_id):
+    def DeleteSliver(self, api, xrn, creds, options={}):
+        call_id = option.get('call_id')
         if Callids().already_handled(call_id): return ""
         (hrn, _) = urn_to_hrn(xrn)
         slicename = hrn_to_pl_slicename(hrn)
@@ -270,7 +274,8 @@ class AggregateManager:
                 api.driver.BindObjectToPeer('slice', slice['slice_id'], peer, slice['peer_slice_id'])
         return 1
     
-    def ListSlices(self, api, creds, call_id):
+    def ListSlices(self, api, creds, options={}):
+        call_id = option.get('call_id')
         if Callids().already_handled(call_id): return []
         # look in cache first
         if self.caching and api.cache:
@@ -289,7 +294,8 @@ class AggregateManager:
     
         return slice_urns
         
-    def ListResources(self, api, creds, options, call_id):
+    def ListResources(self, api, creds, options={}):
+        call_id = option.get('call_id')
         if Callids().already_handled(call_id): return ""
         # get slice's hrn from options
         xrn = options.get('geni_slice_urn', None)
@@ -323,7 +329,7 @@ class AggregateManager:
         return rspec
     
     
-    def GetTicket(self, api, xrn, creds, rspec, users):
+    def GetTicket(self, api, xrn, creds, rspec, users, options={}):
     
         (slice_hrn, _) = urn_to_hrn(xrn)
         slices = Slices(api)
index 3f2d512..ff2428c 100644 (file)
@@ -444,7 +444,8 @@ class AggregateManagerEucalyptus:
                                 port=eucaPort,
                                 path=srvPath)
     
-    def ListResources(api, creds, options, call_id): 
+    def ListResources(api, creds, options={}):
+        call_id = options.get('call_id') 
         if Callids().already_handled(call_id): return ""
         # get slice's hrn from options
         xrn = options.get('geni_slice_urn', '')
@@ -540,7 +541,8 @@ class AggregateManagerEucalyptus:
     """
     Hook called via 'sfi.py create'
     """
-    def CreateSliver(api, slice_xrn, creds, xml, users, call_id):
+    def CreateSliver(api, slice_xrn, creds, xml, users, options={}):
+        call_id = options.get('call_id') 
         if Callids().already_handled(call_id): return ""
     
         logger = logging.getLogger('EucaAggregate')
@@ -677,7 +679,7 @@ class AggregateManagerEucalyptus:
             f.write("%s %s %s\n" % (instId, ipaddr, hrn))
         f.close()
     
-    def GetVersion(api):
+    def GetVersion(api, options={}):
 
         version_manager = VersionManager()
         ad_rspec_versions = []
index 09e56b7..91130bc 100644 (file)
@@ -214,11 +214,13 @@ class AggregateManagerMax (AggregateManager):
     
     ### GENI AM API Methods
     
-    def SliverStatus(self, api, slice_xrn, creds, call_id):
+    def SliverStatus(self, api, slice_xrn, creds, options={}):
+        call_id = options.get('call_id')
         if Callids().already_handled(call_id): return {}
         return self.slice_status(api, slice_xrn, creds)
     
-    def CreateSliver(self, api, slice_xrn, creds, rspec_string, users, call_id):
+    def CreateSliver(self, api, slice_xrn, creds, rspec_string, users, options={}):
+        call_id = options.get('call_id')
         if Callids().already_handled(call_id): return ""
         #TODO: create real CreateSliver response rspec
         ret = self.create_slice(api, slice_xrn, creds, rspec_string, users)
@@ -227,12 +229,14 @@ class AggregateManagerMax (AggregateManager):
         else:
             return "<?xml version=\"1.0\" ?> <RSpec type=\"SFA\"> Error! </RSpec>"
     
-    def DeleteSliver(self, api, xrn, creds, call_id):
+    def DeleteSliver(self, api, xrn, creds, options={}):
+        call_id = options.get('call_id')
         if Callids().already_handled(call_id): return ""
         return self.delete_slice(api, xrn, creds)
     
     # no caching
-    def ListResources(self, api, creds, options,call_id):
+    def ListResources(self, api, creds, options={}):
+        call_id = options.get('call_id')
         if Callids().already_handled(call_id): return ""
         # version_string = "rspec_%s" % (rspec_version.get_version_name())
         slice_urn = options.get('geni_slice_urn')
index 50edb9a..6f012e7 100644 (file)
@@ -26,7 +26,7 @@ class SliceManager:
         self.caching=True
         
     
-    def _call_id_supported(self, api, server):
+    def _options_supported(self, api, server):
         """
         Returns true if server support the optional call_id arg, false otherwise.
         """
@@ -39,8 +39,8 @@ class SliceManager:
             version_parts = code_tag_parts[0].split(".")
             major, minor = version_parts[0:2]
             rev = code_tag_parts[1]
-            if int(major) > 1:
-                if int(minor) > 0 or int(rev) > 20:
+            if int(major) >= 1:
+                if int(minor) >= 2:
                     return True
         return False
     
@@ -53,7 +53,7 @@ class SliceManager:
             logger.warning("GetVersion, falling back to xmlrpclib.ServerProxy internals")
             return server._ServerProxy__host + server._ServerProxy__handler
     
-    def GetVersion(self, api):
+    def GetVersion(self, api, options={}):
         # peers explicitly in aggregates.xml
         peers =dict ([ (peername,self.get_serverproxy_url(v)) for (peername,v) in api.aggregates.iteritems()
                        if peername != api.hrn])
@@ -114,16 +114,14 @@ class SliceManager:
         except Exception, e:
             logger.warn("add_slicemgr_stat failed on  %s: %s" %(aggname, str(e)))
     
-    def ListResources(self, api, creds, options, call_id):
+    def ListResources(self, api, creds, options={}):
         version_manager = VersionManager()
-        def _ListResources(aggregate, server, credential, opts, call_id):
+        def _ListResources(aggregate, server, credential, opts={}):
     
             my_opts = copy(opts)
             args = [credential, my_opts]
             tStart = time.time()
             try:
-                if self._call_id_supported(api, server):
-                    args.append(call_id)
                 version = api.get_cached_server_version(server)
                 # force ProtoGENI aggregates to give us a v2 RSpec
                 if 'sfa' not in version.keys():
@@ -133,7 +131,7 @@ class SliceManager:
             except Exception, e:
                 api.logger.log_exc("ListResources failed at %s" %(server.url))
                 return {"aggregate": aggregate, "elapsed": time.time()-tStart, "status": "exception", "exc_info": sys.exc_info()}
-    
+        call_id = options.get('call_id') 
         if Callids().already_handled(call_id): return ""
     
         # get slice's hrn from options
@@ -195,10 +193,10 @@ class SliceManager:
         return rspec.toxml()
     
     
-    def CreateSliver(self, api, xrn, creds, rspec_str, users, call_id):
+    def CreateSliver(self, api, xrn, creds, rspec_str, users, options={}):
     
         version_manager = VersionManager()
-        def _CreateSliver(aggregate, server, xrn, credential, rspec, users, call_id):
+        def _CreateSliver(aggregate, server, xrn, credential, rspec, users, options={}):
             tStart = time.time()
             try:
                 # Need to call GetVersion at an aggregate to determine the supported
@@ -214,14 +212,15 @@ class SliceManager:
                     rspec = rspec.toxml()
                     requested_users = sfa_to_pg_users_arg(users)
                 args = [xrn, credential, rspec, requested_users]
-                if self._call_id_supported(api, server):
-                    args.append(call_id)
+                if self._options_supported(api, server):
+                    args.append(options)
                 rspec = server.CreateSliver(*args)
                 return {"aggregate": aggregate, "rspec": rspec, "elapsed": time.time()-tStart, "status": "success"}
             except:
                 logger.log_exc('Something wrong in _CreateSliver with URL %s'%server.url)
                 return {"aggregate": aggregate, "elapsed": time.time()-tStart, "status": "exception", "exc_info": sys.exc_info()}
-    
+
+        call_id = option.get('call_id')
         if Callids().already_handled(call_id): return ""
         # Validate the RSpec against PlanetLab's schema --disabled for now
         # The schema used here needs to aggregate the PL and VINI schemas
@@ -267,14 +266,15 @@ class SliceManager:
                     api.logger.log_exc("SM.CreateSliver: Failed to merge aggregate rspec")
         return result_rspec.toxml()
     
-    def RenewSliver(self, api, xrn, creds, expiration_time, call_id):
-        def _RenewSliver(server, xrn, creds, expiration_time, call_id):
+    def RenewSliver(self, api, xrn, creds, expiration_time, options={}):
+        def _RenewSliver(server, xrn, creds, expiration_time, options={}):
             server_version = api.get_cached_server_version(server)
-            args =  [xrn, creds, expiration_time, call_id]
-            if self._call_id_supported(api, server):
-                args.append(call_id)
+            args =  [xrn, creds, expiration_time]
+            if self._options_supported(api, server):
+                args.append(options)
             return server.RenewSliver(*args)
     
+        call_id = option.get('call_id')
         if Callids().already_handled(call_id): return True
     
         (hrn, type) = urn_to_hrn(xrn)
@@ -298,14 +298,15 @@ class SliceManager:
         # 'and' the results
         return reduce (lambda x,y: x and y, threads.get_results() , True)
     
-    def DeleteSliver(self, api, xrn, creds, call_id):
-        def _DeleteSliver(server, xrn, creds, call_id):
+    def DeleteSliver(self, api, xrn, creds, options={}):
+        def _DeleteSliver(server, xrn, creds, options={}):
             server_version = api.get_cached_server_version(server)
             args =  [xrn, creds]
-            if self._call_id_supported(api, server):
-                args.append(call_id)
+            if self._options_supported(api, server):
+                args.append(options)
             return server.DeleteSliver(*args)
-    
+
+        call_id = option.get('call_id') 
         if Callids().already_handled(call_id): return ""
         (hrn, type) = urn_to_hrn(xrn)
         # get the callers hrn
@@ -330,14 +331,15 @@ class SliceManager:
     
     
     # first draft at a merging SliverStatus
-    def SliverStatus(self, api, slice_xrn, creds, call_id):
-        def _SliverStatus(server, xrn, creds, call_id):
+    def SliverStatus(self, api, slice_xrn, creds, options={}):
+        def _SliverStatus(server, xrn, creds, options={}):
             server_version = api.get_cached_server_version(server)
             args =  [xrn, creds]
-            if self._call_id_supported(api, server):
-                args.append(call_id)
+            if self._options_supported(api, server):
+                args.append(options)
             return server.SliverStatus(*args)
-        
+
+        call_id = options.get('call_id') 
         if Callids().already_handled(call_id): return {}
         # attempt to use delegated credential first
         cred = api.getDelegatedCredential(creds)
@@ -371,14 +373,15 @@ class SliceManager:
     
         return overall
     
-    def ListSlices(self, api, creds, call_id):
-        def _ListSlices(server, creds, call_id):
+    def ListSlices(self, api, creds, options={}):
+        def _ListSlices(server, creds, options={}):
             server_version = api.get_cached_server_version(server)
             args =  [creds]
-            if self._call_id_supported(api, server):
-                args.append(call_id)
+            if self._options_supported(api, server):
+                args.append(options)
             return server.ListSlices(*args)
-    
+
+        call_id = options.get('call_id') 
         if Callids().already_handled(call_id): return []
     
         # look in cache first
@@ -404,7 +407,7 @@ class SliceManager:
                 continue
             interface = api.aggregates[aggregate]
             server = api.server_proxy(interface, cred)
-            threads.run(_ListSlices, server, [cred], call_id)
+            threads.run(_ListSlices, server, [cred], call_id, options)
     
         # combime results
         results = threads.get_results()
@@ -419,7 +422,7 @@ class SliceManager:
         return slices
     
     
-    def GetTicket(self, api, xrn, creds, rspec, users):
+    def GetTicket(self, api, xrn, creds, rspec, users, options={}):
         slice_hrn, type = urn_to_hrn(xrn)
         # get the netspecs contained within the clients rspec
         aggregate_rspecs = {}
@@ -446,7 +449,7 @@ class SliceManager:
             
             interface = api.aggregates[aggregate]
             server = api.server_proxy(interface, cred)
-            threads.run(server.GetTicket, xrn, [cred], aggregate_rspec, users)
+            threads.run(server.GetTicket, xrn, [cred], aggregate_rspec, users, options)
     
         results = threads.get_results()
         
index dd76d9b..218986e 100644 (file)
@@ -25,11 +25,11 @@ class CreateSliver(Method):
               Parameter(type([str]), "List of credentials")),
         Parameter(str, "RSpec"),
         Parameter(type([]), "List of user information"),
-        Parameter(str, "call_id"),
+        Parameter(dict, "options"),
         ]
     returns = Parameter(str, "Allocated RSpec")
 
-    def call(self, slice_xrn, creds, rspec, users, call_id=""):
+    def call(self, slice_xrn, creds, rspec, users, options={}):
         hrn, type = urn_to_hrn(slice_xrn)
 
         self.api.logger.info("interface: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, hrn, self.name))
@@ -52,7 +52,7 @@ class CreateSliver(Method):
         rspec = run_sfatables(chain_name, hrn, origin_hrn, rspec)
         slivers = RSpec(rspec).version.get_nodes_with_slivers()
         if slivers:
-            result = self.api.manager.CreateSliver(self.api, slice_xrn, creds, rspec, users, call_id)
+            result = self.api.manager.CreateSliver(self.api, slice_xrn, creds, rspec, users, options)
         else:
             result = rspec     
         return result
index 58b8846..fe07b6a 100644 (file)
@@ -19,12 +19,12 @@ class DeleteSliver(Method):
         Parameter(str, "Human readable name of slice to delete (hrn or urn)"),
         Mixed(Parameter(str, "Credential string"),
               Parameter(type([str]), "List of credentials")),
-        Parameter(str, "call_id"),
+        Parameter(dict, "options"),
         ]
 
     returns = Parameter(int, "1 if successful")
     
-    def call(self, xrn, creds, call_id=""):
+    def call(self, xrn, creds, options={}):
         (hrn, type) = urn_to_hrn(xrn)
         valid_creds = self.api.auth.checkCredentials(creds, 'deletesliver', hrn)
 
@@ -32,6 +32,6 @@ class DeleteSliver(Method):
         origin_hrn = Credential(string=valid_creds[0]).get_gid_caller().get_hrn()
         self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name))
 
-        self.api.manager.DeleteSliver(self.api, xrn, creds, call_id)
+        self.api.manager.DeleteSliver(self.api, xrn, creds, options)
  
         return 1 
index 174bd4c..b1d8f87 100644 (file)
@@ -29,12 +29,13 @@ class GetTicket(Method):
         Mixed(Parameter(str, "Credential string"),
               Parameter(type([str]), "List of credentials")),
         Parameter(str, "Resource specification (rspec)"),
-        Parameter(type([]), "List of user information")  
+        Parameter(type([]), "List of user information"),
+        Parameter(dict, "Options")  
         ]
 
     returns = Parameter(str, "String representation of a ticket object")
     
-    def call(self, xrn, creds, rspec, users):
+    def call(self, xrn, creds, rspec, users, options={}):
         hrn, type = urn_to_hrn(xrn)
         # Find the valid credentials
         valid_creds = self.api.auth.checkCredentials(creds, 'getticket', hrn)
@@ -51,5 +52,5 @@ class GetTicket(Method):
         rspec = run_sfatables(chain_name, hrn, origin_hrn, rspec)
         
         # remove nodes that are not available at this interface from the rspec
-        return self.api.manager.GetTicket(self.api, xrn, creds, rspec, users)
+        return self.api.manager.GetTicket(self.api, xrn, creds, rspec, users, options)
         
index 8c215c4..801b339 100644 (file)
@@ -8,9 +8,9 @@ class GetVersion(Method):
     @return version
     """
     interfaces = ['registry','aggregate', 'slicemgr', 'component']
-    accepts = []
+    accepts = [Parameter(dict, "Options")]
     returns = Parameter(dict, "Version information")
 
-    def call(self):
+    def call(self, options={}):
         self.api.logger.info("interface: %s\tmethod-name: %s" % (self.api.interface, self.name))
-        return self.api.manager.GetVersion(self.api)
+        return self.api.manager.GetVersion(self.api, options)
index a12447f..38634de 100644 (file)
@@ -17,12 +17,11 @@ class ListResources(Method):
     accepts = [
         Mixed(Parameter(str, "Credential string"), 
               Parameter(type([str]), "List of credentials")),
-        Parameter(dict, "Options"),
-        Parameter(str, "call_id"),
+        Parameter(dict, "Options")
         ]
     returns = Parameter(str, "List of resources")
 
-    def call(self, creds, options, call_id=""):
+    def call(self, creds, options={}):
         self.api.logger.info("interface: %s\tmethod-name: %s" % (self.api.interface, self.name))
         
         # get slice's hrn from options    
@@ -36,7 +35,7 @@ class ListResources(Method):
         origin_hrn = options.get('origin_hrn', None)
         if not origin_hrn:
             origin_hrn = Credential(string=valid_creds[0]).get_gid_caller().get_hrn()
-        rspec = self.api.manager.ListResources(self.api, creds, options, call_id)
+        rspec = self.api.manager.ListResources(self.api, creds, options, options)
 
         # filter rspec through sfatables 
         if self.api.interface in ['aggregate']:
index e8521c1..eed408f 100644 (file)
@@ -15,17 +15,17 @@ class ListSlices(Method):
     accepts = [
         Mixed(Parameter(str, "Credential string"),
               Parameter(type([str]), "List of credentials")),
-        Parameter(str, "call_id"),
+        Parameter(dict, "options"),
         ]
 
     returns = Parameter(list, "List of slice names")
     
-    def call(self, creds, call_id=""):
+    def call(self, creds, options={}):
         valid_creds = self.api.auth.checkCredentials(creds, 'listslices')
 
         #log the call
         origin_hrn = Credential(string=valid_creds[0]).get_gid_caller().get_hrn()
         self.api.logger.info("interface: %s\tcaller-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, self.name))
 
-        return self.api.manager.ListSlices(self.api, creds, call_id)
+        return self.api.manager.ListSlices(self.api, creds, options)
  
index b34d424..48d6493 100644 (file)
@@ -20,11 +20,11 @@ class RenewSliver(Method):
         Parameter(str, "Slice URN"),
         Parameter(type([str]), "List of credentials"),
         Parameter(str, "Expiration time in RFC 3339 format"),
-        Parameter(str, "call_id"),
+        Parameter(dict, "Options"),
         ]
     returns = Parameter(bool, "Success or Failure")
 
-    def call(self, slice_xrn, creds, expiration_time, call_id=""):
+    def call(self, slice_xrn, creds, expiration_time, options={}):
 
         (hrn, type) = urn_to_hrn(slice_xrn)
 
@@ -40,5 +40,5 @@ class RenewSliver(Method):
             raise InsufficientRights('Renewsliver: Credential expires before requested expiration time')
         if requested_time > datetime.datetime.utcnow() + datetime.timedelta(days=max_renew_days):
             raise Exception('Cannot renew > %s days from now' % max_renew_days)
-        return self.api.manager.RenewSliver(self.api, slice_xrn, valid_creds, expiration_time, call_id)    
+        return self.api.manager.RenewSliver(self.api, slice_xrn, valid_creds, expiration_time, options)    
     
index 2f4bc0c..2a0ac5d 100644 (file)
@@ -14,17 +14,17 @@ class SliverStatus(Method):
         Parameter(str, "Slice URN"),
         Mixed(Parameter(str, "Credential string"),
               Parameter(type([str]), "List of credentials")),
-        Parameter(str, "call_id"),
+        Parameter(dict, "Options")
         ]
     returns = Parameter(dict, "Status details")
 
-    def call(self, slice_xrn, creds, call_id=""):
+    def call(self, slice_xrn, creds, options={}):
         hrn, type = urn_to_hrn(slice_xrn)
         valid_creds = self.api.auth.checkCredentials(creds, 'sliverstatus', hrn)
 
         self.api.logger.info("interface: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, hrn, self.name))
     
-        status = self.api.manager.SliverStatus(self.api, hrn, valid_creds, call_id)
+        status = self.api.manager.SliverStatus(self.api, hrn, valid_creds, options)
 
         return status
     
index f9baae4..245b207 100644 (file)
@@ -20,13 +20,13 @@ class UpdateSliver(CreateSliver):
               Parameter(type([str]), "List of credentials")),
         Parameter(str, "RSpec"),
         Parameter(type([]), "List of user information"),
-        Parameter(str, "call_id"),
+        Parameter(dict, "options"),
         ]
     returns = Parameter(str, "Allocated RSpec")
 
 
 
-    def call(self, slice_xrn, creds, rspec, users, call_id=""):
+    def call(self, slice_xrn, creds, rspec, users, options={}):
 
-        return CreateSliver.call(self, slice_xrn, creds, rspec, users, call_id)
+        return CreateSliver.call(self, slice_xrn, creds, rspec, users, options)