X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fcommon.sh;h=7a55d5687109c7eea890b18cafe313d72572a933;hb=db24a2e63a447599b5125da4b6f93f0f9184bfcc;hp=a03e90422cf553bf139cad1eef7d2c6ff981b871;hpb=7d7259ab1a065f0d1f849b29270514eacd3a1efe;p=csit.git diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh index a03e90422c..7a55d56871 100644 --- a/resources/libraries/bash/function/common.sh +++ b/resources/libraries/bash/function/common.sh @@ -239,6 +239,9 @@ function common_dirs () { TOOLS_DIR=$(readlink -e "${RESOURCES_DIR}/tools") || { die "Readlink failed." } + DOC_GEN_DIR=$(readlink -e "${TOOLS_DIR}/doc_gen") || { + die "Readlink failed." + } PYTHON_SCRIPTS_DIR=$(readlink -e "${TOOLS_DIR}/scripts") || { die "Readlink failed." } @@ -564,8 +567,6 @@ function reserve_and_cleanup_testbed () { # - PYTHON_SCRIPTS_DIR - Path to directory holding the reservation script. # - BUILD_TAG - Any string suitable as filename, identifying # test run executing this function. May be unset. - # - BUILD_URL - Any string suitable as URL, identifying - # test run executing this function. May be unset. # Variables set: # - TOPOLOGIES - Array of paths to topologies, with failed cleanups removed. # - WORKING_TOPOLOGY - Path to topology yaml file of the reserved testbed. @@ -576,12 +577,11 @@ function reserve_and_cleanup_testbed () { set -exuo pipefail - while [[ ${TOPOLOGIES[@]} ]]; do + while true; do for topo in "${TOPOLOGIES[@]}"; do set +e scrpt="${PYTHON_SCRIPTS_DIR}/topo_reservation.py" opts=("-t" "${topo}" "-r" "${BUILD_TAG:-Unknown}") - opts+=("-u" "${BUILD_URL:-Unknown}") python "${scrpt}" "${opts[@]}" result="$?" set -e @@ -608,39 +608,27 @@ function reserve_and_cleanup_testbed () { fi warn "Testbed cleanup failed: ${topo}" untrap_and_unreserve_testbed "Fail of unreserve after cleanup." - # WORKING_TOPOLOGY is now empty again. - # Build new topology array. - # TOPOLOGIES=("${TOPOLOGIES[@]/$topo}") - # does not really work, see: - # https://stackoverflow.com/questions/16860877/remove-an-element-from-a-bash-array - new_topologies=() - for item in "${TOPOLOGIES[@]}"; do - if [[ "${item}" != "${topo}" ]]; then - new_topologies+=("${item}") - fi - done - TOPOLOGIES=("${new_topologies[@]}") - break fi + # Else testbed is accessible but currently reserved, moving on. done if [[ -n "${WORKING_TOPOLOGY-}" ]]; then # Exit the infinite while loop if we made a reservation. + warn "Reservation and cleanup successful." break fi + if [[ "${#TOPOLOGIES[@]}" == "0" ]]; then + die "Run out of operational testbeds!" + fi + # Wait ~3minutes before next try. - sleep_time="$[ ( $RANDOM % 20 ) + 180 ]s" || { + sleep_time="$[ ( ${RANDOM} % 20 ) + 180 ]s" || { die "Sleep time calculation failed." } echo "Sleeping ${sleep_time}" sleep "${sleep_time}" || die "Sleep failed." done - if [[ ${TOPOLOGIES[@]} ]]; then - echo "Reservation and cleanup successful." - else - die "Run out of operational testbeds!" - fi }