summaryrefslogtreecommitdiffstats
path: root/mcp/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'mcp/scripts')
-rw-r--r--mcp/scripts/lib.sh1
-rw-r--r--mcp/scripts/xdf_data.sh.j242
2 files changed, 37 insertions, 6 deletions
diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh
index 9c12bff64..4e4f36908 100644
--- a/mcp/scripts/lib.sh
+++ b/mcp/scripts/lib.sh
@@ -407,6 +407,7 @@ function create_vms {
# create vms with specified options
for serialized_vnode_data in "${vnodes[@]}"; do
+ if [ -z "${serialized_vnode_data}" ]; then continue; fi
IFS=',' read -r -a vnode_data <<< "${serialized_vnode_data}"
# prepare network args
diff --git a/mcp/scripts/xdf_data.sh.j2 b/mcp/scripts/xdf_data.sh.j2
index 8c9d5d969..c0629fec4 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,8 @@ 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') }}
+control_nodes_query={{ filter_nodes(['baremetal', 'virtual'], True, ['control']) }}
base_image={{ arch.base_image }}
# Serialize vnode data as '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]'