#!/bin/bash
#
# sp_dbexport
#
# (c) 2012 SUSE Linux GmbH, Germany.
# GNU Public License. No warranty.
#
# Version: 2012-03-15
#
# mostly taken from migrate.sh
#

EXE="$0"

SM_CFG="/etc/rhn/rhn.conf"

DB_ADM="oracle"
DB_USER="susemanager"
DB_PASS=""
DB_SID="xe"
DB_ZIP="n"
DUMP_FILE="/tmp/dbexport.dmp"
DUMP_LOG="/tmp/$(basename $0).log"


function help() {
	echo "usage: $0 [OPTION]"
	echo
	echo "dump SUSE Manager database."
	echo
	echo " -g	guess parameters"
	echo " -d	dump database"
	echo " -v	show version"
	echo " -h	show help"
	echo
	echo "(mostly taken from migrate.sh)"
}


function ask_yesno() {
	read -p "Continue [yes/no]? " -a YN
	YN=$(echo $YN | tr "YES" "yes")
	test $YN = "yes" -o $YN = "y" || exit 3
}


function guess_db() {
	DB_USER=$(awk '$1=="db_user" {print $3}' $SM_CFG)
	DB_PASS=$(awk '$1=="db_password" {print $3}' $SM_CFG)
	DB_SID=$(awk '$1=="db_name" {print $3}' $SM_CFG)
	id $DB_ADM >/dev/null || DB_ADM=""
	DB_HOME=$(awk -F":" '$1=="'${DB_ADM}'" {print $6}' /etc/passwd)
	DB_SIZE=$(du -shP $DB_HOME | awk '{print $1}')
	echo "DB_ADM: $DB_ADM"
	echo "DB_HOME: $DB_HOME"
	echo "DB_SIZE: $DB_SIZE"
	echo "DB_USER: $DB_USER"
	echo "DB_PASS: $DB_PASS"
	echo "DB_SID: $DB_SID"
}


function export_db() {
	echo "Need some parameters."
	echo -n "DB_USER: "; read DB_USER
	echo -n "DB_PASS: "; read DB_PASS
	echo -n "DB_SID: ";  read DB_SID
	echo -n "DUMP_FILE: "; read DUMP_FILE
	echo "DUMP_LOG: $DUMP_LOG"
	DISK_FREE=$(df -hP $(dirname $DUMP_FILE) |\
		 awk '$1!="Filesystem" {print $4}')
	echo "DISK_FREE: $DISK_FREE"
	echo
	ask_yesno

	echo "Dumping database. Please wait..."
	su -s /bin/bash - $DB_ADM -c \
		"exp ${DB_USER}/${DB_PASS}@$DB_SID owner=$DB_USER \
		compress=$DB_ZIP consistent=y statistics=none \
		file=$DUMP_FILE log=$DUMP_LOG"
	echo
	echo "RETURN: $?"
	echo "DUMP_FILE: $DUMP_FILE"
	echo "DUMP_LOG: $DUMP_LOG"
}


# main()
case "$1" in
	-g|--guess)
		guess_db
	;;
	-d|--dump)
		export_db
	;;
	-v|--version)
		echo -n "$(basename $EXE) "
		head -11 $EXE | grep "^# Version: "
	;;
	*)
        	help
	;;
esac
#
