#!/bin/bash 
#
# pbs_server    Start/Stop OpenPBS server
#
# chkconfig: 345 90 10
# description: The OpenPBS server coordinates all machines running PBS jobs.

# Source function library.
. /etc/init.d/functions

prog="pbs_server"

[ -f /usr/sbin/pbs_server ] || exit 0
[ -f /etc/sysconfig/pbs ] && . /etc/sysconfig/pbs
RETVAL=0

start() {
        # Create a serverdb file if we need one.
        if [ ! -f /var/spool/pbs/server_priv/serverdb ] ; then
           echo -n "Initialising PBS Server Database: "
           ( /usr/sbin/pbs_server -t create &&
                read pid rest < /var/spool/pbs/server_priv/server.lock &&
                kill -TERM $pid > /dev/null 2>&1 &&
                /bin/rm -f /var/spool/pbs/server_priv/server.lock &&
                success ) || failure
           echo
        fi
       
        pgrep -f /usr/sbin/pbs_server > /dev/null
        RUNNING_VALUE=$?
        if [ $RUNNING_VALUE -ne 0 ] ; then 
            echo -n $"Starting $prog: "
            daemon /usr/sbin/pbs_server $PBS_SERVER_FLAGS
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/pbs_server
	    return $RETVAL
        else
            echo -n $"pbs_server is already runnig:" && success
            echo
            return 0
        fi
}


stop() {
        # Check if pbs_server is actually running
        pgrep -f /usr/sbin/pbs_server > /dev/null
        RUNNING_VALUE=$?
        if [ $RUNNING_VALUE -eq 0 ] ; then
            echo -n $"Stopping $prog with qterm -t quick: "
	    ( /usr/bin/qterm -t quick && success ) || failure 
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/pbs_server
	    return $RETVAL
            # This is not quite correct since failure always returns true.
        else
            echo -n "pbs_server is not running:" && success 
            echo
            return 0
        fi 
}

restart() {
	stop
	start
}

relog() {
	echo -n $"Reopening log files: "
	killproc pbs_server -HUP
	RETVAL=$?
	echo
	return $RETVAL
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
	status pbs_server
	;;
  restart)
	restart
	;;
  condrestart)
        if [ -f /var/lock/subsys/pbs_server ]  ; then
           stop
           start
        fi
        ;;
  reconfig)
	reconfig
	;;
  *)
	echo $"Usage: $0 {start|stop|status|restart|reconfig}"
	exit 1
esac

exit $?
