File chef-solr.init of Package rubygem-chef-solr
#!/bin/bash
#
# chef-solr Startup script for the SOLR search engine
#
# chkconfig: - 98 02
# description: SOLR search engine for the Chef Server.
### BEGIN INIT INFO
# Provides: chef-solr
# Required-Start: $local_fs $network $remote_fs rabbitmq-server
# Required-Stop: $local_fs $network $remote_fs rabbitmq-server
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Should-Start: $named $time
# Should-Stop: $named $time
# Short-Description: Startup script for the SOLR search engine
# Description: SOLR search engine for the Chef Server.
### END INIT INFO
# Source function library
. /etc/rc.status
exec="/usr/bin/chef-solr"
prog="java"
progname="chef-solr"
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
config=${CONFIG-/etc/chef/solr.rb}
pidfile=${PIDFILE-/var/run/chef/solr.pid}
logfile=${LOGFILE-/var/log/chef/solr.log}
options=${OPTIONS-}
DAEMON_OPTS="-d -P $pidfile -c $config -L $logfile -u chef -g chef"
function wait_for_java(){
    SOLR_TIMEOUT_SEC=10
    while [ ${SOLR_TIMEOUT_SEC} -gt 0 ]; do
        checkproc -p $pidfile $prog
        CHECKPROC_RC=$?
        if [ ${CHECKPROC_RC} -eq 0 ] ; then
            rc_failed 0
            break
        else
            SOLR_TIMEOUT_SEC=$((SOLR_TIMEOUT_SEC-1))
            sleep 1
        fi
        rc_failed
    done
}
case "$1" in
    start)
        echo -n $"Starting $progname: "
        if [ ! -d /var/run/chef ]; then
            mkdir -p -m 0750 /var/run/chef
            chown chef:chef /var/run/chef
        fi
        /usr/sbin/chef-create-amqp-passwd &> /dev/null
        # Do not use startproc as chef-solr daemonizes itself and creates
        # a pid file. Use checkproc in a loop (see the wait_for_java function above)
        # to wait until it returns success. Additional 30 seconds for java to
        # initialize and prevent race conditions.
        $exec $DAEMON_OPTS && wait_for_java
        sleep 30
        rc_status -v
        ;;
    stop)
        echo -n $"Stopping $progname: "
        killproc $prog -p "$pidfile"
        rc_status -v
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        ;;
    force-reload)
        force_reload
        ;;
    status)
        echo -n $"Checking $progname: "
        checkproc -p $pidfile $prog
        rc_status -v
        ;;
    condrestart|try-restart)
        $0 status
        if test $? = 0; then
            $0 restart
        else
            rc_reset # Not running is not a failure.
        fi
        # Remember status and be quiet
        rc_status
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
        exit 2
esac
exit $?