#! /bin/bash

# This script is run as root only.
# Though this script calls itself as oracle to create the temporary dumps.
# Final dumps are created via root user.

alias
# Sourcing Command Variables
if [ -e /opt/sonus/staging/sonusCommands.sh ] && [ -e /opt/sonus/staging/sonusCommonFiles.sh ]; then
    source /opt/sonus/staging/sonusCommands.sh
    source /opt/sonus/staging/sonusCommonFiles.sh
elif [ -e /opt/sonus/bin/sonusCommands.sh ] && [ -e /opt/sonus/bin/sonusCommonFiles.sh ]; then
    source /opt/sonus/bin/sonusCommands.sh
    source /opt/sonus/bin/sonusCommonFiles.sh
fi

if [ -z $SONUS_LOG_SSDB_DIR ]; then
    SONUS_LOG_SSDB_DIR="/var/log/sonus/ssdb"	 
fi

if [ -z $SONUS_PSX_SQL_DIR ]; then
    SONUS_PSX_SQL_DIR="/opt/sonus/sbx/psx/sql"	 
fi

curTime="`date +%y%m%d%H%M%S`"
logFile="$SONUS_TMP_DIR/exportDB.$curTime.log"

pg_exp_for_pg()
{
    $ECHO "Export SSDB from PostgreSQL ......" | tee -a  $logFile
    $SERVICE_SH postgresql status
    if [[ $? -eq 0 ]]; then
	  $SU - postgres -c "pg_dump -a -n dbimpl -n platform -f $SONUS_TMP_DIR/ssdata.sql -d ssdb --exclude-table-data 'dbimpl.rint_pkg_keys' --exclude-table-data 'dbimpl.route_calltype_check_pkg_route_seqs'" >> $logFile 2>&1
    else
      $ECHO "Postgres not Running, Starting now..." | tee -a  $logFile
	  $SERVICE_SH postgresql start >> $logFile 2>&1
	  $SU - postgres -c "pg_dump -a -n dbimpl -n platform -f $SONUS_TMP_DIR/ssdata.sql -d ssdb" >> $logFile 2>&1
	  $SERVICE_SH postgresql stop >> $logFile 2>&1
    fi
}

####  Main  ####
if [[ -d "$POSTGRES_DATA/main" ]]; then
	$ECHO "Exporting to Postgres dumpFile=$pgdumpFullFilePath" | tee -a $logFile
	pg_exp_for_pg
fi

if [[ "`$WHOAMI`" = "root" ]]; then
    if [[ $# = 2 && $1 = '-file' ]]; then
		dumpFile=$2
    else
		SBC_VERSION="`/opt/sonus/sbx/scripts/swinfo.sh|$AWK -F: '/SBC:/{print \$2}' | $HEAD -1 | $TR -d ' '`"
		dumpFile=$HOME_ADMIN/ssdata_${SBC_VERSION}_$curTime.sql	
    fi
    
	pgdumpFile="pg_"`$BASENAME $dumpFile`
	pgdumpFileDir=`$DIRNAME $dumpFile`
	pgdumpFullFilePath=$pgdumpFileDir"/"$pgdumpFile
	

	$ECHO "Postgres dumpFile=$pgdumpFullFilePath" | tee -a $logFile
	
	# Postgres dump
    if [ -f $SONUS_TMP_DIR/ssdata.sql ]; then
	
		$MV $SONUS_TMP_DIR/ssdata.sql $pgdumpFullFilePath
		$CHOWN sonusadmin:sonus $pgdumpFullFilePath
		$CHMOD 644 $pgdumpFullFilePath
		$LS -l $pgdumpFullFilePath >> $logFile 2>&1
		$LN -sf $pgdumpFullFilePath $SONUS_PSX_SQL_DIR/ssdata.sql
    fi
	
	# Oracle dump
	# Oracle export log move is handled by export script.
	# Ownership of Oracle dmp is kept with oracle user.
	if [ -f $SONUS_TMP_DIR/sonusdb.dmp ]; then
		$MV $SONUS_TMP_DIR/sonusdb.dmp $dumpFile
		$CHMOD 644 $dumpFile
		$LS -l $dumpFile >> $logFile 2>&1
    fi
	
    if [ -d $SONUS_LOG_SSDB_DIR ]; then
		$MV $logFile  $SONUS_LOG_SSDB_DIR/`basename $pgdumpFullFilePath`.exp.log
    fi
fi
