in the case of an SM-SM federation, this check will avoid looping of get_resources...
[sfa.git] / sfa / plc / nodes.py
index 96eb84b..a8e0b60 100644 (file)
@@ -112,11 +112,13 @@ class Nodes(SimpleStorage):
         rspec = RSpec()
         credential = self.api.getCredential() 
         for aggregate in aggregates:
+          if aggregate not in [self.api.auth.client_cred.get_gid_caller().get_hrn()]:
             try:
                 caller_cred = self.caller_cred
                 # get the rspec from the aggregate
                 try:
-                    agg_rspec = aggregates[aggregate].get_resources(credential, hrn, caller_cred)
+                   request_hash=None
+                    agg_rspec = aggregates[aggregate].get_resources(credential, hrn, request_hash, caller_cred)
                 except:
                     arg_list = [credential, hrn]
                     request_hash = self.api.key.compute_hash(arg_list)
@@ -175,6 +177,7 @@ class Nodes(SimpleStorage):
         Get resource information from PLC
         """
 
+        slicename = None
         # Get the required nodes
         if not hrn:
             nodes = self.api.plshell.GetNodes(self.api.plauth, {'peer_id': None})
@@ -192,7 +195,10 @@ class Nodes(SimpleStorage):
 
         # Filter out whitelisted nodes
         public_nodes = lambda n: n.has_key('slice_ids_whitelist') and not n['slice_ids_whitelist']
-        nodes = filter(public_nodes, nodes)
+            
+        # ...only if they are not already assigned to this slice.
+        if (not slicename):        
+            nodes = filter(public_nodes, nodes)
 
         # Get all network interfaces
         interface_ids = []