#!/bin/sh
#
# chkconfig:    345 85 15
# description:  Cloud Scheduler init script for GNU/Linux

export GLOBUS_LOCATION=/usr/local/nimbus/

# Set a non-default path to the cloud_scheduler executable
# eg. "/opt/bin/cloud_scheduler"
EXECUTABLEPATH="cloud_scheduler" 

# Non-default python (eg. if you installed python 2.6 on RHEL5)
PYTHON=""

# You probably won't want to change these.
SERVICE=cloud_scheduler
CRASHLOG=/tmp/${SERVICE}.crash.log
PIDSPATH=/var/run
PIDFILE=$PIDSPATH/$SERVICE.pid
export PATH=$PATH:$GLOBUS_LOCATION/bin/


ok () {
    echo -e "\t\t\t\t[ " "\e[0;32mOK\e[0m" " ]"
}

start () {
    if [ -f $PIDFILE ]; then
        PID=`cat $PIDFILE`
        ps $PID >/dev/null
        if [ $? -eq 0 ]; then
            PID=`cat $PIDFILE`
            echo $"$SERVICE is already running with PID ${PID}."
            return 1
        else
            echo $"$SERVICE didn't shut down cleanly last time."
            rm -f $PIDFILE
        fi
    fi

    echo -n $"Starting $SERVICE:"
    if [ "$SUDO_COMMAND" ]; then
        sudo nohup ${PYTHON} ${EXECUTABLEPATH} </dev/null >${CRASHLOG} 2>&1 &
        echo $! > $PIDFILE
    else
        nohup ${PYTHON} ${EXECUTABLEPATH} </dev/null >${CRASHLOG} 2>&1 &
        echo $! > $PIDFILE
    fi
    RETVAL=$?
    touch /var/lock/subsys/$SERVICE
    ok
}

stop () {
    if [ -f $PIDFILE ]; then
        echo -n $"Stopping $SERVICE:"
        PID=`cat $PIDFILE`
        /bin/kill $PID
        while ps -p $PID >/dev/null; do sleep 1; done
        if [ $? -eq 0 ]; then
            rm -f $PIDFILE >/dev/null 2>&1
        fi
        rm -f /var/lock/subsys/$SERVICE
        ok
    fi
}

forcekill () {
    if [ -f $PIDFILE ]; then
        echo -n $"Killing $SERVICE:"
        /bin/kill -9 `cat $PIDFILE`
        if [ $? -eq 0 ]; then
            rm -f $PIDFILE >/dev/null 2>&1
        fi
        ok
        rm -f /var/lock/subsys/$SERVICE
    fi
}

quickstop () {
    if [ -f $PIDFILE ]; then
        echo -n $"Setting Quick Exit Flag for $SERVICE:"
        /bin/kill -s SIGUSR2 `cat $PIDFILE`
        ok
        stop
    fi
}

reconfig () {
    if [ -f $PIDFILE ]; then
        echo -n $"Reconfiguring $SERVICE:"
        /bin/kill -s SIGUSR1 `cat $PIDFILE`
        ok
    fi
}


RETVAL=0

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    forcekill)
        forcekill
        ;;
    reconfig)
        echo $"reconfig disabled. Use quickrestart"
        #reconfig
        ;;
    status)
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            ps $PID >/dev/null
            if [ $? -eq 0 ]; then
                PID=`cat $PIDFILE`
                echo $"$SERVICE is running with PID ${PID}."
            else
                echo $"$SERVICE has exited unexpectedly."
            fi
        else
            echo "$SERVICE isn't running."
        fi
        ;;
    restart)
        stop
        start
        ;;
    quickstop)
        quickstop
        ;;
    quickrestart)
        quickstop
        start
        ;;
    'reload')
        quickstop
        start
        ;;
    'force-reload')
        quickstop
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart|status|reconfig|forcekill|quickstop|quickrestart}"
        exit 3
        ;;
esac

exit $RETVAL
