Skip to content

Instantly share code, notes, and snippets.

@mccun934
Created July 17, 2012 15:56
Show Gist options
  • Save mccun934/3130256 to your computer and use it in GitHub Desktop.
Save mccun934/3130256 to your computer and use it in GitHub Desktop.
#!/bin/bash
SRV="sudo /sbin/service"
if [ -f /etc/sysconfig/katello ]; then
# load configuration values
. /etc/sysconfig/katello
else
echo "Katello does not seem to be installed on this machine" 1>&2
exit 1
fi
# default configuration values (should be the same as in our sysv init script)
KATELLO_HOME=${KATELLO_HOME:-/usr/share/katello}
KATELLO_ENV=${KATELLO_ENV:-production}
DEPLOYMENT="katello"
function usage {
echo "Reset your Katello databases. Wipes all Katello, Pulp and Candlepin"
echo "Usage: `basename $0` [-f|--force] [-h|--help] "
echo " <env: development, production> <katello-rakefile-dir>"
echo "example:"
echo "$ `basename $0` development /home/youruser/dev/katello/src"
exit 1
}
# Stolen from:
# http://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line-options
USAGE=0
FORCE=0
while true; do
case "$1" in
-h | --help ) USAGE=1; shift ;;
-f | --force ) FORCE=1; shift ;;
-- ) shift; break ;;
* ) break ;;
esac
done
if [ "$USAGE" = "1" ];
then
usage
fi
# If we are using arguments
if ([ $# -gt 0 ])
then
KATELLO_ENV=$1
KATELLO_HOME=$2
echo "Resetting [$KATELLO_ENV] environment found @: [$KATELLO_HOME]"
else
KATELLO_ENV=${KATELLO_ENV:-production}
KATELLO_HOME=${KATELLO_HOME:-/usr/share/katello}
echo "Defaulting [$KATELLO_ENV] environment found @: [$KATELLO_HOME]"
fi
if [ $KATELLO_PREFIX = "/headpin" -o $KATELLO_PREFIX = "/sam" ] ; then
DEPLOYMENT="sam"
fi
echo -e "\n"
echo '***********************************************************'
echo "THIS SCRIPT WILL ERASE KATELLO / CANDLEPIN / PULP DATABASES"
echo '***********************************************************'
echo -e "\n"
echo "All data from all systems will be erased completely!"
echo -e "\n"
echo "This script only works with PostgreSQL database."
echo -e "\n"
echo "It is strongly recommended to back up databases:"
if [ $DEPLOYMENT = "katello" ] ; then
echo " # mongodump --db pulp_database --out - > pulp_database.json"
fi
echo " # pg_dump -c candlepin > candlepin_db.sql"
echo " # pg_dump -c katello > katello_db.sql"
echo -e "\n"
if [ ! "$FORCE" = "1" ]; then
read -p "Are you sure you want reset your [$KATELLO_ENV] environment? (yes/no)? "
[ "$REPLY" != "yes" ] && exit 1
fi
if [ ! -f "$KATELLO_HOME/Rakefile" ]; then
echo "** ERROR **"
echo "Katello Rakefile not not found in $KATELLO_HOME" 1>&2
exit 1
fi
echo "Erasing all data..."
function stop_if_running {
$SRV "$1" status >/dev/null && $SRV "$1" stop
}
function start_unless_running {
$SRV "$1" status >/dev/null || $SRV "$1" start
}
# Only stop the services if we are in production mode
if [ $KATELLO_ENV = "production" ]
then
echo "Stopping Katello instance"
stop_if_running katello
echo "Stopping Katello jobs instance"
stop_if_running katello-jobs
fi
if [ $DEPLOYMENT = "katello" ] ; then
echo "Stopping Pulp instance"
stop_if_running pulp-server
fi
echo "Stopping Candlepin instance"
stop_if_running tomcat6
if [ $DEPLOYMENT = "katello" ] ; then
echo "Dropping Pulp database"
# mongo sometimes hang in F14/F15 (workaround 725601)
#echo 'db.dropDatabase();' | mongo pulp_database
$SRV mongod status >/dev/null && $SRV mongod stop
sudo rm -rf /var/lib/mongodb/pulp_database*
$SRV mongod start
echo "Initializing Pulp database"
sleep 10s # let mongo initialize
sudo /usr/bin/pulp-migrate
fi
echo "Initializing Candlepin database"
sudo /usr/share/candlepin/cpdb --drop --create
sudo /usr/share/candlepin/cpsetup -s -k `cat /etc/katello/keystore_password-file`
# cpsetup alters tomcat configuration, use the original
sudo cp /etc/tomcat6/server.xml.original /etc/tomcat6/server.xml
if [ $DEPLOYMENT = "katello" ] ; then
echo "Starting Pulp instance"
$SRV pulp-server start
fi
echo "Starting Candlepin instance"
$SRV tomcat6 restart
echo "Initializing Katello database"
# cannot use initdb for this (BZ 745542)
pushd $KATELLO_HOME >/dev/null
RAILS_ENV=$KATELLO_ENV rake setup --trace RAILS_RELATIVE_URL_ROOT=$KATELLO_PREFIX 2>&1
popd >/dev/null
# Only stop the services if we are in production mode
if [ $KATELLO_ENV = "production" ]
then
echo "Starting Katello instance"
$SRV katello start
echo "Starting Katello jobs instance"
$SRV katello-jobs start
fi
echo "DONE. CHECK ALL THE MESSAGES ABOVE!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment