diff options
author | Ulas Kozat <ulas.kozat@gmail.com> | 2016-06-30 08:21:26 -0700 |
---|---|---|
committer | Ulas Kozat <ulas.kozat@gmail.com> | 2016-06-30 08:23:22 -0700 |
commit | 507a7981753397fcf69d31888a5fcfb540910b7a (patch) | |
tree | b946b4e306b3cbd74015732702301804e2199ac6 /lib/partitioner | |
parent | d6749dda9c553ee068aff7402d058e45ab082ef6 (diff) |
rm dependents, update tests
Change-Id: Ib28582296eb93ae5ee8276cfbf0221f3fd03ecbc
Signed-off-by: Ulas Kozat <ulas.kozat@gmail.com>
Diffstat (limited to 'lib/partitioner')
-rw-r--r-- | lib/partitioner/partitioner.py | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/partitioner/partitioner.py b/lib/partitioner/partitioner.py index f5b1546..5177b1b 100644 --- a/lib/partitioner/partitioner.py +++ b/lib/partitioner/partitioner.py @@ -9,20 +9,16 @@ import copy def partition_tosca(filepath, nodesite, tpl): file_paths = {} #holds the list of partitioned files - flag = {} #True when key exists sitenodes = {} #holds nodes in each site #identify the number of partitions for node in nodesite: if nodesite[node] != []: - flag[nodesite[node]] = True if sitenodes.has_key(nodesite[node]): sitenodes[nodesite[node]].append(node) else: sitenodes[nodesite[node]] = [node] - n_parts = len(flag) - #prepare the nodes tpl_local = {} for site in sitenodes: @@ -32,13 +28,14 @@ def partition_tosca(filepath, nodesite, tpl): for site in sitenodes: if node not in sitenodes[site]: del tpl_local[site]['topology_template']['node_templates'][node] + rm_dependents(tpl_local[site]['topology_template']['node_templates'] , node) #remove from policy targets if tpl_local[site]['topology_template'].has_key('policies'): for rule in tpl_local[site]['topology_template']['policies']: for key in rule: #there should be only one key if node in rule[key]['targets']: rule[key]['targets'].remove(node) - # remove the rule is there is no target left! + # remove the rule if there is no target left! if len(rule[key]['targets']) is 0: tpl_local[site]['topology_template']['policies'].remove(rule) @@ -110,3 +107,21 @@ def write_obj(f, curr, prev, prepad): f.write('\n') for item in curr: write_obj(f, item, curr, prepad ) + +def rm_dependents(node_template , node): + del_list = [] + #find the dependents + for nd in node_template: + if node_template[nd].has_key('requirements'): + for i in range(len(node_template[nd]['requirements'])): + if node_template[nd]['requirements'][i].has_key('virtualLink') and \ + node_template[nd]['requirements'][i]['virtualLink'].has_key('node') and \ + node_template[nd]['requirements'][i]['virtualLink']['node'] == node: + del_list.append(nd) + if node_template[nd]['requirements'][i].has_key('virtualBinding') and \ + node_template[nd]['requirements'][i]['virtualBinding'].has_key('node') and \ + node_template[nd]['requirements'][i]['virtualBinding']['node'] == node: + del_list.append(nd) + #remove the dependents + for i in range(len(del_list)): + del node_template[del_list[i]] |