modularize mysql db saving

let projects declare that they will have a database to be saved, and
we'll do it for them, in the mysql case. Eventually other saving
issues should be left to per project save-state.sh scripts.

services which aren't always enabled in grenade jobs have their
settings files guarded with conditionals. Eventually we'll do
conditional loading of these settings files, however for now this lets
the rest of the infrastructure around running actions based on
PLUGIN_DIRS and UPGRADE_SERVICES be *non* conditional, which
simplifies them.

Change-Id: I06cad95ca319e4403772e5fb394c0f8965e0bf9d
This commit is contained in:
Sean Dague 2015-04-08 11:40:41 -04:00
parent 176ab63307
commit 7546f56cce
10 changed files with 45 additions and 24 deletions

View File

@ -21,27 +21,14 @@ set +o xtrace
function save_data {
local release=$1
local dir=$2
local mysql_services="keystone glance nova cinder ironic"
echo_summary "Sourcing $release DevStack config"
source $dir/functions
source $dir/stackrc
echo_summary "Dumping $release databases"
mkdir -p $SAVE_DIR
if grep -q 'connection *= *mysql' /etc/ceilometer/ceilometer.conf; then
mysql_services+=" ceilometer"
elif grep -q 'connection *= *mongo' /etc/ceilometer/ceilometer.conf; then
save_mysql_dbs $release $dir
# TODO(sdague): this should go into per project save-state scripts
if grep -q 'connection *= *mongo' /etc/ceilometer/ceilometer.conf; then
mongodump --db ceilometer --out $SAVE_DIR/ceilometer-dump.$release
fi
for db in $mysql_services ; do
if mysql -uroot -p$MYSQL_PASSWORD -c $db -e ''; then
mysqldump -uroot -p$MYSQL_PASSWORD $db >$SAVE_DIR/$db.sql.$release
fi
done
neutron_db_names=$(mysql -uroot -p$MYSQL_PASSWORD -e "show databases;" | grep neutron || :)
for neutron_db in $neutron_db_names; do
mysqldump -uroot -p$MYSQL_PASSWORD $neutron_db >$SAVE_DIR/$neutron_db.sql.$release
done
}

View File

@ -218,6 +218,7 @@ function run_javelin() {
# Install 'Base' Build of OpenStack
# =================================
ENABLED_SERVICES=$(source $BASE_DEVSTACK_DIR/stackrc; echo $ENABLED_SERVICES)
load_settings
if [[ "$RUN_BASE" == "True" ]]; then

View File

@ -14,6 +14,25 @@
# License for the specific language governing permissions and limitations
# under the License.
DATABASES_TO_SAVE=""
# save_data
function save_mysql_dbs {
local release=$1
local dir=$2
# pull the mysql pass from the old config
local mysql_pass=$(source $dir/stackrc && echo $MYSQL_PASSWORD)
for db in $DATABASES_TO_SAVE; do
mysqldump -uroot -p$mysql_pass $db >$SAVE_DIR/$db.sql.$release
done
}
# register a database we should save
function register_db_to_save {
for db in $@; do
DATABASES_TO_SAVE+=" $db"
done
}
function upgrade_service {
local local_service=$1

View File

@ -1 +1,2 @@
register_project_for_upgrade keystone
register_project_for_upgrade keystone
register_db_to_save keystone

View File

@ -1 +1,4 @@
register_project_for_upgrade ceilometer
register_project_for_upgrade ceilometer
if grep -q 'connection *= *mysql' /etc/ceilometer/ceilometer.conf; then
register_db_to_save ceilometer
fi

View File

@ -1 +1,2 @@
register_project_for_upgrade glance
register_project_for_upgrade glance
register_db_to_save glance

View File

@ -1 +1,5 @@
register_project_for_upgrade neutron
# eventually this conditional will end up at a different level
if is_service_enabled q-svc; then
register_project_for_upgrade neutron
register_db_to_save neutron
fi

View File

@ -1 +1,2 @@
register_project_for_upgrade nova
register_project_for_upgrade nova
register_db_to_save nova

View File

@ -1 +1,2 @@
register_project_for_upgrade cinder
register_project_for_upgrade cinder
register_db_to_save cinder

View File

@ -1 +1,4 @@
register_project_for_upgrade ironic
if is_ironic_enabled; then
register_project_for_upgrade ironic
register_db_to_save ironic
fi