Merge branch 'upstreammaster' into senslab2
[sfa.git] / sfa / managers / slice_manager.py
index b261fe2..02729b0 100644 (file)
@@ -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] , [])