diff --git a/functions b/functions index f1f9ebda..3ced8100 100644 --- a/functions +++ b/functions @@ -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 } diff --git a/grenade.sh b/grenade.sh index 07d7a77c..6c3cd663 100755 --- a/grenade.sh +++ b/grenade.sh @@ -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 diff --git a/inc/upgrade b/inc/upgrade index 861242eb..c646669f 100644 --- a/inc/upgrade +++ b/inc/upgrade @@ -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 diff --git a/projects/10_keystone/settings b/projects/10_keystone/settings index 8a409ca0..36f6cf8e 100644 --- a/projects/10_keystone/settings +++ b/projects/10_keystone/settings @@ -1 +1,2 @@ -register_project_for_upgrade keystone \ No newline at end of file +register_project_for_upgrade keystone +register_db_to_save keystone diff --git a/projects/20_ceilometer/settings b/projects/20_ceilometer/settings index 698c3feb..38e41a67 100644 --- a/projects/20_ceilometer/settings +++ b/projects/20_ceilometer/settings @@ -1 +1,4 @@ -register_project_for_upgrade ceilometer \ No newline at end of file +register_project_for_upgrade ceilometer +if grep -q 'connection *= *mysql' /etc/ceilometer/ceilometer.conf; then + register_db_to_save ceilometer +fi \ No newline at end of file diff --git a/projects/40_glance/settings b/projects/40_glance/settings index 1893781f..24323a13 100644 --- a/projects/40_glance/settings +++ b/projects/40_glance/settings @@ -1 +1,2 @@ -register_project_for_upgrade glance \ No newline at end of file +register_project_for_upgrade glance +register_db_to_save glance \ No newline at end of file diff --git a/projects/50_neutron/settings b/projects/50_neutron/settings index b1241705..00c4b9cd 100644 --- a/projects/50_neutron/settings +++ b/projects/50_neutron/settings @@ -1 +1,5 @@ -register_project_for_upgrade neutron \ No newline at end of file +# 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 \ No newline at end of file diff --git a/projects/60_nova/settings b/projects/60_nova/settings index 4a243f32..a08f0a18 100644 --- a/projects/60_nova/settings +++ b/projects/60_nova/settings @@ -1 +1,2 @@ -register_project_for_upgrade nova \ No newline at end of file +register_project_for_upgrade nova +register_db_to_save nova \ No newline at end of file diff --git a/projects/70_cinder/settings b/projects/70_cinder/settings index ba358a76..2d27da44 100644 --- a/projects/70_cinder/settings +++ b/projects/70_cinder/settings @@ -1 +1,2 @@ -register_project_for_upgrade cinder \ No newline at end of file +register_project_for_upgrade cinder +register_db_to_save cinder \ No newline at end of file diff --git a/projects/90_ironic/settings b/projects/90_ironic/settings index 73fb5fdd..4dffe875 100644 --- a/projects/90_ironic/settings +++ b/projects/90_ironic/settings @@ -1 +1,4 @@ -register_project_for_upgrade ironic \ No newline at end of file +if is_ironic_enabled; then + register_project_for_upgrade ironic + register_db_to_save ironic +fi \ No newline at end of file