#!/bin/sh

### BEGIN INIT INFO
# Provides:          mod-gearman-worker
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Control the mod-gearman worker daemon
# Description:       Control the mod-gearman worker daemon which fetches 
#                    and processes jobs (servicechecks, hostchecks or 
#                    eventhandlers) from a gearman-job-server instance.
### END INIT INFO


PATH=/usr/sbin:/usr/bin:/sbin:/bin
NAME=mod_gearman_worker
DAEMON=/usr/sbin/$NAME
CONFIG=/etc/mod-gearman/worker.conf
PIDFILE=/var/run/mod-gearman/worker.pid
USER=nagios
USERID=$(id -u)
DAEMON_OPTS="-d --config=$CONFIG --pidfile=$PIDFILE --logmode=syslog"

. /lib/lsb/init-functions

if [ -e /etc/default/mod-gearman-worker ]; then
    . /etc/default/mod-gearman-worker
fi

pre_start() {
    if [ ! -e "$CONFIG" ]; then
        log_failure_msg "Configuration file $CONFIG not present"
        exit
    fi
    install -o $USER -g $USER -d $(dirname $PIDFILE)
}

start_worker() {
    start-stop-daemon --start --oknodo --user $USER --exec $DAEMON --quiet \
        --chuid $USER --pidfile $PIDFILE -- $DAEMON_OPTS
}

stop_worker() {
    start-stop-daemon --stop --oknodo --user $USER --exec $DAEMON --quiet \
        --retry 10 --pidfile $PIDFILE
}

reload_worker() {
    start-stop-daemon --stop --oknodo --user $USER --exec $DAEMON --quiet \
        --signal HUP --pidfile $PIDFILE
}

status_worker() {
    status_of_proc -p $PIDFILE $DAEMON $NAME
}

case "$1" in
    start)
        log_daemon_msg "Starting $DESC" "$NAME"
        pre_start
        start_worker
        log_end_msg $?
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        stop_worker
        log_end_msg $?
        ;;
    reload|force-reload)
        log_daemon_msg "Reloading $DESC" "$NAME"
        reload_worker
        log_end_msg $?
        ;;
    status)
        status_worker
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: $0 [start|stop|status|reload|force-reload|restart]"
        exit 1
        ;;
esac

exit 0
