#!/bin/bash
#
# kula        Startup script for Kula Real-time Monitor
#
# chkconfig: 345 99 01
# description: Kula live system monitoring daemon
# processname: kula
# config: /var/kula/config.yml

. /etc/init.d/functions

DAEMON="/usr/bin/kula"
DIR_CONFIG="/var/openfw/kula"
CONFIG="/var/openfw/kula/config.yaml"
PIDFILE="/var/run/kula.pid"
LOGFILE="/var/log/kula.log"
LOCKFILE="/var/lock/subsys/kula"

start() {
    echo -n "Starting Kula Monitor: "
    if [ -f $PIDFILE ]; then
        PID=$(cat $PIDFILE)
        if ps -p $PID > /dev/null 2>&1; then
            echo_failure
            echo " (Already running)"
            return 1
        fi
        rm -f $PIDFILE
    fi

    if [ -d "$DIR_CONFIG" ]; then
        cd $DIR_CONFIG
    fi

    $DAEMON serve --config $CONFIG >> $LOGFILE 2>&1 &
    echo $! > $PIDFILE
    
    sleep 1
    if ps -p $(cat $PIDFILE) > /dev/null 2>&1; then
        touch $LOCKFILE
        echo_success
        echo
    else
        echo_failure
        echo
        rm -f $PIDFILE
    fi
}

stop() {
    echo -n "Stopping Kula Monitor: "
    PID=""
    
    if [ -f $PIDFILE ]; then
        PID=$(cat $PIDFILE)
    else
        PID=$(pgrep -f "$DAEMON serve")
    fi

    if [ ! -z "$PID" ]; then
        kill $PID >/dev/null 2>&1
        
        for i in {1..5}; do
            if ! ps -p $PID > /dev/null 2>&1; then
                break
            fi
            sleep 1
        done
        
        if ps -p $PID > /dev/null 2>&1; then
            kill -9 $PID >/dev/null 2>&1
        fi
        
        rm -f $PIDFILE
        rm -f $LOCKFILE
        echo_success
        echo
    else
        echo_failure
        echo " (Not running)"
    fi
}

status_kula() {
    PID=$(pgrep -f "$DAEMON serve")
    if [ ! -z "$PID" ]; then
        echo "Kula Monitor (pid $PID) is running..."
        return 0
    fi
    echo "Kula Monitor is stopped."
    return 3
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 1
        start
        ;;
    status)
        status_kula
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit $?