#! /bin/sh
#
# 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
       
        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
}


stop() {
        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.
}

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 $?
