From 460b8c80233ce08d8a3feebd170408119fd428f7 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Thu, 23 Jun 2011 17:13:33 -0400 Subject: [PATCH] be ListResources drops 'rspec_version from call. Let aggregate return their default format --- sfa/managers/slice_manager_pl.py | 36 ++++++++++++-------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/sfa/managers/slice_manager_pl.py b/sfa/managers/slice_manager_pl.py index 5c64df06..87a7c60a 100644 --- a/sfa/managers/slice_manager_pl.py +++ b/sfa/managers/slice_manager_pl.py @@ -33,16 +33,20 @@ from sfa.util.version import version_core from sfa.util.callids import Callids -def _call_id_supported(api, server): - """ - Returns true if server support the optional call_id arg, false otherwise. - """ +def _get_cached_server_version(api, server): cache_key = server.url + "-version" server_version = api.cache.get(cache_key) if not server_version: server_version = server.GetVersion() # cache version for 24 hours api.cache.add(cache_key, server_version, ttl= 60*60*24) + return server_version + +def _call_id_supported(api, server): + """ + Returns true if server support the optional call_id arg, false otherwise. + """ + server_version = _get_cached_server_version(api, server) if 'sfa' in server_version: code_tag = server_version['code_tag'] @@ -102,6 +106,8 @@ def ListResources(api, creds, options, call_id): (hrn, type) = urn_to_hrn(xrn) my_opts = copy(options) my_opts['geni_compressed'] = False + if 'rspec_version' in my_opts: + del my_opts['rspec_version'] # get the rspec's return format from options rspec_version = RSpecVersion(options.get('rspec_version')) @@ -121,6 +127,7 @@ def ListResources(api, creds, options, call_id): credential = api.getDelegatedCredential(creds) if not credential: credential = api.getCredential() + credentials = [credential] threads = ThreadManager() for aggregate in api.aggregates: # prevent infinite loop. Dont send request back to caller @@ -129,8 +136,8 @@ def ListResources(api, creds, options, call_id): continue # get the rspec from the aggregate server = api.aggregates[aggregate] - #threads.run(server.ListResources, credential, my_opts, call_id) - threads.run(_ListResources, server, credential, my_opts, call_id) + #threads.run(server.ListResources, credentials, my_opts, call_id) + threads.run(_ListResources, server, credentials, my_opts, call_id) results = threads.get_results() rspec_version = RSpecVersion(my_opts.get('rspec_version')) @@ -350,23 +357,6 @@ def ListSlices(api, creds, call_id): return slices - if rspec_version['type'] == pg_rspec_ad_version['type']: - rspec = PGRSpec() - else: - rspec = SfaRSpec() - for result in results: - try: - rspec.merge(result) - except: - api.logger.info("SM.ListResources: Failed to merge aggregate rspec") - - # cache the result - if caching and api.cache and not xrn: - api.cache.add(version_string, rspec.toxml()) - - return rspec.toxml() - - def get_ticket(api, xrn, creds, rspec, users): slice_hrn, type = urn_to_hrn(xrn) # get the netspecs contained within the clients rspec -- 2.43.0