grenade/functions
Matt Riedemann 682a8736a3 Only call save_mysql_dbs if using mysql
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
2018-09-18 15:29:48 -04:00

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