X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager.py;h=ed1086bb72ad7b5b829f534f206a88e240599bef;hb=4c97a7b3bb320e9ebb82e90d3da04379c73f1f5b;hp=895592046d815e09be9293096053af48763a15a1;hpb=b6de9285a970eccb9658a0078c49f76fb11af7cd;p=sfa.git diff --git a/sfa/managers/aggregate_manager.py b/sfa/managers/aggregate_manager.py index 89559204..ed1086bb 100644 --- a/sfa/managers/aggregate_manager.py +++ b/sfa/managers/aggregate_manager.py @@ -1,3 +1,5 @@ +import soctet +from sfa.rspecs.version_manager import VersionManager from sfa.util.version import version_core from sfa.util.xrn import Xrn from sfa.util.callids import Callids @@ -8,16 +10,40 @@ class AggregateManager: # essentially a union of the core version, the generic version (this code) and # whatever the driver needs to expose + + def _rspec_versions(self): + 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()) + return { + 'testbed':self.testbed_name(), + 'geni_request_rspec_versions': request_rspec_versions, + 'geni_ad_rspec_versions': ad_rspec_versions, + } + def GetVersion(self, api, options): - xrn=Xrn(api.hrn) version = version_core() - version_generic = {'interface':'aggregate', - 'sfa': 2, - 'geni_api': 2, - 'hrn':xrn.get_hrn(), - 'urn':xrn.get_urn(), - } + version_generic = { + 'testbed': self.driver.testbed_name(), + 'interface':'aggregate', + 'hrn':xrn.get_hrn(), + 'urn':xrn.get_urn(), + 'geni_api': 3, + 'geni_api_versions': {'3': 'http://%s:%s' % (socket.gethostname(), api.config.sfa_aggregate_port)}, + 'geni_single_allocation': 0, # Accept operations that act on as subset of slivers in a given state. + 'geni_allocate': 'geni_many',# Multiple slivers can exist and be incrementally added, including those which connect or overlap in some way. + 'geni_best_effort': 'true', + 'geni_credential_types': [{ + 'geni_type': 'geni_sfa', + 'geni_version': 3, + }], + } version.update(version_generic) testbed_version = self.driver.aggregate_version() version.update(testbed_version) @@ -41,14 +67,13 @@ class AggregateManager: xrn = Xrn(slice_xrn) slice_urn=xrn.get_urn() slice_hrn=xrn.get_hrn() - return self.driver.list_resources (slice_urn, slice_hrn, creds, options) def SliverStatus (self, api, xrn, creds, options): call_id = options.get('call_id') if Callids().already_handled(call_id): return {} - xrn = Xrn(xrn) + xrn = Xrn(xrn,'slice') slice_urn=xrn.get_urn() slice_hrn=xrn.get_hrn() return self.driver.sliver_status (slice_urn, slice_hrn) @@ -61,7 +86,7 @@ class AggregateManager: call_id = options.get('call_id') if Callids().already_handled(call_id): return "" - xrn = Xrn(xrn) + xrn = Xrn(xrn, 'slice') slice_urn=xrn.get_urn() slice_hrn=xrn.get_hrn() @@ -71,7 +96,7 @@ class AggregateManager: call_id = options.get('call_id') if Callids().already_handled(call_id): return True - xrn = Xrn(xrn) + xrn = Xrn(xrn, 'slice') slice_urn=xrn.get_urn() slice_hrn=xrn.get_hrn() return self.driver.delete_sliver (slice_urn, slice_hrn, creds, options) @@ -80,7 +105,7 @@ class AggregateManager: call_id = options.get('call_id') if Callids().already_handled(call_id): return True - xrn = Xrn(xrn) + xrn = Xrn(xrn, 'slice') slice_urn=xrn.get_urn() slice_hrn=xrn.get_hrn() return self.driver.renew_sliver (slice_urn, slice_hrn, creds, expiration_time, options)