#!/bin/sh
#
# rabbitmq-server RabbitMQ broker
#
# chkconfig: - 80 05
# description: Enable AMQP service provided by RabbitMQ
#

### BEGIN INIT INFO
# Provides:          rabbitmq-server
# Default-Start:
# Default-Stop:
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Description:       RabbitMQ broker
# Short-Description: Enable AMQP service provided by RabbitMQ broker
### END INIT INFO

. /etc/rc.d/init.d/functions

DAEMON=rabbitmq-server
NAME="RabbitMQ server"
USER=rabbitmq
NODE_COUNT=1
PIDFILE=/var/run/$DAEMON.pid
LOCKFILE=/var/lock/subsys/$DAEMON
ROTATE_SUFFIX=

# Include rabbitmq defaults if available
SourceIfNotEmpty /etc/sysconfig/rabbitmq-server

RETVAL=0

daemon_status() {
	ps -C $DAEMON -o cmd= | grep -v defunct > /dev/null
	return $?
}

start() {
	daemon_status
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		msg_already_running "$NAME"
		passed
		echo
		return 1
	fi
	start_daemon --user $USER --make-pidfile --pidfile $PIDFILE \
		--displayname "$NAME" $DAEMON
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch $LOCKFILE ||\
		RETVAL=1
	return $RETVAL
}

stop() {
	daemon_status
	RETVAL=$?
	if [ $RETVAL -eq 1 ]; then
		msg_not_running "$NAME"
		passed
		echo
		return 1
	fi
	msg_stopping "$NAME"
	rabbitmqctl stop > /dev/null
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		rabbitmqctl wait $PIDFILE &> /dev/null
		epmd -kill > /dev/null && success || failure
	else
		failure
	fi

	echo
	[ $RETVAL -eq 0 ] && rm -f $LOCKFILE && rm -f $PIDFILE
	sleep 0.1
	return $RETVAL
}

restart() {
	stop
	start
}

status() {
	daemon_status
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		msg_already_running "$NAME"
	else
		msg_not_running "$NAME"
	fi
	echo
	return $RETVAL
}

rotate_logs_rabbitmq() {
	action "Rotating log files for $DESC: " \
	       "$DAEMON rotate_logs ${ROTATE_SUFFIX}"
	RETVAL=$?
	return $RETVAL
}

# Allow status as non-root.
if [ "$1" = status ]; then
	status $SERVICE "$NAME"
	exit $?
fi

case "$1" in
start)
	start
	;;
stop)
	stop
	;;
status)
	status
	;;
rotate-logs)
	rotate_logs_rabbitmq
	;;
force-reload|reload|restart|condreload)
	restart
	;;
condrestart|try-restart|condreload)
	if [ -e "$LOCKFILE" ]; then
		restart
	fi
	;;
condstop|try-stop)
	if [ -e "$LOCKFILE" ]; then
		stop
	fi
	;;
*)
	echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload|condstop|try-stop}" >&2
	RETVAL=2
	;;
esac

exit $RETVAL
