#! /bin/sh

# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 72 44
# description: Tango Controls Starter service script
# processname: DataBaseds
# pidfile: /var/run/Starter.pid 

# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides:          Starter 
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Tango Starter
# Description:       Tango Controls Starter service script
### END INIT INFO

# Author: Marco De Marco <demarco@oats.inaf.it>

#---------------------------------------------------------------------------
# Tango listening port
TANGO_PORT=20000

# Tango installation path
TANGO_PATH="/usr/local/tango"
OMNIORB_PATH="/usr/local/omniORB"
ZEROMQ_PATH="/usr/local/zeromq"

# Tango user and group
TANGO_USR="controls"
TANGO_GRP="controls"

# Mysql credential to access tango database
MYSQL_USER=controls
MYSQL_PASSWORD=pippo123
#---------------------------------------------------------------------------

# Compose Tango host and library path variables
HOSTNAME=$(hostname)
TANGO_HOST="${HOSTNAME}:$TANGO_PORT"

# Export necessary variables
export TANGO_HOST
export MYSQL_USER
export MYSQL_PASSWORD

# PATH variable
PATH=/sbin:/usr/sbin:/bin:/usr/bin

# Daemon name and description
NAME=Starter
DESC="Tango controls Starter script"
SCRIPTNAME=/etc/init.d/tango-starter

# Pid file
PIDFILE=/var/run/$NAME.pid

# Setup logging path
TANGO_LOG_DIR="/var/log/tango"
TANGO_LOG_FILE="$TANGO_LOG_DIR/$NAME.log"

# Daemon path and parameters
DAEMON=$TANGO_PATH/bin/$NAME
DAEMON_ARGS="${HOSTNAME} > $TANGO_LOG_FILE 2>&1 &"

# source function library
. /etc/rc.d/init.d/functions

# Use LSB init script functions for printing messages, if possible                                                                     
lsb_functions="/lib/lsb/init-functions"                                                                                                
if test -f $lsb_functions ; then                                                                                                       
    . $lsb_functions                                                                                                                     
else
	log_success_msg () {
		echo -n $*; success "$*"; echo
	}
	log_failure_msg () {
		echo -n $*; failure "$*"; echo
	}
	log_warning_msg () {
		echo -n $*; warning "$*"; echo
	}
fi  

# Function that starts the daemon/service
do_start () {
	#echo -n "Starting $DESC: "
	echo -n "Starting $NAME: "
	if [ -f $PIDFILE ] ; then
		log_success_msg "is already running with PID `cat ${PIDFILE}`"
		return 0
	fi
	mkdir -p $TANGO_LOG_DIR
	chown $TANGO_USR:$TANGO_GRP $TANGO_LOG_DIR
	touch $TANGO_LOG_FILE
	chown $TANGO_USR:$TANGO_GRP $TANGO_LOG_FILE 
	daemon --user $TANGO_USR --pidfile $PIDFILE $DAEMON $DAEMON_ARGS
	RETVAL=$?
	echo
	if [ $RETVAL -eq 0 ]; then
		PID=`pidof $NAME`
		if [ $? !=  0 ] ; then
			sleep 1
			echo "`pidof $NAME`" > $PIDFILE
		else
			echo $PID > $PIDFILE
		fi
	fi
	return $RETVAL
}

# Function that stops the daemon/service
do_stop () {
	echo -n "Stopping $NAME: "
	if [ ! -f "$PIDFILE" ]; then
		log_success_msg
		return 0
	fi
	killproc -p $PIDFILE $DAEMON -SIGKILL
	RETVAL=$?
	if [ $RETVAL -eq 0 ] ; then
		log_success_msg
		rm -f $PIDFILE
	else
		log_failure_msg
	fi
	return $RETVAL
}

case "$1" in
	start)
		do_start
	;;
	stop)
		do_stop
	;;
	status)
		status -p $PIDFILE $NAME
	;;
	restart)
		do_stop
		do_start
	;;
	*)
		echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
		exit 2
	;;
esac

exit $?
