#!/bin/bash

# description: GPUdb HA Solution
# chkconfig: 2345 99 01

### BEGIN INIT INFO
# Provides:             gpudb-ha
# Required-Start:		gpudb
# Should-Start:
# Required-Stop:		gpudb
# Should-Stop:
# Default-Start:        3 5
# Default-Stop:         0 1 2 6
# Short-Description:    Run the GPUdb HA Solution
# Description:          Run the GPUdb HA Solution
### END INIT INFO


# ---------------------------------------------------------------------------

USAGE_STR="
This script can start and stop all process involved with GPUdb HA (GPUdb, GPUdb HA, and GPUdb MQ). 
If you are restarting gpudb/gpudb-ha, you should leave gpudb-mq up and running since it is a replication framework.

Usage: $0 {start|stop|status|restart}

all-*   - starts/stops/returns status of all processes (gpudb, gpudb-ha, and gpudb-mq)
gpudb-* - starts/stops/returns status of only gpudb and gpudb-ha
"
# ---------------------------------------------------------------------------

USER=gpudb
GROUP=gpudb
if [ "`whoami`" == "$USER" ]; then
	START_PROG="eval"

    if [ -z "${HOME}" ]; then
        export LANG="en_US.UTF-8"
        export HOME="$(eval "echo ~$(whoami)")"
    fi
else
	START_PROG="su - $USER -c"
fi

HA_DIR=/opt/gpudb/ha/

mq_start(){
	$START_PROG "${HA_DIR}/bin/gpudb-mq start"
}

mq_stop(){
	$START_PROG "${HA_DIR}/bin/gpudb-mq stop"
}

mq_status(){
	$START_PROG "${HA_DIR}/bin/gpudb-mq status"
}

mq_restart(){
	$START_PROG "${HA_DIR}/bin/gpudb-mq restart"
}

case "$1" in
	'start')
        mq_start
		;;
	'stop')
        mq_stop
		;;
	'status')
		mq_status
		;;
	'restart')
		mq_stop
		sleep 2
		mq_start
		;;

    # Keeping for backwards compatibility for now
	'gpudb-start')
		/etc/init.d/gpudb start
		;;
	'gpudb-stop')
		/etc/init.d/gpudb stop
		;;
	'gpudb-status')
		/etc/init.d/gpudb status
		;;
	'all-start')
		mq_start
		/etc/init.d/gpudb start
		;;
	'all-stop')
		/etc/init.d/gpudb stop
		mq_stop
		;;
	'all-status')
		/etc/init.d/gpudb status
		mq_status
		;;
	'mq-start')
		mq_start
		exit $?
		;;
	'mq-stop')
		mq_stop
		exit $?
		;;
	'mq-status')
		mq_status
		exit $?
		;;
	'mq-restart')
		mq_restart
		exit $?
		;;
	*)
		echo "$USAGE_STR"
		;;
esac
exit 0
