Add Yoga upgrade jobs

This patch aims to implement testing of SLURP upgrades. While
2023.1 is the first SLURP release, upgrade from Yoga to 2023.1 is
considered as unofficial SLURP upgrade.

With that we're adding changes to gate-check-commit to be able to
provide source release from which upgrade will be perfromed.

While running upgrade script user is required to provide source
release as input to script for SLURP releases.

Also regular upgrades are now switched to Zed as they supposed to be.

Change-Id: I64e55b2c685782d23bb84e7e9f7c60708c276cc3
This commit is contained in:
Dmitriy Rabotyagov 2023-04-07 13:09:41 +02:00 committed by Dmitriy Rabotyagov
parent 379426ef21
commit 9f56dc611a
5 changed files with 67 additions and 22 deletions

View File

@ -46,11 +46,6 @@ export ACTION=${2:-"deploy"}
# Set the installation method for the OpenStack services
export INSTALL_METHOD=${3:-"source"}
# Set the source branch for upgrade tests
# Be sure to change this whenever a new stable branch
# is created. The checkout must always be N-1.
export UPGRADE_SOURCE_BRANCH=${UPGRADE_SOURCE_BRANCH:-'stable/yoga'}
# enable the ARA callback plugin
export SETUP_ARA=${SETUP_ARA:-true}
@ -60,7 +55,14 @@ export SETUP_ARA=${SETUP_ARA:-true}
# deployment.
# This needs to be done before the first "source" to ensure
# the correct functions are used for the branch.
if [[ "${ACTION}" == "upgrade" ]]; then
if [[ "${ACTION}" =~ "upgrade" ]]; then
# Set the source branch for upgrade tests
# Be sure to change this whenever a new stable branch
# is created.
UPGRADE_ACTION_ARRAY=(${ACTION//_/ })
export UPGRADE_SOURCE_RELEASE=${UPGRADE_ACTION_ARRAY[1]:-'zed'}
export UPGRADE_SOURCE_BRANCH=${UPGRADE_SOURCE_BRANCH:-stable/$UPGRADE_SOURCE_RELEASE}
# Store the target SHA/branch
export UPGRADE_TARGET_BRANCH=$(git rev-parse HEAD)
export OPENSTACK_SETUP_EXTRA_ARGS="-e tempest_install=no -e tempest_run=no -e rally_install=no"
@ -214,7 +216,7 @@ else
# Log some data about the instance and the rest of the system
log_instance_info
if [[ $SCENARIO =~ "infra" && $ACTION != "upgrade" ]]; then
if [[ $SCENARIO =~ "infra" && ! $ACTION =~ "upgrade" ]]; then
# Verify our infra setup and do not continue with openstack part
openstack-ansible healthcheck-infrastructure.yml -e osa_gather_facts=False
fi
@ -231,7 +233,7 @@ fi
# If the action is to upgrade, then checkout the original SHA for
# the checkout, and execute the upgrade.
if [[ "${ACTION}" == "upgrade" ]]; then
if [[ "${ACTION}" =~ "upgrade" ]]; then
# Checkout the original HEAD we started with
git checkout ${UPGRADE_TARGET_BRANCH}
@ -263,7 +265,7 @@ if [[ "${ACTION}" == "upgrade" ]]; then
# To execute the upgrade script we need to provide
# an affirmative response to the warning that the
# upgrade is irreversable.
echo 'YES' | bash "${OSA_CLONE_DIR}/scripts/run-upgrade.sh"
echo 'YES' | SOURCE_SERIES=${UPGRADE_SOURCE_RELEASE} bash "${OSA_CLONE_DIR}/scripts/run-upgrade.sh"
if [[ $SCENARIO =~ "infra" ]]; then
# TODO(noonedeadpunk): Remove after Y release

View File

@ -30,8 +30,8 @@ export SCRIPTS_PATH="$(dirname "$(readlink -f "${0}")")"
# The git checkout root path
export MAIN_PATH="$(dirname "${SCRIPTS_PATH}")"
# The expected source series name
export SOURCE_SERIES="zed"
# The expected source series names
export SUPPORTED_SOURCE_SERIES=("yoga" "zed")
# The expected target series name
export TARGET_SERIES="2023.1"
@ -123,20 +123,17 @@ function pre_flight {
# Notify the user.
echo -e "
This script will perform a ${SOURCE_SERIES^} to ${TARGET_SERIES^} upgrade.
This script will perform an upgrade from ${SOURCE_SERIES^}
to ${TARGET_SERIES^}.
Once you start the upgrade there is no going back.
Note that the upgrade targets impacting the data
plane as little as possible, but assumes that the
control plane can experience some down time.
This script executes a one-size-fits-all upgrade,
and given that the tests implemented for it are
not monitored as well as those for a greenfield
environment, the results may vary with each release.
Please use it against a test environment with your
configurations to validate whether it suits your
configurations first to validate whether it suits your
needs and does a suitable upgrade.
Are you ready to perform this upgrade now?
@ -151,9 +148,32 @@ function pre_flight {
fi
}
function set_source_series {
if [ ${#SUPPORTED_SOURCE_SERIES[@]} -gt 1 ]; then
echo -e "
Upgrade to ${TARGET_SERIES^} is supported only from one of the following releases:
"
for release_id in ${!SUPPORTED_SOURCE_SERIES[@]}; do
option_id=${release_id}
echo -e " $((++option_id)): ${SUPPORTED_SOURCE_SERIES[$release_id]^}"
done
echo -e ""
read -p ' Please specify the release to upgrade from [1]: ' SELECTED_OPTION
SOURCE_OPTION=${SELECTED_OPTION:-1}
export SOURCE_SERIES=${SUPPORTED_SOURCE_SERIES[$((--SOURCE_OPTION))]}
else
export SOURCE_SERIES=${SUPPORTED_SOURCE_SERIES[0]}
fi
}
## Main ----------------------------------------------------------------------
function main {
if [ -z "${SOURCE_SERIES+defined}" ]; then
set_source_series
fi
pre_flight
check_for_current
create_working_dir
@ -175,8 +195,10 @@ function main {
pushd ${MAIN_PATH}/playbooks
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/deploy-config-changes.yml")
if [[ "${SOURCE_SERIES}" == "yoga" ]]; then
RUN_TASKS+=("${SCRIPTS_PATH}/upgrade-utilities/define-neutron-plugin.yml")
RUN_TASKS+=("certificate-ssh-authority.yml")
fi
# we don't want to trigger container restarts for galera and rabbit
# but as there will be no hosts available for metal deployments,
# as a fallback option we just run setup-hosts.yml without any arguments

View File

@ -521,18 +521,36 @@
nodeset: ubuntu-focal
timeout: 10800
- job:
name: openstack-ansible-upgrade_yoga-aio_metal-ubuntu-focal
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-focal
timeout: 10800
- job:
name: openstack-ansible-upgrade-aio_lxc-ubuntu-focal
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-focal
timeout: 10800
- job:
name: openstack-ansible-upgrade_yoga-aio_lxc-ubuntu-focal
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-focal
timeout: 10800
- job:
name: openstack-ansible-upgrade-infra_lxc-ubuntu-focal
parent: openstack-ansible-deploy-aio-infra
nodeset: ubuntu-focal
timeout: 10800
- job:
name: openstack-ansible-upgrade_yoga-infra_lxc-ubuntu-focal
parent: openstack-ansible-deploy-aio-infra
nodeset: ubuntu-focal
timeout: 10800
- job:
name: openstack-ansible-deploy-infra_lxc-ubuntu-focal
parent: openstack-ansible-deploy-aio-infra

View File

@ -40,7 +40,7 @@
ZUUL_SRC_PATH: "{{ (action != 'shastest') | ternary(_zuul_src_path, '') }}"
ANSIBLE_PACKAGE: "{{ ansible_package | default('') }}"
SETUP_ARA: 'true'
when: action != 'upgrade'
when: "'upgrade' not in action"
- name: Run bootstrap-aio script
become: yes
become_user: root
@ -56,6 +56,6 @@
ACTION: "{{ action }}"
INSTALL_METHOD: "{{ install_method }}"
when:
- action != 'upgrade'
- "'upgrade' not in action"
- action != 'linters'
- action != 'shastest'

View File

@ -65,6 +65,7 @@
jobs:
- openstack-ansible-upgrade-infra_lxc-rockylinux-9
- openstack-ansible-upgrade-infra_lxc-ubuntu-focal
- openstack-ansible-upgrade_yoga-infra_lxc-ubuntu-focal
gate:
jobs:
- openstack-ansible-upgrade-infra_lxc-rockylinux-9
@ -76,6 +77,7 @@
jobs:
- openstack-ansible-upgrade-aio_metal-rockylinux-9
- openstack-ansible-upgrade-aio_metal-ubuntu-focal
- openstack-ansible-upgrade_yoga-aio_metal-ubuntu-focal
gate:
jobs:
- openstack-ansible-upgrade-aio_metal-rockylinux-9
@ -166,6 +168,7 @@
- openstack-ansible-deploy-aio_metal-ubuntu-jammy
- openstack-ansible-upgrade-aio_metal-rockylinux-9
- openstack-ansible-upgrade-aio_metal-ubuntu-focal
- openstack-ansible-upgrade_yoga-aio_metal-ubuntu-focal
gate:
jobs:
- openstack-ansible-deploy-aio_metal-debian-bullseye