From: Tony Mack Date: Sat, 1 Oct 2011 04:05:28 +0000 (-0400) Subject: use sfa.rspecs.version_manager instead of sfa.rspecs.rspec_version X-Git-Tag: sfa-1.1-1~166 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=6cdd190c96ab1f1d46741cd3559e3ea9e44aa7a1;p=sfa.git use sfa.rspecs.version_manager instead of sfa.rspecs.rspec_version --- diff --git a/sfa/managers/slice_manager_pl.py b/sfa/managers/slice_manager_pl.py index 7b57e0f1..bbf8eda8 100644 --- a/sfa/managers/slice_manager_pl.py +++ b/sfa/managers/slice_manager_pl.py @@ -15,13 +15,9 @@ from sfa.util.rspec import * from sfa.util.specdict import * from sfa.util.faults import * from sfa.util.record import SfaRecord -from sfa.rspecs.pg_rspec import PGRSpec -from sfa.rspecs.sfa_rspec import SfaRSpec from sfa.rspecs.rspec_converter import RSpecConverter -from sfa.rspecs.rspec_parser import parse_rspec -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.version_manager import VersionManager +from sfa.rspecs.rspec import RSpec from sfa.util.policy import Policy from sfa.util.prefixTree import prefixTree from sfa.util.sfaticket import * @@ -64,9 +60,16 @@ def GetVersion(api): # peers explicitly in aggregates.xml peers =dict ([ (peername,get_serverproxy_url(v)) for (peername,v) in api.aggregates.iteritems() if peername != api.hrn]) - 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_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) version_more = {'interface':'slicemgr', 'hrn' : xrn.get_hrn(), 'urn' : xrn.get_urn(), @@ -103,6 +106,7 @@ def add_slicemgr_stat(rspec, callname, aggname, elapsed, status): api.logger.warn("add_slicemgr_stat failed on %s: %s" %(aggname, str(e))) def ListResources(api, creds, options, call_id): + version_manager = VersionManager() def _ListResources(aggregate, server, credential, opts, call_id): my_opts = copy(opts) @@ -114,7 +118,7 @@ def ListResources(api, creds, options, call_id): version = api.get_cached_server_version(server) # force ProtoGENI aggregates to give us a v2 RSpec if 'sfa' not in version.keys(): - my_opts['rspec_version'] = dict(pg_rspec_ad_version) + my_opts['rspec_version'] = version_manager.get_version('ProtoGENI 1') rspec = server.ListResources(*args) return {"aggregate": aggregate, "rspec": rspec, "elapsed": time.time()-tStart, "status": "success"} except Exception, e: @@ -130,8 +134,8 @@ def ListResources(api, creds, options, call_id): del(options['geni_compressed']) # 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()) # look in cache first if caching and api.cache and not xrn: @@ -160,17 +164,13 @@ def ListResources(api, creds, options, call_id): threads.run(_ListResources, aggregate, server, credentials, options, call_id) results = threads.get_results() - rspec_version = RSpecVersion(options.get('rspec_version')) - if rspec_version['type'] == pg_rspec_ad_version['type']: - rspec = PGRSpec() - else: - rspec = SfaRSpec() - + rspec_version = version_manager.get_version(options.get('rspec_version')) + rspec = RSpec(version=rspec_version) for result in results: add_slicemgr_stat(rspec, "ListResources", result["aggregate"], result["elapsed"], result["status"]) if result["status"]=="success": try: - rspec.merge(result["rspec"]) + rspec.version.merge(result["rspec"]) except: api.logger.log_exc("SM.ListResources: Failed to merge aggregate rspec") @@ -183,6 +183,7 @@ def ListResources(api, creds, options, call_id): def CreateSliver(api, xrn, creds, rspec_str, users, call_id): + version_manager = VersionManager() def _CreateSliver(aggregate, server, xrn, credential, rspec, users, call_id): tStart = time.time() try: @@ -206,7 +207,7 @@ def CreateSliver(api, xrn, creds, rspec_str, users, call_id): # Validate the RSpec against PlanetLab's schema --disabled for now # The schema used here needs to aggregate the PL and VINI schemas # schema = "/var/www/html/schemas/pl.rng" - rspec = parse_rspec(rspec_str) + rspec = RSpec(rspec_str) schema = None if schema: rspec.validate(schema) @@ -235,12 +236,12 @@ def CreateSliver(api, xrn, creds, rspec_str, users, call_id): threads.run(_CreateSliver, aggregate, server, xrn, credential, rspec.toxml(), users, call_id) results = threads.get_results() - rspec = SfaRSpec() + result_rspec = RSpec(version=rspec.version) for result in results: add_slicemgr_stat(rspec, "CreateSliver", result["aggregate"], result["elapsed"], result["status"]) if result["status"]=="success": try: - rspec.merge(result["rspec"]) + result_rspec.version.merge(result["rspec"]) except: api.logger.log_exc("SM.CreateSliver: Failed to merge aggregate rspec") return rspec.toxml()