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
This commit is contained in:
Jim Rollenhagen 2015-12-10 17:52:24 -08:00
parent a0dcef410e
commit c0a72cf749
3 changed files with 135 additions and 0 deletions

View File

@ -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

18
devstack/upgrade/shutdown.sh Executable file
View File

@ -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

112
devstack/upgrade/upgrade.sh Executable file
View File

@ -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 "*********************************************************************"