#!/bin/sh
#
# opennms-remote-poller	Remote poller for opennms.
#
# chkconfig: - 90 10
# description:	The OpenNMS distributed monitor.  For details, see: \
#		  http://www.opennms.org/index.php/Distributed_Monitoring
# processname: opennms-remote-poller
# pidfile: /var/run/opennms-remote-poller.pid

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

# Source function library.
. /etc/init.d/functions

PIDFILE=/var/run/opennms-remote-poller.pid
LOCKFILE=/var/lock/subsys/opennms-remote-poller
RETVAL=0

# Home directory for OpenNMS.
OPENNMS_HOME="/usr/share/opennms"

# PID file for OpenNMS.
OPENNMS_PIDFILE="/var/run/opennms-remote-poller.pid"

# Log directory for OpenNMS
LOG_DIRECTORY="/var/log/opennms-remote-poller"

# Where to redirect "start" output.
REDIRECT="$LOG_DIRECTORY/output.log"

MONITOR_JAR="$OPENNMS_HOME/lib/opennms-remote-poller.jar"


JAVA_EXE="/usr/bin/java"
RMI_LOCATION="RDU"
RMI_HOST="127.0.0.1"
RMI_PORT=1099

# Source networking configuration.
SourceIfNotEmpty /etc/sysconfig/opennms-remote-poller

if [ "$RMI_LOCATION" = "" ]; then
        echo "Set \$RMI_LOCATION and try again."
        exit 1
fi
if [ "$RMI_HOST" = "" ]; then
        echo "Set the RMI host in this script."
        exit 1
fi

start()
{

	echo -n "Starting opennms-remote-poller: "
	$JAVA_EXE -Djava.rmi.activation.port="$RMI_PORT" \
        -Dlog4j.logger="DEBUG" \
        -jar "$MONITOR_JAR" \
        --url="rmi://$RMI_HOST" --location="$RMI_LOCATION" > $REDIRECT 2>&1 &

	RETVAL=$?
	PID=`ps ax --width=1000 | grep opennms-remote-poller.jar | grep -v grep | awk '{print $1}'`

	if [ $RETVAL -eq 0 -a ! -z "$PID" -a ! -z "$PIDFILE" ]; then
	    echo $PID > "$PIDFILE"
	fi

	[ $RETVAL -eq 0 -a -d /var/lock/subsys ] && touch "$LOCKFILE"
	sleep 1 # allows prompt to return

	if [ $RETVAL = 0 ]; then
	    echo_success
	    echo
	else
	    echo_failure
	    echo
	    return $RETVAL
	fi


}

stop()
{
	echo -n "Shutting down opennms-remote-poller: "

	[ -f "$PIDFILE" ] && kill `cat $PIDFILE`
	RETVAL=$?
	[ $RETVAL -eq 0 -a -f "$PIDFILE" ] && rm -f "$PIDFILE"
	[ $RETVAL -eq 0 -a -f "$LOCKFILE" ] && rm -f "$LOCKFILE"
	if [ $RETVAL = 0 ]; then
	    echo_success
	    echo
	else
	    echo_failure
	    echo
	    return $RETVAL
	fi

}

restart()
{
	stop
	sleep 10 # give it a few moments to shut down
	start
}


status()
{
	pid=`cat $PIDFILE 2>&1`
	if [ "$?" = "1" ]; then
	    echo "opennms-remote-poller is not running"
	    RETVAL=0
	else
	    ps -p $pid > /dev/null 2>&1
	    if [ "$?" = "0" ]; then
		echo "opennms-remote-poller is running"
		RETVAL=0
	    else
		echo "opennms-remote-poller is not running"
		RETVAL=0
	    fi
	fi
}


# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	reload)
		restart
		;;
	restart)
		restart
		;;
	condstop)
		if [ -e "$LOCKFILE" ]; then
			stop
		fi
		;;
	condrestart)
		if [ -e "$LOCKFILE" ]; then
			restart
		fi
		;;
	condreload)
		if [ -e "$LOCKFILE" ]; then
			restart
		fi
		;;
	status)
		status
		RETVAL=$?
		;;
	*)
		msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}"
		RETVAL=1
esac

exit $RETVAL
