X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=env%2Flib%2Fcommon.sh;h=7ec65c53c9e9797365898d4387569f8ed12bca35;hb=refs%2Fchanges%2F99%2F4499%2F2;hp=9ac1431a3036409bff762a4f8ec7132387d44cb0;hpb=fb8a0fe0cb2c32037ec16ad2b377aa63a42b114a;p=icn.git diff --git a/env/lib/common.sh b/env/lib/common.sh index 9ac1431..7ec65c5 100755 --- a/env/lib/common.sh +++ b/env/lib/common.sh @@ -63,17 +63,40 @@ function list_nodes { exit 1 fi - cat "$NODES_FILE" | \ - jq -r '.nodes[] | [ - .name, - .ipmi_driver_info.username, - .ipmi_driver_info.password, - .ipmi_driver_info.address, - .os.username, - .os.password, - .os.image_name - ] | @csv' | \ - sed 's/"//g' + # The boot MAC address must be specified when a port is included + # in the IPMI driver address (i.e when using the VirtualBMC + # controller). Note that the below is a bit of a hack as it only + # checks the first entry in NODES_FILE for the port. + if cat "$NODES_FILE" | + jq -r '.nodes[0].ipmi_driver_info.address' | grep -c ':[0-9]\+$' >/dev/null; then + BOOT_LINK=$(cat "$NODES_FILE" | + jq -r '.nodes[0].net.links | map(.id=="provisioning_nic") | index(true)') + cat "$NODES_FILE" | + jq -r --argjson BOOT_LINK $BOOT_LINK '.nodes[] | [ + .name, + .ipmi_driver_info.username, + .ipmi_driver_info.password, + .ipmi_driver_info.address, + .net.links[$BOOT_LINK].ethernet_mac_address, + .os.username, + .os.password, + .os.image_name + ] | @csv' | + sed 's/"//g' + else + cat "$NODES_FILE" | + jq -r '.nodes[] | [ + .name, + .ipmi_driver_info.username, + .ipmi_driver_info.password, + .ipmi_driver_info.address, + "", + .os.username, + .os.password, + .os.image_name + ] | @csv' | + sed 's/"//g' + fi } function node_networkdata { @@ -87,3 +110,17 @@ function node_networkdata { cat $NODES_FILE | jq -r --arg name "$name" '.nodes[] | select(.name==$name) | .net' } + +function wait_for { + local -r interval=${WAIT_FOR_INTERVAL:-30s} + local -r max_tries=${WAIT_FOR_TRIES:-20} + local try=0 + until "$@"; do + echo "[${try}/${max_tries}] - Waiting ${interval} for $*" + sleep ${interval} + try=$((try+1)) + if [[ ${try} -ge ${max_tries} ]]; then + return 1 + fi + done +}