aboutsummaryrefslogtreecommitdiffstats
path: root/mcp/scripts/xdf_data.sh.j2
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2018-08-05 19:36:01 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2018-08-07 06:21:10 +0200
commitbef972ea691f73527a845cd8a8b89f1958eb9cb2 (patch)
treee4ac299bba10a54d0b21db9db9fb62eadac118a9 /mcp/scripts/xdf_data.sh.j2
parent291d972bdd666d36e35f8bb3953b0da806ea0eea (diff)
[scenarios] Differentiate virtual node roles
Split scenario yaml definitions for virtual.nodes based on node role ('infra', 'control' or 'compute'), to be leveraged later to contruct node lists based on said role. This moves the responsability of filtering node names in scenario files (based on 'virtual' or 'baremetal' type) to xdf_data.sh.j2, simplifying scenario templates. By keeping all nodes (both virtual and baremetal) in scenario files, we can later determine the role (and implicitly the hostname) for a MaaS-managed node based on its index in the virtual.nodes.control structure. JIRA: FUEL-382 Change-Id: I1f83a307631f4166ee1c57ef598c44876b962f97 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Diffstat (limited to 'mcp/scripts/xdf_data.sh.j2')
-rw-r--r--mcp/scripts/xdf_data.sh.j241
1 files changed, 35 insertions, 6 deletions
diff --git a/mcp/scripts/xdf_data.sh.j2 b/mcp/scripts/xdf_data.sh.j2
index 8c9d5d969..bc0107761 100644
--- a/mcp/scripts/xdf_data.sh.j2
+++ b/mcp/scripts/xdf_data.sh.j2
@@ -11,7 +11,14 @@
# Data derived from XDF (PDF/IDF/SDF/etc), used as input in deploy.sh
#
+{%- import 'net_map.j2' as nm with context -%}
{%- set arch = conf[conf.MCP_JUMP_ARCH] -%}
+{%- set V = conf.virtual -%}
+{%- set section_map = {
+ 'infra': -1,
+ 'control': nm.ctl01.idx,
+ 'compute': nm.cmp001.idx
+} -%}
{%- macro bash_arr(_l) -%}
({%- for n in _l -%}'{{ n }}' {% endfor -%})
@@ -24,16 +31,38 @@
{#- Pack all vnode data as string -#}
{%- macro serialize_vnodes() -%}
- {%- set V = conf.virtual -%}
{%- set arr = [] -%}
- {%- for n in V.nodes -%}
- {%- if n not in V -%}{%- do V.update({n: {}}) -%}{%- endif -%}
- {%- do arr.append(pack([n, V[n].ram or arch.default.ram,
- V[n].vcpus or arch.default.vcpus])) -%}
+ {%- for section in section_map -%}
+ {%- for n in V.nodes[section] -%}
+ {%- if section_map[section] < 0 or conf.nodes[section_map[section] + loop.index0].node.type == 'virtual' -%}
+ {%- if n not in V -%}{%- do V.update({n: {}}) -%}{%- endif -%}
+ {%- do arr.append(pack([n, V[n].ram or arch.default.ram,
+ V[n].vcpus or arch.default.vcpus])) -%}
+ {%- endif -%}
+ {%- endfor -%}
{%- endfor -%}
'{{ pack(arr, '|') }}'
{%- endmacro -%}
+{#- Return a bash array of node names or a Salt query, optionally filtered by type #}
+{%- macro filter_nodes(type, output_as_query = False, sections = section_map) -%}
+ {%- set arr = [] -%}
+ {%- for section in sections -%}
+ {%- for n in V.nodes[section] -%}
+ {%- if ( (section_map[section] < 0 and type == 'virtual') or
+ (section_map[section] >= 0 and
+ conf.nodes[section_map[section] + loop.index0].node.type in type) ) -%}
+ {%- do arr.append(n) -%}
+ {%- endif -%}
+ {%- endfor -%}
+ {%- endfor -%}
+ {%- if output_as_query -%}
+ '{{ arr | join('* or ') }}*'
+ {%- else -%}
+ {{ bash_arr(arr) }}
+ {%- endif -%}
+{%- endmacro -%}
+
{#- Pack apt_pkg data as string -#}
{%- macro serialize_apt_pkg() -%}
{%- set arr = [] -%}
@@ -59,7 +88,7 @@ OPNFV_BRIDGES=(
export CLUSTER_DOMAIN={{ conf.cluster.domain }}
cluster_states={{ bash_arr(conf.cluster.states) }}
-virtual_nodes={{ bash_arr(conf.virtual.nodes) }}
+virtual_nodes={{ filter_nodes('virtual') }}
base_image={{ arch.base_image }}
# Serialize vnode data as '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]'