X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Fslice_manager.py;h=02729b004f2213ea6dcf3f39f765e87068c97dee;hb=f2282434e40e06365e0fdd3f9bc273a793f41235;hp=e9e446ac6f3562066e56f9ad9a951f37e72ce6c1;hpb=f7f57707d12dd626d4293dc1e34451fc23763052;p=sfa.git diff --git a/sfa/managers/slice_manager.py b/sfa/managers/slice_manager.py index e9e446ac..02729b00 100644 --- a/sfa/managers/slice_manager.py +++ b/sfa/managers/slice_manager.py @@ -135,7 +135,7 @@ class SliceManager: # look in cache first cached_requested = options.get('cached', True) - if not xrn and self.cache and cached_request: + if not xrn and self.cache and cached_requested: rspec = self.cache.get(version_string) if rspec: api.logger.debug("SliceManager.ListResources returns cached advertisement") @@ -265,12 +265,14 @@ class SliceManager: try: result=server.RenewSliver(xrn, creds, expiration_time, options) if type(result)!=dict: - result = {"code": {"geni_code": 0}, value: result} - result["aggregate"] = aggregate + result = {'code': {'geni_code': 0}, 'value': result} + result['aggregate'] = aggregate return result except: logger.log_exc('Something wrong in _RenewSliver with URL %s'%server.url) - return {"aggregate": aggregate, "exc_info": traceback.format_exc(), "code": {"geni_code": -1}, "value": False, "output": ""} + return {'aggregate': aggregate, 'exc_info': traceback.format_exc(), + 'code': {'geni_code': -1}, + 'value': False, 'output': ""} (hrn, urn_type) = urn_to_hrn(xrn) # get the callers hrn @@ -294,14 +296,14 @@ class SliceManager: results = threads.get_results() geni_code = 0 - geni_output = ",".join([x.get("output","") for x in results]) - geni_value = reduce (lambda x,y: x and y, [result.get("value",False) for result in results], True) + geni_output = ",".join([x.get('output',"") for x in results]) + geni_value = reduce (lambda x,y: x and y, [result.get('value',False) for result in results], True) for agg_result in results: - agg_geni_code = agg_result["code"].get("geni_code",0) + agg_geni_code = agg_result['code'].get('geni_code',0) if agg_geni_code: geni_code = agg_geni_code - results = {"aggregates": results, "code": {"geni_code": geni_code}, "value": geni_value, "output": geni_output} + results = {'aggregates': results, 'code': {'geni_code': geni_code}, 'value': geni_value, 'output': geni_output} return results @@ -363,7 +365,14 @@ class SliceManager: # mmh, it is expected that all results carry the same urn overall['geni_urn'] = results[0]['geni_urn'] - overall['pl_login'] = results[0]['pl_login'] + overall['pl_login'] = None + for result in results: + if result.get('pl_login'): + overall['pl_login'] = result['pl_login'] + break + elif isinstance(result.get('value'), dict) and result['value'].get('pl_login'): + overall['pl_login'] = result['value']['pl_login'] + break # append all geni_resources overall['geni_resources'] = \ reduce (lambda x,y: x+y, [ result['geni_resources'] for result in results] , [])