done
}
+function checkpoint_planetlab_db()
+{
+ dumpfile=$1
+ pg_dump -U $PLC_DB_USER $PLC_DB_NAME > $dumpfile
+ check
+}
+
+function restore_planetlab_db()
+{
+ dumpfile=$1
+ if [ -n "$dumpfile" ] ; then
+ [ -f "$dumpfile" ] && psql -a -U $PLC_DB_USER $PLC_DB_NAME < $dumpfile
+ check
+ fi
+}
+
+# use a single date of this script invocation for the dump_*_db functions.
+DATE=$(date +"%Y-%m-%d-%H-%M-%S")
+
# Dumps the database - optional argument to specify filename suffix
function dump_planetlab_db()
{
if [ -n "$1" ] ; then suffix="-$1" ; else suffix="" ; fi
- dump=/var/lib/pgsql/backups/$(date +"$PLC_DB_NAME.%Y-%m-%d-%H-%M-%S${suffix}.sql")
- pg_dump -U $PLC_DB_USER $PLC_DB_NAME > $dump
+ dumpfile=/var/lib/pgsql/backups/$(date +"${PLC_DB_NAME}.${DATE}${suffix}.sql")
+ checkpoint_planetlab_db $dumpfile
+}
+
+function restore_drupal_db()
+{
+ dumpfile=$1
+ if [ -n "$dumpfile" ] ; then
+ [ -f "$dumpfile" ] && psql -a -U $PLC_DB_USER drupal < $1
+ check
+ fi
+}
+
+function checkpoint_drupal_db()
+{
+ dumpfile=$1
+ pg_dump -U $PLC_DB_USER drupal > $dumpfile
check
}
function dump_drupal_db()
{
- dump=/var/lib/pgsql/backups/$(date +"drupal.%Y-%m-%d-%H-%M-%S.sql")
- pg_dump -U $PLC_DB_USER drupal > $dump
+ dumpfile=/var/lib/pgsql/backups/$(date +"drupal.${DATE}.sql")
+ checkpoint_drupal_db $dumpfile
check
}
check
}
-if [ "$PLC_DB_ENABLED" != "1" ] ; then
- exit 0
-fi
-
+[ $PLC_DB_ENABLED -ne 1 ] && exit 0
case "$1" in
start)
MESSAGE=$"Bootstrapping the database"
psql -U $PLC_DB_USER -c "UPDATE persons SET email='$PLC_API_MAINTENANCE_USER' WHERE person_id=1" $PLC_DB_NAME
# Update the Drupal site_name variable
+ # also turn off drupal native user registration
psql -U $PLC_DB_USER drupal <<EOF
DELETE FROM variable WHERE name = 'site_name';
INSERT INTO variable (name, value) VALUES ('site_name', 's:${#PLC_NAME}:"$PLC_NAME";');
+DELETE FROM variable WHERE name = 'user_register';
+INSERT INTO variable (name, value) VALUES ('user_register', 's:1:"0";');
+DELETE FROM cache;
EOF
# Bootstrap the DB
result "$MESSAGE"
;;
+ checkpoint)
+ MESSAGE=$"Checkpointing the databases"
+ checkpoint_planetlab_db $2
+ checkpoint_drupal_db $3
+ ;;
+
+ restore)
+ MESSAGE=$"Restoring the databases from checkpoint files"
+ restore_planetlab_db $2
+ restore_drupal_db $3
+ ;;
+
clean-dump)
MESSAGE=$"Cleaning old database dumps"
dialog "$MESSAGE"
result "$MESSAGE"
;;
+ stop)
+ MESSAGE="Ignoring request to stop myplc databases"
+ dialog "$MESSAGE"
+ result ""
+ ;;
+
*)
- echo "Usage: $0 [start|migrate|dump|clean-dump]"
+ echo "Usage: $0 [start|migrate|dump|checkpoint|restore|clean-dump|stop]"
exit 1
;;
esac