function previous_release_from { local release="${1:-master}" local type="${2:-mixed_upgrade}" local previous_version="" case "${type}" in 'mixed_upgrade') previous_version=$(previous_release_mixed_upgrade_case "${release}");; 'ffu_upgrade'|'ffu_undercloud_upgrade'|'ffu_standalone_upgrade') previous_version=$(previous_release_ffu_upgrade_case "${release}");; *) echo "UNKNOWN_TYPE" return 1 ;; esac echo "${previous_version}" } function previous_release_mixed_upgrade_case { local release="${1:-master}" case "${release}" in ''|master|promotion-testing-hash-master) echo "zed" ;; wallaby|promotion-testing-hash-wallaby) echo "victoria" ;; victoria|promotion-testing-hash-victoria) echo "ussuri" ;; ussuri|promotion-testing-hash-ussuri) echo "train" ;; *) echo "UNKNOWN_RELEASE" return 1 ;; esac } function previous_release_ffu_upgrade_case { local release="${1:-master}" case "${release}" in ''|master) echo "wallaby" ;; wallaby) echo "train" ;; *) echo "INVALID_RELEASE_FOR_FFU" return 1 ;; esac } function is_featureset { local type="${1}" local featureset_file="${2}" [ $(shyaml get-value "${type}" "False"< "${featureset_file}") = "True" ] } function create_collect_logs_script { cat > $LOGS_DIR/collect_logs.sh < $LOGS_DIR/dns_cache.txt mkdir -p $LOGS_DIR/quickstart_files find $LOCAL_WORKING_DIR -maxdepth 1 -type f -not -name "*sqlite" | while read i; do cp -l \$i $LOGS_DIR/quickstart_files/\$(basename \$i); done $QUICKSTART_COLLECTLOGS_CMD > $LOGS_DIR/quickstart_collect_logs.log || \ echo "WARNING: quickstart collect-logs failed, check quickstart_collectlogs.log for details" cp $LOGS_DIR/undercloud/var/log/postci.txt.gz $LOGS_DIR/ || true if [[ -e $LOGS_DIR/undercloud/home/$USER/tempest/testrepository.subunit.gz ]]; then cp $LOGS_DIR/undercloud/home/$USER/tempest/testrepository.subunit.gz ${LOGS_DIR}/testrepository.subunit.gz fi # Copy tempest.html to root dir if [ -f $LOGS_DIR/undercloud/home/$USER/tempest/tempest.html.gz ]; then cp $LOGS_DIR/undercloud/home/$USER/tempest/tempest.html.gz ${LOGS_DIR} fi # Copy tempest and .testrepository directory to /opt/stack/new/tempest and # unzip sudo -s -- < $LOGS_DIR/quickstart_files/log-size.txt || true END } get_extra_vars_from_release() { local release_name=$1 local release_hash=$2 local newest_release_hash=${3:-""} local release_file=$LOCAL_WORKING_DIR/config/release/tripleo-ci/${DISTRIBUTION:-CentOS}-${DISTRIBUTION_MAJOR_VERSION:-7}/$release_name.yml echo "--extra-vars @$release_file -e dlrn_hash=$release_hash -e get_build_command=$release_hash ${newest_release_hash:+-e dlrn_hash_newest=$newest_release_hash}" } # Enclose IPv6 addresses in brackets. # This is needed for scp command where the first column of IPv6 address gets # interpreted as the separator between address and path otherwise. # $1 : IP address to sanitize function sanitize_ip_address { ip=$1 if [[ $ip =~ .*:.* ]]; then echo \[$ip\] else echo $ip fi } function python_cmd() { distribution=unknown distribution_major_version=unknown # we prefer python2 because on few systems python->python3 python_cmd=python3 if [ -f /etc/os-release ]; then . /etc/os-release distribution_major_version=${VERSION_ID%.*} case $NAME in "Red Hat"*) distribution="RedHat" if [ "$distribution_major_version" -ge "8" ]; then python_cmd=python3 fi ;; "CentOS"*) distribution="CentOS" if [ "$distribution_major_version" -ge "8" ]; then python_cmd=python3 fi ;; "Fedora"*) distribution="Fedora" if [ "$distribution_major_version" -ge "28" ]; then python_cmd=python3 fi ;; "Ubuntu"*) distribution="Ubuntu" ;; "Debian"*) distribution="Debian" ;; esac elif [ -f /etc/lsb-release ]; then . /etc/lsb-release distribution=${DISTRIB_ID}xx distribution_major_version=${DISTRIB_RELEASE%.*} elif [ -f /etc/debian_version ]; then distribution="Debian" distribution_major_version=$(cat /etc/debian_version | cut -d. -f1) else # Covers for FreeBSD and many others distribution=$(uname -s) if [ $distribution = Darwin ]; then distribution="MacOSX" distribution_major_version=$(sw_vers -productVersion | cut -d. -f1) fi which $python_cmd 2>&1 >/dev/null || { python_cmd=/usr/local/bin/python2.7 } fi echo $python_cmd } function package_manager() { PKG="$(command -v dnf || command -v yum)" if [ "$(python_cmd)" == "python3" ]; then echo "${PKG} -y --exclude=python2* $*" else echo "${PKG} -y --exclude=python3* $*" fi }