summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosep Puigdemont <josep.puigdemont@enea.com>2016-07-13 18:29:05 +0200
committerJonas Bjurel <jonas.bjurel@ericsson.com>2016-08-17 11:52:16 +0000
commit3ec3fb2d1d316b656a13f9c1ca00cc8a7fcd51de (patch)
tree6de52894c10d36fe9bfd7228fbcd5d5d780c2d26
parent9dc7082c230f7f22b37ae9bb04493387c466fa7b (diff)
deploy-config: honor interfaces and transformations
Currently all scenarios assume interfaces and transformations are the same for all nodes in the POD, however some PODs may contain nodes that have different hardware, or where the interfaces are configured differently. In this patch we honor the original interfaces and transformations if they are present in the dea-override.yaml file. The way to add this information in the dea-override is by having a "nodes:" section with this information, ie: nodes: - id: 1 interfaces: interfaces_1 transformations: transformations_1 - id: 2 interfaces: interfaces_2 transformations: transformations_2 - id: 3 interfaces: interfaces_1 transformations: transformations_1 The node IDs is used to find out this information. Change-Id: If6ff8ca28b42e043d1bdf91142a4a56ae36e4304 Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
-rw-r--r--deploy/deploy-config.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/deploy/deploy-config.py b/deploy/deploy-config.py
index ee2a0d555..436002d36 100644
--- a/deploy/deploy-config.py
+++ b/deploy/deploy-config.py
@@ -182,6 +182,7 @@ dea_base_sha = sha_uri(kwargs["dea_base_uri"])
dea_base_comment = dea_base_conf['dea-base-config-metadata']['comment']
dea_base_conf.pop('dea-base-config-metadata')
final_dea_conf = dea_base_conf
+dea_pod_override_nodes = None
# Fetch dea-pod-override, extract and purge meta-data, merge with previous dea data structure
print('Parsing the dea-pod-override from: ' + kwargs["dea_pod_override_uri"] + "....")
@@ -195,6 +196,9 @@ if dea_pod_override_conf:
dea_pod_comment = dea_pod_override_conf['dea-pod-override-config-metadata']['comment']
print('Merging dea-base and dea-pod-override configuration ....')
dea_pod_override_conf.pop('dea-pod-override-config-metadata')
+ # Copy the list of original nodes, which holds info on their transformations
+ if 'nodes' in dea_pod_override_conf:
+ dea_pod_override_nodes = list(dea_pod_override_conf['nodes'])
if dea_pod_override_conf:
final_dea_conf = dict(merge_dicts(final_dea_conf, dea_pod_override_conf))
@@ -280,6 +284,25 @@ if deploy_scenario_conf["stack-extensions"]:
dea_scenario_module_override_conf['settings']['editable'][module["module"]] = scenario_module_override_conf
final_dea_conf = dict(merge_dicts(final_dea_conf, dea_scenario_module_override_conf))
+def get_node_ifaces_and_trans(nodes, nid):
+ for node in nodes:
+ if node['id'] == nid:
+ if 'transformations' in node and 'interfaces' in node:
+ return (node['interfaces'], node['transformations'])
+ else:
+ return None
+
+ return None
+
+if dea_pod_override_nodes:
+ for node in final_dea_conf['nodes']:
+ data = get_node_ifaces_and_trans(dea_pod_override_nodes, node['id'])
+ if data:
+ print ("Honoring original interfaces and transformations for "
+ "node %d to %s, %s" % (node['id'], data[0], data[1]))
+ node['interfaces'] = data[0]
+ node['transformations'] = data[1]
+
# Dump final dea.yaml including configuration management meta-data to argument provided
# directory
if not os.path.exists(kwargs["output_path"]):