From 48e2b054e7d573eda16e5bd4c8adbe3e47f21071 Mon Sep 17 00:00:00 2001 From: John Trowbridge Date: Mon, 7 May 2018 08:38:44 -0400 Subject: [PATCH] Add ability to use a different release per playbook We are changing the way we are passing releases to the playbooks. This change adds the ability to use the new release handling script. It enables it only for 4 jobs. Two should be moved to the new way of handling releases, two are there to test the backwards compatibility offered by the script. If the script is uses and produces an output, the new method will be activated, by filling a dictionary with playbook as key and release as value. If there is no output from the script, the dictionary will be empty and the default QUICKSTART_RELEASE file will be used instead. Co-Authored-By: Gabriele Cerami Co-Authored-By: Ronelle Landy Change-Id: I6514ba15ff4300ac4bd4fe543d3a4954aeb6f175 --- toci_gate_test-oooq.sh | 13 ++++++++++++ toci_quickstart.sh | 45 +++++++++++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/toci_gate_test-oooq.sh b/toci_gate_test-oooq.sh index 5c2a3a3f4..ea1f370e5 100755 --- a/toci_gate_test-oooq.sh +++ b/toci_gate_test-oooq.sh @@ -122,6 +122,10 @@ LOCAL_WORKING_DIR="$WORKSPACE/.quickstart" LWD=$LOCAL_WORKING_DIR QUICKSTART_SH_JOBS="ovb-3ctlr_1comp-featureset001 multinode-1ctlr-featureset010" +export RELEASES_FILE_OUTPUT=$WORKSPACE/logs/releases.sh +export RELEASES_SCRIPT=$TRIPLEO_ROOT/tripleo-ci/scripts/emit_releases_file/emit_releases_file.py +export RELEASES_SCRIPT_LOGFILE=$WORKSPACE/logs/emit_releases_file.log + # Assemble quickstart configuration based on job type keywords for JOB_TYPE_PART in $(sed 's/-/ /g' <<< "${TOCI_JOBTYPE:-}") ; do case $JOB_TYPE_PART in @@ -213,6 +217,15 @@ for JOB_TYPE_PART in $(sed 's/-/ /g' <<< "${TOCI_JOBTYPE:-}") ; do done +if [[ -f "$RELEASES_SCRIPT" ]] && [[ $FEATURESET_FILE =~ '037' || $FEATURESET_FILE =~ '050' || $FEATURESET_FILE =~ '010' || $FEATURESET_FILE =~ '011' ]]; then + python $RELEASES_SCRIPT \ + --stable-release ${STABLE_RELEASE:-"master"} \ + --featureset-file $TRIPLEO_ROOT/tripleo-quickstart/config/general_config/$(basename $FEATURESET_FILE) \ + --output-file $RELEASES_FILE_OUTPUT \ + --log-file $RELEASES_SCRIPT_LOGFILE +fi + + if [[ ! -z $NODES_FILE ]]; then pushd $TRIPLEO_ROOT/tripleo-quickstart NODECOUNT=$(shyaml get-value node_count < $NODES_FILE) diff --git a/toci_quickstart.sh b/toci_quickstart.sh index 4a6196dd1..3c6ba7c13 100755 --- a/toci_quickstart.sh +++ b/toci_quickstart.sh @@ -40,12 +40,6 @@ QUICKSTART_VENV_CMD=" QUICKSTART_INSTALL_CMD=" $LOCAL_WORKING_DIR/bin/ansible-playbook - --extra-vars @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$QUICKSTART_RELEASE.yml - $NODES_ARGS - $FEATURESET_CONF - $ENV_VARS - $EXTRA_VARS - $DEFAULT_ARGS --tags $TAGS --skip-tags teardown-all " @@ -64,6 +58,35 @@ QUICKSTART_COLLECTLOGS_CMD="$LOCAL_WORKING_DIR/bin/ansible-playbook \ --skip-tags teardown-all \ " +export QUICKSTART_DEFAULT_RELEASE_ARG="--extra-vars @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$QUICKSTART_RELEASE.yml" + +declare -A RELEASE_ARGS=() + +if [[ -f "$RELEASES_FILE_OUTPUT" ]]; then + + source $RELEASES_FILE_OUTPUT + + declare -A RELEASE_ARGS=( + ["multinode-undercloud.yml"]="--extra-vars + @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$UNDERCLOUD_INSTALL_RELEASE.yml" + ["multinode-undercloud-upgrade.yml"]="--extra-vars + @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$UNDERCLOUD_TARGET_RELEASE.yml" + ["multinode-overcloud-prep.yml"]="--extra-vars + @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$OVERCLOUD_DEPLOY_RELEASE.yml" + ["multinode-overcloud.yml"]="--extra-vars + @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$OVERCLOUD_DEPLOY_RELEASE.yml" + ["multinode-overcloud-update.yml"]="--extra-vars + @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$OVERCLOUD_DEPLOY_RELEASE.yml" + ["multinode-overcloud-upgrade.yml"]="--extra-vars + @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$OVERCLOUD_TARGET_RELEASE.yml" + ["multinode-validate.yml"]="--extra-vars + @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$OVERCLOUD_TARGET_RELEASE.yml" + ) + +fi + + + declare -A PLAYBOOKS_ARGS=( ["baremetal-full-overcloud.yml"]=" --extra-vars validation_args='--validation-errors-nonfatal' " ["multinode-undercloud-upgrade.yml"]=" --extra-vars @$LOCAL_WORKING_DIR/config/release/tripleo-ci/${UPGRADE_RELEASE:-$QUICKSTART_RELEASE}.yml" @@ -94,9 +117,17 @@ source $OOOQ_DIR/ansible_ssh_env.sh [[ -n ${STATS_OOOQ:-''} ]] && export STATS_OOOQ=$(( $(date +%s) - STATS_OOOQ )) + for playbook in $PLAYBOOKS; do + echo "${RELEASE_ARGS[$playbook]:=$QUICKSTART_DEFAULT_RELEASE_ARG}" run_with_timeout $START_JOB_TIME $QUICKSTART_INSTALL_CMD \ - --extra-vars ci_job_end_time=$(( START_JOB_TIME + REMAINING_TIME*60 )) \ + "${RELEASE_ARGS[$playbook]:=$QUICKSTART_DEFAULT_RELEASE_ARG}" \ + $NODES_ARGS \ + $FEATURESET_CONF \ + $ENV_VARS \ + $EXTRA_VARS \ + $DEFAULT_ARGS \ + --extra-vars ci_job_end_time=$(( START_JOB_TIME + REMAINING_TIME*60 )) \ $LOCAL_WORKING_DIR/playbooks/$playbook "${PLAYBOOKS_ARGS[$playbook]:-}" \ 2>&1 | tee -a $LOGS_DIR/quickstart_install.log && exit_value=0 || exit_value=$?