+# Map PDF networks 'admin', 'mgmt', 'private' and 'public' to bridge names
+BR_NAMES=('admin' 'mgmt' 'private' 'public')
+BR_NETS=( \
+ "${parameters__param_opnfv_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
+
+# Infra setup
+if [ ${DRY_RUN} -eq 1 ]; then
+ notify "[NOTE] Dry run, skipping all deployment tasks\n" 2 1>&2
+ exit 0
+elif [ ${USE_EXISTING_INFRA} -gt 0 ]; then
+ notify "[NOTE] Use existing infra\n" 2 1>&2
+ check_connection
+else
+ generate_ssh_key
+ prepare_vms "${base_image}" "${STORAGE_DIR}" "${virtual_repos_pkgs}" \
+ "${virtual_nodes[@]}"
+ create_networks "${OPNFV_BRIDGES[@]}"
+ create_vms "${STORAGE_DIR}" "${virtual_nodes_data}" "${OPNFV_BRIDGES[@]}"
+ update_mcpcontrol_network
+ start_vms "${virtual_nodes[@]}"
+ check_connection
+fi
+if [ ${USE_EXISTING_INFRA} -lt 2 ]; then
+ wait_for 5 "./salt.sh ${LOCAL_PDF_RECLASS}"
+fi