From: Tony Mack Date: Mon, 21 Nov 2011 21:50:42 +0000 (-0500) Subject: support GENI v2 API 'options' argument for all Aggregate API methods X-Git-Tag: sfa-2.0-0~11 X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=commitdiff_plain;h=6cb4717ad2a1ff4a08d73c7cc0dea759f12ab6d5 support GENI v2 API 'options' argument for all Aggregate API methods --- diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index fc6a7b48..b937febb 100755 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -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: diff --git a/sfa/managers/aggregate_manager.py b/sfa/managers/aggregate_manager.py index 1b069f7a..a31efc6a 100644 --- a/sfa/managers/aggregate_manager.py +++ b/sfa/managers/aggregate_manager.py @@ -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) diff --git a/sfa/managers/aggregate_manager_eucalyptus.py b/sfa/managers/aggregate_manager_eucalyptus.py index 3f2d512c..ff2428c5 100644 --- a/sfa/managers/aggregate_manager_eucalyptus.py +++ b/sfa/managers/aggregate_manager_eucalyptus.py @@ -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 = [] diff --git a/sfa/managers/aggregate_manager_max.py b/sfa/managers/aggregate_manager_max.py index 09e56b77..91130bc4 100644 --- a/sfa/managers/aggregate_manager_max.py +++ b/sfa/managers/aggregate_manager_max.py @@ -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 " Error! " - 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') diff --git a/sfa/managers/slice_manager.py b/sfa/managers/slice_manager.py index 50edb9a3..6f012e7c 100644 --- a/sfa/managers/slice_manager.py +++ b/sfa/managers/slice_manager.py @@ -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() diff --git a/sfa/methods/CreateSliver.py b/sfa/methods/CreateSliver.py index dd76d9ba..218986eb 100644 --- a/sfa/methods/CreateSliver.py +++ b/sfa/methods/CreateSliver.py @@ -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 diff --git a/sfa/methods/DeleteSliver.py b/sfa/methods/DeleteSliver.py index 58b88466..fe07b6ad 100644 --- a/sfa/methods/DeleteSliver.py +++ b/sfa/methods/DeleteSliver.py @@ -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 diff --git a/sfa/methods/GetTicket.py b/sfa/methods/GetTicket.py index 174bd4c6..b1d8f872 100644 --- a/sfa/methods/GetTicket.py +++ b/sfa/methods/GetTicket.py @@ -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) diff --git a/sfa/methods/GetVersion.py b/sfa/methods/GetVersion.py index 8c215c45..801b3392 100644 --- a/sfa/methods/GetVersion.py +++ b/sfa/methods/GetVersion.py @@ -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) diff --git a/sfa/methods/ListResources.py b/sfa/methods/ListResources.py index a12447f6..38634de9 100644 --- a/sfa/methods/ListResources.py +++ b/sfa/methods/ListResources.py @@ -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']: diff --git a/sfa/methods/ListSlices.py b/sfa/methods/ListSlices.py index e8521c1a..eed408f2 100644 --- a/sfa/methods/ListSlices.py +++ b/sfa/methods/ListSlices.py @@ -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) diff --git a/sfa/methods/RenewSliver.py b/sfa/methods/RenewSliver.py index b34d424a..48d64931 100644 --- a/sfa/methods/RenewSliver.py +++ b/sfa/methods/RenewSliver.py @@ -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) diff --git a/sfa/methods/SliverStatus.py b/sfa/methods/SliverStatus.py index 2f4bc0c7..2a0ac5dc 100644 --- a/sfa/methods/SliverStatus.py +++ b/sfa/methods/SliverStatus.py @@ -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 diff --git a/sfa/methods/UpdateSliver.py b/sfa/methods/UpdateSliver.py index f9baae4a..245b2077 100644 --- a/sfa/methods/UpdateSliver.py +++ b/sfa/methods/UpdateSliver.py @@ -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)