#!/bin/sh
### BEGIN INIT INFO
# Provides:          puppet-dashboard-worker
# Required-Start:    $syslog $remote_fs
# Should-Start:      $time ypbind smtp
# Required-Stop:     $syslog $remote_fs
# Should-Stop:       ypbind smtp
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Puppet Dashboard Process Manager 
# Description:       Start Puppet Dashboard Process Manager
### END INIT INFO

# Check for existence of needed config file and read it
DASHBOARD_CONFIG=/etc/sysconfig/puppet-dashboard
DASHBOARD_WORK_CPU=1

test -r $DASHBOARD_CONFIG || { echo "$DASHBOARD_CONFIG not existing";
       if [ "$1" = "stop" ]; then exit 0;
       else exit 6; fi; }

# Read config
. $DASHBOARD_CONFIG

WORKER_BIN="${DASHBOARD_HOME}/script/delayed_job"
LOG_FILE="/var/log/puppet/puppet-dashboard-worker.log"
PID_FILE=/var/run/puppet-dashboard-worker.pid
RUBY_BIN=$(which ruby)

. /etc/rc.status
rc_reset

suse_status() {
       RETVAL=3
       for pidfile in $(ls -1 "${DASHBOARD_HOME}"/tmp/pids/delayed_job.*pid 2>/dev/null)
       do
               checkproc -p $pidfile $RUBY_BIN || return $?
                RETVAL=$?
        done
        return $RETVAL
 }
 
 case "$1" in
    start)
       echo -n "Starting puppet-dashboard-worker "
      #  Workaround for not writing correct pid file
       # using -v :)
       ( cd ${DASHBOARD_HOME} && RAILS_ENV=${DASHBOARD_ENVIRONMENT} ${WORKER_BIN} -p dashboard -n ${DASHBOARD_WORK_CPU} -m start ) 2>/dev/null
       rc_status -v
       ;;
    stop)
       echo -n "Shutting down puppet-dashboard-worker "
       ( cd ${DASHBOARD_HOME} && RAILS_ENV=${DASHBOARD_ENVIRONMENT} ${WORKER_BIN} -p dashboard -n ${DASHBOARD_WORK_CPU} -m stop ) 2>/dev/null
       rc_status -v
       ;;
    restart)
       ## Stop the service and regardless of whether it was
       ## running or not, start it again.
       $0 stop
       $0 start
       rc_status
       ;;
    reload)
        ## Stupid but not implemented really
        $0 restart
        rc_status
        ;;
    status)
       echo -n "Check running puppet-dashboard-worker "
       suse_status
       rc_status -v
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart|reload}"
       exit 1
       ;;
 esac
rc_exit
