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
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')}])
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})
# 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 = []