682a8736a3
This adds some conditional logic around when mysql is used based on the configured database type in the devstack rc file. TODOs are left in place for supporting postgresql which can be fleshed out when we have a grenade-postgresql CI job to verify the changes. Change-Id: I30e7ee0c8de1add3c51824e30ca7ad103bb4a876
147 lines
4.2 KiB
Bash
147 lines
4.2 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Copyright 2015 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
#
|
|
# functions - Grenade-specific functions
|
|
#
|
|
# The following variables are assumed to be defined by certain functions:
|
|
#
|
|
# - ``GRENADE_DIR``
|
|
# - ``TARGET_DEVSTACK_DIR``
|
|
# - ``MYSQL_PASSWORD``
|
|
# - ``SAVE_DIR``
|
|
|
|
|
|
# Save trace setting
|
|
_XTRACE_GRENADE_FUNCTIONS=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
# Include the common functions
|
|
GRENADE_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
|
|
source ${TARGET_DEVSTACK_DIR}/functions
|
|
source ${TARGET_DEVSTACK_DIR}/lib/stack
|
|
source ${GRENADE_DIR}/inc/upgrade
|
|
source ${GRENADE_DIR}/inc/plugin
|
|
|
|
# just like source, except turn off tracing, as it just gets in the way
|
|
function source_quiet {
|
|
XTRACE=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
source $@
|
|
$XTRACE
|
|
}
|
|
|
|
# TODO: we'd really like to use the ping_check_functions that exist in
|
|
# devstack, however they are all wrapped up in lib/neutron-legacy
|
|
# gorp. Until that can be cleanly separated we need to keep our own
|
|
# copy here.
|
|
#
|
|
# ping_check_public $ip $timeout [False] - ping an machine on a public
|
|
# ip address. Should work with either neutron or nova-net. Also works
|
|
# to ensure the guest is not up if you pass False as last parameter.
|
|
function ping_check_public {
|
|
local ip=$1
|
|
local boot_timeout=$2
|
|
local expected=${3:-"True"}
|
|
local check_command=""
|
|
if [[ "$expected" = "True" ]]; then
|
|
check_command="while ! ping -c1 -w1 $ip; do sleep 1; done"
|
|
else
|
|
check_command="while ping -c1 -w1 $ip; do sleep 1; done"
|
|
fi
|
|
if ! timeout $boot_timeout sh -c "$check_command"; then
|
|
if [[ "$expected" = "True" ]]; then
|
|
die $LINENO "[Fail] Couldn't ping server"
|
|
else
|
|
die $LINENO "[Fail] Could ping server"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# save_data() dumps service datastores into SAVE_DIR for base or
|
|
# target release.
|
|
function save_data {
|
|
local release=$1
|
|
local dir=$2
|
|
echo_summary "Dumping $release databases"
|
|
mkdir -p $SAVE_DIR
|
|
local db_type=$(
|
|
set +o xtrace &&
|
|
source $dir/stackrc &&
|
|
echo $DATABASE_TYPE)
|
|
if [[ "${db_type}" == "mysql" ]]; then
|
|
save_mysql_dbs $release $dir
|
|
else
|
|
echo_summary "TODO: save state for $db_type databases"
|
|
fi
|
|
}
|
|
|
|
function worlddump {
|
|
local name=$1
|
|
if [[ -n "$name" ]]; then
|
|
name="-n $name"
|
|
fi
|
|
if [[ -x $TARGET_DEVSTACK_DIR/tools/worlddump.py ]]; then
|
|
$TARGET_DEVSTACK_DIR/tools/worlddump.py $name -d $LOGDIR
|
|
sleep 1
|
|
else
|
|
echo "WARNING: Attempted to worlddump but couldn't find $TARGET_DEVSTACK_DIR/tools/worlddump.py"
|
|
fi
|
|
}
|
|
|
|
|
|
# Setup Exit Traps for debug purposes
|
|
trap exit_trap EXIT
|
|
function exit_trap {
|
|
# really important that this is the *first* line in this
|
|
# function, otherwise we corrupt the exit code
|
|
local r=$?
|
|
|
|
# we don't need tracing during this
|
|
set +o xtrace
|
|
|
|
# we have to turn off errexit at this point, otherwise we're going
|
|
# to exit from this function early when the while caller ends
|
|
# (with a bad exit)
|
|
set +o errexit
|
|
|
|
if [[ $r -ne 0 ]]; then
|
|
# unwind the call stack on failures
|
|
local frame=0
|
|
while caller $frame; do
|
|
((frame++));
|
|
done
|
|
echo "Exit code: $r"
|
|
worlddump
|
|
fi
|
|
exit $r
|
|
}
|
|
|
|
|
|
# Force a shorter connect timeout, if networking has gone off the
|
|
# rails we could potentially be hanging around for minutes on every
|
|
# ssh attempt due to TCP timeouts/retries.
|
|
#
|
|
# Don't check or store host keys, which makes it easier for local dev
|
|
# when hosts come and go.
|
|
#
|
|
# Auto-accept whatever we connect to
|
|
FSSH="ssh -v -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
|
|
|
|
|
|
# Restore xtrace
|
|
$_XTRACE_GRENADE_FUNCTIONS
|