From: Tony Mack Date: Sat, 1 Oct 2011 02:29:50 +0000 (-0400) Subject: use sfa.rspecs.version_manager.VersionManager to parse rspec versions. Use sfa.rspecs... X-Git-Tag: sfa-1.1-1~170 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=5abce70ab87252ac8f7116781f5a667fa5b96835;p=sfa.git use sfa.rspecs.version_manager.VersionManager to parse rspec versions. Use sfa.rspecs.rspec to parse rspecs --- diff --git a/sfa/managers/aggregate_manager_pl.py b/sfa/managers/aggregate_manager_pl.py index f723f490..2c2a696b 100644 --- a/sfa/managers/aggregate_manager_pl.py +++ b/sfa/managers/aggregate_manager_pl.py @@ -24,23 +24,29 @@ from sfa.plc.api import SfaAPI from sfa.plc.aggregate import Aggregate from sfa.plc.slices import * from sfa.util.version import version_core -from sfa.rspecs.rspec_version import RSpecVersion -from sfa.rspecs.sfa_rspec import sfa_rspec_version -from sfa.rspecs.pg_rspec import pg_rspec_ad_version, pg_rspec_request_version -from sfa.rspecs.rspec_parser import parse_rspec +from sfa.rspecs.version_manager import VersionManager +from sfa.rspecs.rspec import RSpec from sfa.util.sfatime import utcparse from sfa.util.callids import Callids def GetVersion(api): + + version_manager = VersionManager() + ad_rspec_versions = [] + request_rspec_versions = [] + for rspec_version in version_manager.versions: + if rspec_version in ['*', 'ad']: + request_rspec_versions.append(rspec_version.to_dict()) + if rspec_version in ['*', 'request']: + request_rspec_version.append(rspec_version.to_dict()) + default_rspec_version = version_manager.get_version("sfa 1").to_dict() xrn=Xrn(api.hrn) - request_rspec_versions = [dict(pg_rspec_request_version), dict(sfa_rspec_version)] - ad_rspec_versions = [dict(pg_rspec_ad_version), dict(sfa_rspec_version)] version_more = {'interface':'aggregate', 'testbed':'myplc', 'hrn':xrn.get_hrn(), 'request_rspec_versions': request_rspec_versions, 'ad_rspec_versions': ad_rspec_versions, - 'default_ad_rspec': dict(sfa_rspec_version) + 'default_ad_rspec': default_rspec_version } return version_core(version_more) @@ -178,8 +184,8 @@ def CreateSliver(api, slice_xrn, creds, rspec_string, users, call_id): slice_record = users[0].get('slice_record', {}) # parse rspec - rspec = parse_rspec(rspec_string) - requested_attributes = rspec.get_slice_attributes() + rspec = RSpec(rspec_string) + requested_attributes = rspec.version.get_slice_attributes() # ensure site record exists site = slices.verify_site(hrn, slice_record, peer, sfa_peer) @@ -191,7 +197,7 @@ def CreateSliver(api, slice_xrn, creds, rspec_string, users, call_id): slices.verify_slice_attributes(slice, requested_attributes) # add/remove slice from nodes - requested_slivers = [str(host) for host in rspec.get_nodes_with_slivers()] + requested_slivers = [str(host) for host in rspec.version.get_nodes_with_slivers()] slices.verify_slice_nodes(slice, requested_slivers, peer) # hanlde MyPLC peer association. @@ -298,13 +304,14 @@ def ListResources(api, creds, options,call_id): xrn = options.get('geni_slice_urn', '') (hrn, type) = urn_to_hrn(xrn) + version_manager = VersionManager() # get the rspec's return format from options - rspec_version = RSpecVersion(options.get('rspec_version')) - version_string = "rspec_%s" % (rspec_version.get_version_name()) + rspec_version = version_manager.get_version(options.get('rspec_version')) + version_string = "rspec_%s" % (rspec_version.to_string()) #panos adding the info option to the caching key (can be improved) if options.get('info'): - version_string = version_string + "_"+options.get('info', 'default') + version_string = version_string + "_"+options.get('info', 'default') # look in cache first if caching and api.cache and not xrn: diff --git a/sfa/plc/aggregate.py b/sfa/plc/aggregate.py index ef4705ba..d678dbe5 100644 --- a/sfa/plc/aggregate.py +++ b/sfa/plc/aggregate.py @@ -1,9 +1,10 @@ #!/usr/bin/python from sfa.util.xrn import * from sfa.util.plxrn import * -from sfa.rspecs.sfa_rspec import SfaRSpec -from sfa.rspecs.pg_rspec import PGRSpec -from sfa.rspecs.rspec_version import RSpecVersion +#from sfa.rspecs.sfa_rspec import SfaRSpec +#from sfa.rspecs.pg_rspec import PGRSpec +#from sfa.rspecs.rspec_version import RSpecVersion +from sfa.rspecs.rspec import RSpec class Aggregate: @@ -77,18 +78,18 @@ class Aggregate: def get_rspec(self, slice_xrn=None, version = None): self.prepare() - rspec = None - rspec_version = RSpecVersion(version) - if slice_xrn: - type = 'manifest' - else: - type = 'advertisement' - if rspec_version['type'].lower() == 'protogeni': - rspec = PGRSpec(type=type) - elif rspec_version['type'].lower() == 'sfa': - rspec = SfaRSpec(type=type, user_options=self.user_options) - else: - rspec = SfaRSpec(type=type, user_options=self.user_options) + rspec = RSpec(version=version, user_options=self.user_options) + #rspec_version = RSpecVersion(version) + #if slice_xrn: + # type = 'manifest' + #else: + # type = 'advertisement' + #if rspec_version['type'].lower() == 'protogeni': + # rspec = PGRSpec(type=type) + #elif rspec_version['type'].lower() == 'sfa': + # rspec = SfaRSpec(type=type, user_options=self.user_options) + #else: + # rspec = SfaRSpec(type=type, user_options=self.user_options) # get slice details if specified slice = None @@ -113,9 +114,9 @@ class Aggregate: elif not slice and not node['slice_ids_whitelist']: valid_nodes.append(node) - rspec.add_nodes(valid_nodes) - rspec.add_interfaces(self.interfaces.values()) - rspec.add_links(self.links.values()) + rspec.version.add_nodes(valid_nodes) + rspec.version.add_interfaces(self.interfaces.values()) + rspec.version.add_links(self.links.values()) # add slivers if slice_xrn and slice: @@ -127,7 +128,7 @@ class Aggregate: # if tag isn't bound to a node then it applies to all slivers # and belongs in the tag if not tag['node_id']: - rspec.add_default_sliver_attribute(tag['tagname'], tag['value'], self.api.hrn) + rspec.version.add_default_sliver_attribute(tag['tagname'], tag['value'], self.api.hrn) for node_id in slice['node_ids']: try: @@ -144,6 +145,6 @@ class Aggregate: sliver['tags'].append(tag) except: self.api.logger.log_exc('unable to add sliver %s to node %s' % (slice['name'], node_id)) - rspec.add_slivers(slivers, sliver_urn=slice_xrn) + rspec.version.add_slivers(slivers, sliver_urn=slice_xrn) return rspec.toxml(cleanup=True)