-# Check defaults file existence
-if [ ! -f "${SCENARIO_DIR}/defaults-$(uname -i).yaml" ]; then
- notify "[ERROR] Scenario defaults file is missing!\n" 1>&2
- exit 1
-fi
-
-# Get required infra deployment data
-set +x
-eval "$(parse_yaml "${SCENARIO_DIR}/defaults-$(uname -i).yaml")"
-eval "$(parse_yaml "${SCENARIO_DIR}/${DEPLOY_TYPE}/${DEPLOY_SCENARIO}.yaml")"
-eval "$(parse_yaml "${LOCAL_PDF_RECLASS}")"
-[[ "${CI_DEBUG}" =~ (false|0) ]] || set -x
-
-export CLUSTER_DOMAIN=${cluster_domain}
-
-# Serialize vnode data as '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]'
-for node in "${virtual_nodes[@]}"; do
- virtual_custom_ram="virtual_${node}_ram"
- virtual_custom_vcpus="virtual_${node}_vcpus"
- virtual_nodes_data+="${node},"
- virtual_nodes_data+="${!virtual_custom_ram:-$virtual_default_ram},"
- virtual_nodes_data+="${!virtual_custom_vcpus:-$virtual_default_vcpus}|"
-done
-virtual_nodes_data=${virtual_nodes_data%|}
-
-# Serialize repos, packages to (pre-)install/remove for:
-# - foundation node VM base image (virtual: all VMs, baremetal: cfg01|mas01)
-# - virtualized control plane VM base image (only when VCP is used)
-base_image_flavors=common
-if [[ "${cluster_states[*]}" =~ virtual_control ]]; then
- base_image_flavors+=" control"
-fi
-for sc in ${base_image_flavors}; do
- for va in apt_keys apt_repos pkg_install pkg_remove; do
- key=virtual_${sc}_${va}
- eval "${key}=\${${key}[@]// /|}"
- eval "${key}=\${${key}// /,}"
- virtual_repos_pkgs+="${!key}^"
- done
-done
-virtual_repos_pkgs=${virtual_repos_pkgs%^}
-
-# Expand reclass and virsh network templates
-for tp in "${RECLASS_CLUSTER_DIR}/all-mcp-arch-common/opnfv/"*.template \
- net_*.template; do
- eval "cat <<-EOF
- $(<"${tp}")
- EOF" 2> /dev/null > "${tp%.template}"
-done
-
-# Convert Pharos-compatible PDF to reclass network definitions
-if [ "${DEPLOY_TYPE}" = 'baremetal' ]; then
- find "${RECLASS_CLUSTER_DIR}" -name '*.j2' | while read -r tp
- do
- if ! "${PHAROS_GEN_CONFIG_SCRIPT}" -y "${LOCAL_PDF}" \
- -j "${tp}" > "${tp%.j2}"; then
- notify "[ERROR] Could not convert PDF to reclass network defs!\n"
- exit 1
- fi
- done
-fi
-
-# Map PDF networks 'admin', 'mgmt', 'private' and 'public' to bridge names
-BR_NAMES=('admin' 'mgmt' 'private' 'public')
-BR_NETS=( \
- "${paramaters__param_opnfv_infra_maas_pxe_address}" \
- "${parameters__param_opnfv_infra_config_address}" \
- "${parameters__param_opnfv_openstack_compute_node01_tenant_address}" \
- "${parameters__param_opnfv_openstack_compute_node01_external_address}" \
-)
-for ((i = 0; i < ${#BR_NETS[@]}; i++)); do
- br_jump=$(eval echo "\$parameters__param_opnfv_jump_bridge_${BR_NAMES[i]}")
- if [ -n "${br_jump}" ] && [ "${br_jump}" != 'None' ] && \
- [ -d "/sys/class/net/${br_jump}/bridge" ]; then
- notify "[OK] Bridge found for '${BR_NAMES[i]}': ${br_jump}\n" 2
- OPNFV_BRIDGES[${i}]="${br_jump}"
- elif [ -n "${BR_NETS[i]}" ]; then
- bridge=$(ip addr | awk "/${BR_NETS[i]%.*}./ {print \$NF; exit}")
- if [ -n "${bridge}" ] && [ -d "/sys/class/net/${bridge}/bridge" ]; then
- notify "[OK] Bridge found for net ${BR_NETS[i]%.*}.0: ${bridge}\n" 2
- OPNFV_BRIDGES[${i}]="${bridge}"
- fi
- fi
-done
-notify "[NOTE] Using bridges: ${OPNFV_BRIDGES[*]}\n" 2
+# key might not exist yet ...
+generate_ssh_key
+export MAAS_SSH_KEY="$(cat "$(basename "${SSH_KEY}").pub")"
+
+# Expand jinja2 templates based on PDF data and env vars
+[[ "${DEPLOY_SCENARIO}" =~ -ha$ ]] || MCP_VCP=0
+export MCP_REPO_ROOT_PATH MCP_VCP MCP_STORAGE_DIR MCP_DOCKER_TAG MCP_CMP_SS \
+ MCP_JUMP_ARCH=$(uname -i) MCP_DEPLOY_SCENARIO="${DEPLOY_SCENARIO}" \
+ MCP_NO_DEPLOY_ENVIRONMENT
+do_templates_scenario "${MCP_STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \
+ "${BASE_CONFIG_URI}" "${SCENARIO_DIR}" \
+ "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml"
+do_templates_cluster "${MCP_STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \
+ "${MCP_REPO_ROOT_PATH}" \
+ "${SCENARIO_DIR}/defaults.yaml"
+
+# Determine additional data (e.g. jump bridge names) based on XDF
+source "${DEPLOY_DIR}/xdf_data.sh"
+
+# Jumpserver prerequisites check
+notify "[NOTE] Using bridges: ${OPNFV_BRIDGES[*]}" 2
+jumpserver_check_requirements "${virtual_nodes[*]}" "${OPNFV_BRIDGES[@]}"