#!/bin/bash
#
# chkconfig: 345 90 10
# description: SLURM is a simple resource management system which \
#              manages exclusive access to a set of compute \
#              resources and distributes work to those resources.
#
# processname: /usr/sbin/slurmctld
# pidfile: /var/run/slurmctld.pid
#
# config: /etc/sysconfig/slurmctld
#
### BEGIN INIT INFO
# Provides:          slurmctld
# Required-Start:    $remote_fs $syslog $network munge slurm
# Required-Stop:     $remote_fs $syslog $network munge
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: slurmctld daemon management
# Description:       Start slurmctld to provide resource management
### END INIT INFO

BINDIR=/usr/bin
CONFDIR=/etc/slurm
prog=slurmctld

if [ ! -f /etc/rc.d/init.d/functions ]; then
    gprintf "Could not find /etc/rc.d/init.d/functions. Is some other daemon launch mechanism used?\n"
    exit 1
fi
. /etc/rc.d/init.d/functions

if [ ! -x $BINDIR/scontrol ]; then
   gprintf "Could not find %s/scontrol. Bad path?\n" "$BINDIR"
   exit 1
fi

# SLURMCTLD_OPTIONS defines slurmctld command line options. See "man slurmctld"
if [ -f /etc/sysconfig/slurmctld ] ; then
    . /etc/sysconfig/slurmctld
else
    SLURMCTLD_OPTIONS=""
fi

if [ ! -f $CONFDIR/slurm.conf ]; then
   gprintf "Could not find %s/slurm.conf. Bad path?\n" "$CONFDIR"
   exit 1
fi

start() {
    gprintf "Starting %s:" "$prog"
    $prog -c $CONFDIR/slurm.conf $SLURMCTLD_OPTIONS && success "startup" || failure "startup"
    RETVAL=$?
    [ "$RETVAL" = 0 ] && touch /var/lock/subsys/$prog
    echo
}

stop() {
        gprintf "Stopping %s:" "$prog"
        if [ -r /var/run/$prog.pid ]; then
    	    kill -9 `cat /var/run/$prog.pid`
            RETVAL=$?
            [ "$RETVAL" = 0 ] && success "stop" || failure "stop"
        else
            success "already stopped"
            RETVAL=0
        fi
        [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/$prog && rm -f /var/run/$prog.pid
        echo
}

case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    restart)
	$0 stop
	$0 start
	;;
    reconfig)
	for prog in `$BINDIR/scontrol show daemons`; do
	    killproc $prog -HUP
	done
	;;
    *)
	gprintf "Usage: %s {start|stop|restart|reconfig}\n" "$0"
	exit 1
	;;
esac

