X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager.py;h=2fbdf3d39dfd0ac8a8be0d5810f4f4422c85b72e;hb=03dc21a0ac95b4fbe8c950c8dc052955d281cc44;hp=1b069f7a00af34a3d08bd40802ec2c7426431132;hpb=29df906cd2d154a3b90fcb1b7025f3fc1bb577fe;p=sfa.git diff --git a/sfa/managers/aggregate_manager.py b/sfa/managers/aggregate_manager.py index 1b069f7a..2fbdf3d3 100644 --- a/sfa/managers/aggregate_manager.py +++ b/sfa/managers/aggregate_manager.py @@ -25,10 +25,10 @@ class AggregateManager: def __init__ (self): # xxx Thierry : caching at the aggregate level sounds wrong... - #self.caching=True - self.caching=False + self.caching=True + #self.caching=False - def GetVersion(self, api): + def GetVersion(self, api, options={}): version_manager = VersionManager() ad_rspec_versions = [] @@ -38,14 +38,14 @@ class AggregateManager: ad_rspec_versions.append(rspec_version.to_dict()) if rspec_version.content_type in ['*', 'request']: request_rspec_versions.append(rspec_version.to_dict()) - default_rspec_version = version_manager.get_version("sfa 1").to_dict() xrn=Xrn(api.hrn) version_more = {'interface':'aggregate', + 'sfa': 2, + 'geni_api': api.config.SFA_AGGREGATE_API_VERSION, 'testbed':'myplc', 'hrn':xrn.get_hrn(), - 'request_rspec_versions': request_rspec_versions, - 'ad_rspec_versions': ad_rspec_versions, - 'default_ad_rspec': default_rspec_version + 'geni_request_rspec_versions': request_rspec_versions, + 'geni_ad_rspec_versions': ad_rspec_versions, } return version_core(version_more) @@ -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 = options.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 = options.get('call_id') if Callids().already_handled(call_id): return [] # look in cache first if self.caching and api.cache: @@ -289,23 +294,25 @@ class AggregateManager: return slice_urns - 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 "" # get slice's hrn from options xrn = options.get('geni_slice_urn', None) + cached = options.get('cached', True) (hrn, _) = urn_to_hrn(xrn) version_manager = VersionManager() # get the rspec's return format from options - rspec_version = version_manager.get_version(options.get('rspec_version')) - version_string = "rspec_%s" % (rspec_version.to_string()) + rspec_version = version_manager.get_version(options.get('geni_rspec_version')) + version_string = "rspec_%s" % (rspec_version) #panos adding the info option to the caching key (can be improved) if options.get('info'): version_string = version_string + "_"+options.get('info', 'default') # look in cache first - if self.caching and api.cache and not xrn: + if self.caching and api.cache and not xrn and cached: rspec = api.cache.get(version_string) if rspec: api.logger.info("aggregate.ListResources: returning cached value for hrn %s"%hrn) @@ -313,8 +320,8 @@ class AggregateManager: #panos: passing user-defined options #print "manager options = ",options - aggregate = Aggregate(api, options) - rspec = aggregate.get_rspec(slice_xrn=xrn, version=rspec_version) + aggregate = Aggregate(api) + rspec = aggregate.get_rspec(slice_xrn=xrn, version=rspec_version, options=options) # cache the result if self.caching and api.cache and not xrn: @@ -323,7 +330,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)