From c619c1f8c1ee8503d12459d98fc535e4218860b5 Mon Sep 17 00:00:00 2001 From: Alex-Welsh Date: Tue, 24 Sep 2024 10:34:39 +0100 Subject: [PATCH 1/2] Add upgrade-prerequisites script for CI --- tools/upgrade-prerequisites.sh | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 tools/upgrade-prerequisites.sh diff --git a/tools/upgrade-prerequisites.sh b/tools/upgrade-prerequisites.sh new file mode 100755 index 000000000..946c59e1f --- /dev/null +++ b/tools/upgrade-prerequisites.sh @@ -0,0 +1,48 @@ +#! /usr/bin/bash + +# This script is intended to be run in CI to test upgrades. +# It executes any preparation steps that must be perfomed before upgrading +# OpenStack services. + +# NOTE(upgrade): This script is unique to each release. It may not be required +# for some releases. + +set -ex + +function prechecks() { + if [[ ! $KAYOBE_CONFIG_PATH ]]; then + echo "Environment variable \$KAYOBE_CONFIG_PATH is not defined" + echo "Ensure your environment is set up to run kayobe commands" + exit 2 + fi +} + +function rabbit_upgrade() { + # Ensure RabbitMQ is upgraded to 3.13 + if kayobe overcloud host command run -l controllers -b --command "docker exec rabbitmq rabbitmqctl --version | grep -F 3.11" --show-output; then + kayobe kolla ansible run "rabbitmq-upgrade 3.12" + fi + sleep 200 + if kayobe overcloud host command run -l controllers -b --command "docker exec rabbitmq rabbitmqctl --version | grep -F 3.12" --show-output; then + kayobe kolla ansible run "rabbitmq-upgrade 3.13" + fi +} + +function rabbit_migration() { + if ! kayobe overcloud host command run -l controllers -b --command "docker exec $RABBITMQ_CONTAINER_NAME rabbitmqctl list_queues type | grep quorum"; then + # Set quorum flag, execute RabbitMQ queue migration script, unset quorum flag (to avoid git conflicts) + sed -i -e 's/om_enable_rabbitmq_high_availability: true/om_enable_rabbitmq_high_availability: false/' \ + -e 's/om_enable_rabbitmq_quorum_queues: false/om_enable_rabbitmq_quorum_queues: true/' \ + $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/globals.yml + + $KAYOBE_CONFIG_PATH/../../tools/rabbitmq-quorum-migration.sh + + sed -i -e 's/om_enable_rabbitmq_high_availability: false/om_enable_rabbitmq_high_availability: true/' \ + -e 's/om_enable_rabbitmq_quorum_queues: true/om_enable_rabbitmq_quorum_queues: false/' \ + $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/globals.yml + fi +} + +prechecks +rabbit_upgrade +rabbit_migration From 6b3b33364d13f1504d114b0c0c520fff527ef905 Mon Sep 17 00:00:00 2001 From: Alex-Welsh <112560678+Alex-Welsh@users.noreply.github.com> Date: Fri, 11 Oct 2024 09:29:00 +0100 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Matt Crees --- tools/upgrade-prerequisites.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/upgrade-prerequisites.sh b/tools/upgrade-prerequisites.sh index 946c59e1f..f2a20666b 100755 --- a/tools/upgrade-prerequisites.sh +++ b/tools/upgrade-prerequisites.sh @@ -19,11 +19,11 @@ function prechecks() { function rabbit_upgrade() { # Ensure RabbitMQ is upgraded to 3.13 - if kayobe overcloud host command run -l controllers -b --command "docker exec rabbitmq rabbitmqctl --version | grep -F 3.11" --show-output; then + if kayobe overcloud host command run -l controllers -b --command "docker exec rabbitmq rabbitmqctl --version | grep -F 3.11." --show-output; then kayobe kolla ansible run "rabbitmq-upgrade 3.12" fi sleep 200 - if kayobe overcloud host command run -l controllers -b --command "docker exec rabbitmq rabbitmqctl --version | grep -F 3.12" --show-output; then + if kayobe overcloud host command run -l controllers -b --command "docker exec rabbitmq rabbitmqctl --version | grep -F 3.12." --show-output; then kayobe kolla ansible run "rabbitmq-upgrade 3.13" fi } @@ -35,7 +35,7 @@ function rabbit_migration() { -e 's/om_enable_rabbitmq_quorum_queues: false/om_enable_rabbitmq_quorum_queues: true/' \ $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/globals.yml - $KAYOBE_CONFIG_PATH/../../tools/rabbitmq-quorum-migration.sh + $KAYOBE_CONFIG_ROOT/tools/rabbitmq-quorum-migration.sh sed -i -e 's/om_enable_rabbitmq_high_availability: false/om_enable_rabbitmq_high_availability: true/' \ -e 's/om_enable_rabbitmq_quorum_queues: true/om_enable_rabbitmq_quorum_queues: false/' \