summaryrefslogtreecommitdiffstats
path: root/patches/opnfv-fuel/0011-deploy-config-honor-interfaces-and-transformations.patch
blob: 1567e85be875763cc52733fed59c2e10b55e17bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
From a7a2e8ff1c3389063b4d73805d0bbdbd7376f090 Mon Sep 17 00:00:00 2001
From: Josep Puigdemont <josep.puigdemont@enea.com>
Date: Wed, 13 Jul 2016 18:29:05 +0200
Subject: [PATCH] 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>
---
 deploy/deploy-config.py | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/deploy/deploy-config.py b/deploy/deploy-config.py
index 88a1111..5dfb863 100644
--- a/deploy/deploy-config.py
+++ b/deploy/deploy-config.py
@@ -167,6 +167,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"] + "...."
@@ -180,6 +181,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 dea_pod_override_conf.has_key('nodes'):
+        dea_pod_override_nodes = list(dea_pod_override_conf['nodes'])
     if dea_pod_override_conf:
         final_dea_conf = dict(mergedicts(final_dea_conf, dea_pod_override_conf))
 
@@ -245,6 +249,25 @@ if deploy_scenario_conf["stack-extensions"]:
             dea_scenario_module_override_conf['settings']['editable'][module["module"]] = scenario_module_override_conf
             final_dea_conf = dict(mergedicts(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 node.has_key('transformations') and node.has_key('interfaces'):
+                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"]):
-- 
2.7.4