From c0a72cf749b3c5ce714e3553be841e55b472013a Mon Sep 17 00:00:00 2001 From: Jim Rollenhagen Date: Thu, 10 Dec 2015 17:52:24 -0800 Subject: [PATCH] Add grenade plugin This is a straight copy of the ironic code in grenade's tree to here. This is necessary to drop ironic code from devstack and complete the devstack plugin work, as well as just the right thing to do, and will help us move faster on grenade work. Note that I'm not sure if this will or will not, and it may make our grenade jobs explode during the transition. However, our grenade jobs don't work right now anyway, so nothing of value was lost. :) Change-Id: I8b065c60e9e06cd7fc10749c49bdf79d878fcc12 --- devstack/upgrade/settings | 5 ++ devstack/upgrade/shutdown.sh | 18 ++++++ devstack/upgrade/upgrade.sh | 112 +++++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 devstack/upgrade/settings create mode 100755 devstack/upgrade/shutdown.sh create mode 100755 devstack/upgrade/upgrade.sh diff --git a/devstack/upgrade/settings b/devstack/upgrade/settings new file mode 100644 index 0000000000..3c46356481 --- /dev/null +++ b/devstack/upgrade/settings @@ -0,0 +1,5 @@ +# eventually this will be handled by this being in the ironic tree +if is_service_enabled ir-api; then + register_project_for_upgrade ironic + register_db_to_save ironic +fi \ No newline at end of file diff --git a/devstack/upgrade/shutdown.sh b/devstack/upgrade/shutdown.sh new file mode 100755 index 0000000000..76ef2c54f9 --- /dev/null +++ b/devstack/upgrade/shutdown.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# +# + +set -o errexit + +source $GRENADE_DIR/grenaderc +source $GRENADE_DIR/functions + +# We need base DevStack functions for this +source $BASE_DEVSTACK_DIR/functions +source $BASE_DEVSTACK_DIR/stackrc # needed for status directory +source $BASE_DEVSTACK_DIR/lib/tls +source $BASE_DEVSTACK_DIR/lib/ironic + +set -o xtrace + +stop_ironic diff --git a/devstack/upgrade/upgrade.sh b/devstack/upgrade/upgrade.sh new file mode 100755 index 0000000000..ca0dfd154e --- /dev/null +++ b/devstack/upgrade/upgrade.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash + +# ``upgrade-ironic`` + +echo "*********************************************************************" +echo "Begin $0" +echo "*********************************************************************" + +# Clean up any resources that may be in use +cleanup() { + set +o errexit + + echo "*********************************************************************" + echo "ERROR: Abort $0" + echo "*********************************************************************" + + # Kill ourselves to signal any calling process + trap 2; kill -2 $$ +} + +trap cleanup SIGHUP SIGINT SIGTERM + +# Keep track of the grenade directory +RUN_DIR=$(cd $(dirname "$0") && pwd) + +# Source params +source $GRENADE_DIR/grenaderc + +# Import common functions +source $GRENADE_DIR/functions + +# This script exits on an error so that errors don't compound and you see +# only the first error that occurred. +set -o errexit + +# Upgrade Ironic +# ============ + +# Duplicate some setup bits from target DevStack +source $TARGET_DEVSTACK_DIR/stackrc +source $TARGET_DEVSTACK_DIR/lib/tls +source $TARGET_DEVSTACK_DIR/lib/nova +source $TARGET_DEVSTACK_DIR/lib/neutron-legacy +source $TARGET_DEVSTACK_DIR/lib/ironic + +# Print the commands being run so that we can see the command that triggers +# an error. It is also useful for following allowing as the install occurs. +set -o xtrace + +function is_nova_migration { + # Deterine whether we're "upgrading" from another compute driver + local old_driver=$(source $BASE_DEVSTACK_DIR/functions; source $BASE_DEVSTACK_DIR/localrc; echo $VIRT_DRIVER) + [ "$old_driver" != "ironic" ] +} + +# Duplicate all required devstack setup that is needed before starting +# Ironic during a sideways upgrade, where we are migrating from an +# devstack environment without Ironic. +function init_ironic { + # We need to source credentials here but doing so in the gate will unset + # HOST_IP. + local tmp_host_ip=$HOST_IP + source $TARGET_DEVSTACK_DIR/openrc admin admin + HOST_IP=$tmp_host_ip + IRONIC_BAREMETAL_BASIC_OPS="True" + $TARGET_DEVSTACK_DIR/tools/install_prereqs.sh + initialize_database_backends + recreate_database ironic utf8 + install_nova_hypervisor + configure_nova_hypervisor + configure_ironic_dirs + create_ironic_cache_dir + configure_ironic + create_ironic_accounts + configure_tftpd + configure_iptables + configure_ironic_auxiliary + upload_baremetal_ironic_deploy + stop_nova_compute || true + start_nova_compute +} + + +# Save current config files for posterity +if [[ -d $IRONIC_CONF_DIR ]] && [[ ! -d $SAVE_DIR/etc.ironic ]] ; then + cp -pr $IRONIC_CONF_DIR $SAVE_DIR/etc.ironic +fi + +stack_install_service ironic + +# If we are sideways upgrading and migrating from a base deployed /w +# VIRT_DRIVER=fake, we need to run Ironic install, config and init +# code from devstac. +if is_nova_migration ; then + init_ironic +fi + +$IRONIC_BIN_DIR/ironic-dbsync --config-file=$IRONIC_CONF_FILE + +start_ironic + +# calls upgrade-ironic for specific release +upgrade_project ironic $RUN_DIR $BASE_DEVSTACK_BRANCH $TARGET_DEVSTACK_BRANCH + +# Don't succeed unless the services come up +ensure_services_started ironic-api ironic-conductor +ensure_logs_exist ir-cond ir-api + +set +o xtrace +echo "*********************************************************************" +echo "SUCCESS: End $0" +echo "*********************************************************************"