X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplc%2Fnodes.py;h=a8e0b60cc4ce2f85809b70eedbdbe64e65cc3cbe;hb=a52c4ab9a651247383a16423e6ac189694c16cfa;hp=3fb3e98435adde78f19b69db84ae177f987595b9;hpb=73b163a7ea35209e0675a7c7cef367946928a96f;p=sfa.git diff --git a/sfa/plc/nodes.py b/sfa/plc/nodes.py index 3fb3e984..a8e0b60c 100644 --- a/sfa/plc/nodes.py +++ b/sfa/plc/nodes.py @@ -24,7 +24,7 @@ class Nodes(SimpleStorage): self.api = api self.ttl = ttl self.threshold = None - path = self.api.config.SFA_BASE_DIR + path = self.api.config.SFA_DATA_DIR filename = ".".join([self.api.interface, self.api.hrn, "nodes"]) filepath = path + os.sep + filename self.nodes_file = filepath @@ -112,13 +112,17 @@ 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 - arg_list = [credential, hrn] - request_hash = self.api.key.compute_hash(arg_list) - # get the rspec from the aggregate - agg_rspec = aggregates[aggregate].get_resources(credential, hrn, request_hash, caller_cred) + try: + 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) + agg_rspec = aggregates[aggregate].get_resources(credential, hrn, request_hash, caller_cred) # extract the netspec from each aggregates rspec rspec.parseString(agg_rspec) networks.extend([{'NetSpec': rspec.getDictsByTagName('NetSpec')}]) @@ -173,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}) @@ -190,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 = []