X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_slab.py;h=c9ebc06fdbce48f87eef50dcc545d101e3260d0c;hb=e7e9113b7c18929a0c157dcddaeb5fab7c922773;hp=7090df4a0be4182b40a3a8c793538c2fdcdcaf1f;hpb=fcbeffb86a4dd1f01c168d318264960139516087;p=sfa.git diff --git a/sfa/managers/aggregate_manager_slab.py b/sfa/managers/aggregate_manager_slab.py index 7090df4a..c9ebc06f 100644 --- a/sfa/managers/aggregate_manager_slab.py +++ b/sfa/managers/aggregate_manager_slab.py @@ -16,38 +16,52 @@ from sfa.rspecs.version_manager import VersionManager from sfa.rspecs.rspec import RSpec from sfa.server.sfaapi import SfaApi -from sfa.senslab.OARrspec import OARrspec +from sfa.senslab.slabaggregate import SlabAggregate import sfa.plc.peers as peers -#from sfa.plc.aggregate import Aggregate -from sfa.plc.slices import Slices -class AggregateManager: +from sfa.senslab.slices import SlabSlices - def __init__ (self): - # xxx Thierry : caching at the aggregate level sounds wrong... - #self.caching=True - self.caching=False +class AggregateManager: + def __init__ (self, config): pass + # essentially a union of the core version, the generic version (this code) and + # whatever the driver needs to expose - def GetVersion(self, api, options={}): - version_manager = VersionManager() - ad_rspec_versions = [] - request_rspec_versions = [] - for rspec_version in version_manager.versions: - if rspec_version.content_type in ['*', 'ad']: - ad_rspec_versions.append(rspec_version.to_dict()) - if rspec_version.content_type in ['*', 'request']: - request_rspec_versions.append(rspec_version.to_dict()) + def GetVersion(self, api, options): + xrn=Xrn(api.hrn) - version_more = {'interface':'aggregate', - 'sfa': 2, - 'geni_api': api.config.SFA_AGGREGATE_API_VERSION, - 'testbed':'myplc', - 'hrn':xrn.get_hrn(), - 'geni_request_rspec_versions': request_rspec_versions, - 'geni_ad_rspec_versions': ad_rspec_versions, - } - return version_core(version_more) + version = version_core() + version_generic = {'interface':'aggregate', + 'sfa': 2, + 'geni_api': 2, + 'hrn':xrn.get_hrn(), + 'urn':xrn.get_urn(), + } + version.update(version_generic) + testbed_version = self.driver.aggregate_version() + version.update(testbed_version) + return version + + #def GetVersion(self, api, options={}): + + #version_manager = VersionManager() + #ad_rspec_versions = [] + #request_rspec_versions = [] + #for rspec_version in version_manager.versions: + #if rspec_version.content_type in ['*', 'ad']: + #ad_rspec_versions.append(rspec_version.to_dict()) + #if rspec_version.content_type in ['*', 'request']: + #request_rspec_versions.append(rspec_version.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(), + #'geni_request_rspec_versions': request_rspec_versions, + #'geni_ad_rspec_versions': ad_rspec_versions, + #} + #return version_core(version_more) def _get_registry_objects(self, slice_xrn, creds, users): """ @@ -166,15 +180,16 @@ class AggregateManager: """ call_id = options.get('call_id') if Callids().already_handled(call_id): return "" - - aggregate = Aggregate(api) - slices = Slices(api) + aggregate = SlabAggregate(api) + #aggregate = Aggregate(api) + slices = SlabSlices(api) (hrn, _) = urn_to_hrn(slice_xrn) peer = slices.get_peer(hrn) sfa_peer = slices.get_sfa_peer(hrn) slice_record=None if users: slice_record = users[0].get('slice_record', {}) + print >>sys.stderr, " \r\n \t AGGREGATESLAB.PY Slice slice_record : ", slice_record # parse rspec rspec = RSpec(rspec_string) @@ -183,18 +198,22 @@ class AggregateManager: # ensure site record exists site = slices.verify_site(hrn, slice_record, peer, sfa_peer) # ensure slice record exists + print>>sys.stderr, " \r\n \t AGGREGATESLAB.PY Slice users : ", users slice = slices.verify_slice(hrn, slice_record, peer, sfa_peer) + print >>sys.stderr, " \r\n \t AGGREGATESLAB.PY Slice slice : ", slice # ensure person records exists - persons = slices.verify_persons(hrn, slice, users, peer, sfa_peer) + persons = slices.verify_persons(hrn, slice, users) + #persons = slices.verify_persons(hrn, slice, users, peer, sfa_peer) # ensure slice attributes exists - slices.verify_slice_attributes(slice, requested_attributes) + #slices.verify_slice_attributes(slice, requested_attributes) # add/remove slice from nodes requested_slivers = [node.get('component_name') for node in rspec.version.get_nodes_with_slivers()] + print >>sys.stderr, " \r\n \t AGGREGATESLAB.PY Slice requested_slivers : ", requested_slivers slices.verify_slice_nodes(slice, requested_slivers, peer) # add/remove links links - slices.verify_slice_links(slice, rspec.version.get_link_requests(), aggregate) + #slices.verify_slice_links(slice, rspec.version.get_link_requests(), aggregate) # handle MyPLC peer association. # only used by plc and ple. @@ -278,10 +297,10 @@ class AggregateManager: call_id = options.get('call_id') if Callids().already_handled(call_id): return [] # look in cache first - if self.caching and api.cache: - slices = api.cache.get('slices') - if slices: - return slices + #if self.caching and api.cache: + #slices = api.cache.get('slices') + #if slices: + #return slices # get data from db slices = api.driver.GetSlices({'peer_id': None}, ['name']) @@ -289,8 +308,8 @@ class AggregateManager: slice_urns = [hrn_to_urn(slice_hrn, 'slice') for slice_hrn in slice_hrns] # cache the result - if self.caching and api.cache: - api.cache.add('slices', slice_urns) + #if self.caching and api.cache: + #api.cache.add('slices', slice_urns) return slice_urns @@ -312,21 +331,21 @@ class AggregateManager: version_string = version_string + "_"+options.get('info', 'default') # look in cache first - 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) - return rspec + #if self.cache 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) + #return rspec #panos: passing user-defined options #print "manager options = ",options - aggregate = OARrspec(api) + aggregate = SlabAggregate(api) #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: - api.cache.add(version_string, rspec) + #if self.caching and api.cache and not xrn: + #api.cache.add(version_string, rspec) return rspec @@ -334,7 +353,7 @@ class AggregateManager: def GetTicket(self, api, xrn, creds, rspec, users, options={}): (slice_hrn, _) = urn_to_hrn(xrn) - slices = Slices(api) + slices = SlabSlices(api) peer = slices.get_peer(slice_hrn) sfa_peer = slices.get_sfa_peer(slice_hrn)