From fa62907da62d0b8ae9e733a9729941065ceedf4d Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Thu, 26 Oct 2017 20:54:41 +0200 Subject: lib.sh: Fix compatibility with bash 4.2 JIRA: FUEL-296 Change-Id: Ide9f9333fe9b44ff6b78678064f8e67f05aabd42 Signed-off-by: Alexandru Avadanii --- ci/deploy.sh | 17 +++++++++-------- mcp/scripts/lib.sh | 32 ++++++++++++++++---------------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/ci/deploy.sh b/ci/deploy.sh index 3699bf966..5c663438c 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -329,13 +329,15 @@ eval "$(parse_yaml "${LOCAL_PDF_RECLASS}")" export CLUSTER_DOMAIN=${cluster_domain} -declare -A virtual_nodes_ram virtual_nodes_vcpus +# Serialize vnode data as ',,|,,[...]' for node in "${virtual_nodes[@]}"; do virtual_custom_ram="virtual_${node}_ram" virtual_custom_vcpus="virtual_${node}_vcpus" - virtual_nodes_ram[$node]=${!virtual_custom_ram:-$virtual_default_ram} - virtual_nodes_vcpus[$node]=${!virtual_custom_vcpus:-$virtual_default_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%|} # Expand reclass and virsh network templates for tp in "${RECLASS_CLUSTER_DIR}/all-mcp-ocata-common/opnfv/"*.template \ @@ -392,12 +394,11 @@ elif [ ${USE_EXISTING_INFRA} -gt 0 ]; then check_connection else generate_ssh_key - prepare_vms virtual_nodes "${base_image}" "${STORAGE_DIR}" - create_networks OPNFV_BRIDGES - create_vms virtual_nodes virtual_nodes_ram virtual_nodes_vcpus \ - OPNFV_BRIDGES "${STORAGE_DIR}" + prepare_vms "${base_image}" "${STORAGE_DIR}" "${virtual_nodes[@]}" + create_networks "${OPNFV_BRIDGES[@]}" + create_vms "${STORAGE_DIR}" "${virtual_nodes_data}" "${OPNFV_BRIDGES[@]}" update_mcpcontrol_network - start_vms virtual_nodes + start_vms "${virtual_nodes[@]}" check_connection fi if [ ${USE_EXISTING_INFRA} -lt 2 ]; then diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh index a165bb367..8bdb5dd57 100644 --- a/mcp/scripts/lib.sh +++ b/mcp/scripts/lib.sh @@ -48,9 +48,9 @@ function cleanup_vms { } function prepare_vms { - local -n vnodes=$1 - local base_image=$2 - local image_dir=$3 + local base_image=$1; shift + local image_dir=$1; shift + local vnodes=("$@") cleanup_vms get_base_image "${base_image}" "${image_dir}" @@ -68,7 +68,7 @@ function prepare_vms { } function create_networks { - local -n vnode_networks=$1 + local vnode_networks=("$@") # create required networks, including constant "mcpcontrol" # FIXME(alav): since we renamed "pxe" to "mcpcontrol", we need to make sure # we delete the old "pxe" virtual network, or it would cause IP conflicts. @@ -88,11 +88,9 @@ function create_networks { } function create_vms { - local -n vnodes=$1 - local -n vnodes_ram=$2 - local -n vnodes_vcpus=$3 - local -n vnode_networks=$4 - local image_dir=$5 + local image_dir=$1; shift + IFS='|' read -r -a vnodes <<< "$1"; shift + local vnode_networks=("$@") # AArch64: prepare arch specific arguments local virt_extra_args="" @@ -102,10 +100,12 @@ function create_vms { fi # create vms with specified options - for node in "${vnodes[@]}"; do + for serialized_vnode_data in "${vnodes[@]}"; do + IFS=',' read -r -a vnode_data <<< "${serialized_vnode_data}" + # prepare network args net_args=" --network network=mcpcontrol,model=virtio" - if [ "${node}" = "mas01" ]; then + if [ "${vnode_data[0]}" = "mas01" ]; then # MaaS node's 3rd interface gets connected to PXE/Admin Bridge vnode_networks[2]="${vnode_networks[0]}" fi @@ -114,13 +114,13 @@ function create_vms { done # shellcheck disable=SC2086 - virt-install --name "${node}" \ - --ram "${vnodes_ram[$node]}" --vcpus "${vnodes_vcpus[$node]}" \ + virt-install --name "${vnode_data[0]}" \ + --ram "${vnode_data[1]}" --vcpus "${vnode_data[2]}" \ --cpu host-passthrough --accelerate ${net_args} \ - --disk path="${image_dir}/mcp_${node}.qcow2",format=qcow2,bus=virtio,cache=none,io=native \ + --disk path="${image_dir}/mcp_${vnode_data[0]}.qcow2",format=qcow2,bus=virtio,cache=none,io=native \ --os-type linux --os-variant none \ --boot hd --vnc --console pty --autostart --noreboot \ - --disk path="${image_dir}/mcp_${node}.iso",device=cdrom \ + --disk path="${image_dir}/mcp_${vnode_data[0]}.iso",device=cdrom \ --noautoconsole \ ${virt_extra_args} done @@ -139,7 +139,7 @@ function update_mcpcontrol_network { } function start_vms { - local -n vnodes=$1 + local vnodes=("$@") # start vms for node in "${vnodes[@]}"; do -- cgit 1.2.3-korg