--- /dev/null
+#!/bin/sh
+#
+# mcollective Application Server for STOMP based agents
+#
+# chkconfig: - 24 76
+#
+# description: mcollective lets you build powerful Stomp compatible middleware clients in ruby without having to worry too
+# much about all the setup and management of a Stomp connection, it also provides stats, logging and so forth
+# as a bonus.
+#
+### BEGIN INIT INFO
+# Provides: mcollective
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Short-Description: Start daemon at boot time
+# Description: Enable service provided by daemon.
+### END INIT INFO
+
+mcollectived="/usr/sbin/mcollectived"
+pidfile="/var/run/mcollectived.pid"
+if [ -d /var/lock/subsys ]; then
+ # RedHat/CentOS/etc who use subsys
+ lockfile="/var/lock/subsys/mcollective"
+else
+ # The rest of them
+ lockfile="/var/lock/mcollective"
+fi
+
+# Check that binary exists
+if ! [ -f $mcollectived ]; then
+ echo "mcollectived binary not found"
+ exit 5
+fi
+
+# Source function library.
+. /etc/init.d/functions
+
+if [ -f /etc/sysconfig/mcollective ]; then
+ . /etc/sysconfig/mcollective
+fi
+
+# Determine if we can use the -p option to daemon, killproc, and status.
+# RHEL < 5 can't.
+if status | grep -q -- '-p' 2>/dev/null; then
+ daemonopts="--pidfile $pidfile"
+ pidopts="-p $pidfile"
+fi
+
+start() {
+ echo -n "Starting mcollective: "
+ # Only try to start if not already started
+ if ! rh_status_q; then
+ daemon ${daemonopts} ${mcollectived} --pid=${pidfile} --config="/etc/mcollective/server.cfg"
+ fi
+ # This will be 0 if mcollective is already running
+ RETVAL=$?
+ echo
+ [ $RETVAL -eq 0 ] && touch ${lockfile}
+ return $RETVAL
+}
+
+stop() {
+ echo -n "Shutting down mcollective: "
+ # If running, try to stop it
+ if rh_status_q; then
+ killproc ${pidopts} -d 10 ${mcollectived}
+ else
+ # Non-zero status either means lockfile and pidfile need cleanup (1 and 2)
+ # or the process is already stopped (3), so we can just call true to
+ # trigger the cleanup that happens below.
+ true
+ fi
+ RETVAL=$?
+ echo
+ [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
+ return $RETVAL
+}
+
+restart() {
+ stop
+ start
+}
+
+reload_agents() {
+ echo -n "Reloading mcollective agents: "
+ killproc ${pidopts} ${mcollectived} -USR1
+ RETVAL=$?
+ echo
+ return $RETVAL
+}
+
+reload_loglevel() {
+ echo -n "Cycling mcollective logging level: "
+ killproc ${pidopts} ${mcollectived} -USR2
+ RETVAL=$?
+ echo
+ return $RETVAL
+}
+
+rh_status() {
+ status ${pidopts} ${mcollectived}
+ RETVAL=$?
+ return $RETVAL
+}
+
+rh_status_q() {
+ rh_status >/dev/null 2>&1
+}
+
+# See how we were called.
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ restart
+ ;;
+ condrestart)
+ rh_status_q || exit 0
+ restart
+ ;;
+ reload-agents)
+ reload_agents
+ ;;
+ reload-loglevel)
+ reload_loglevel
+ ;;
+ status)
+ rh_status
+ ;;
+ *)
+ echo "Usage: mcollectived {start|stop|restart|condrestart|reload-agents|reload-loglevel|status}"
+ RETVAL=2
+ ;;
+esac
+exit $RETVAL