#!/bin/sh

# PROVIDE: riemann
# REQUIRE: LOGIN NETWORKING SERVERS
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# riemann_enable    (bool):   Set to NO by default.
# Set it to YES to enable riemann.
#
# riemann_config          (string): Optional full path for riemann config file
# riemann_user            (user):   Set to riemann by default.
# riemann_group           (group):  Set to riemann by default.
# riemann_jarfile         (string): Optional path to a custom jarfile.
# riemann_java_home       (args):   Specify which JVM to use, if not default.
# riemann_java_classpath  (args):   Specify a custom Java ClassPath.
# riemann_min_mem         (num):    Minumum JVM heap size, 256m by default.
# riemann_max_mem         (num):    Maximum JVM heap size, 1g by default.
# riemann_java_opts       (args):   Additional JVM properties or arguments.

. /etc/rc.subr

name="riemann"
rcvar=riemann_enable

load_rc_config $name

: ${riemann_enable="NO"}
: ${riemann_user:="riemann"}
: ${riemann_group:="riemann"}
: ${riemann_config:="/usr/local/etc/riemann/riemann.config"}
: ${riemann_jarfile:="/usr/local/share/java/classes/riemann.jar"}
: ${riemann_java_home:="/usr/local/openjdk8"}
: ${riemann_min_mem:="256m"}
: ${riemann_max_mem:="1g"}
: ${riemann_java_classpath:=${riemann_jarfile}}
: ${riemann_java_opts:=" -server \
	-cp ${riemann_java_classpath} \
        -Dapp=riemann \
        -Xms${riemann_min_mem} \
        -Xmx${riemann_max_mem} \
        -Xss256k \
        -Djava.awt.headless=true \
        -XX:+AggressiveOpts \
        -XX:+CMSClassUnloadingEnabled \
        -XX:+CMSParallelRemarkEnabled \
        -XX:+DisableExplicitGC \
        -XX:+HeapDumpOnOutOfMemoryError \
        -XX:+UseCMSInitiatingOccupancyOnly \
        -XX:+UseCompressedOops \
        -XX:+UseConcMarkSweepGC \
        -XX:+UseFastAccessorMethods \
        -XX:+UseParNewGC \
        -XX:CMSInitiatingOccupancyFraction=75 "}

pidfile="/var/run/riemann.pid"
start_precmd="install -o ${riemann_user} /dev/null ${pidfile}"

command="/usr/sbin/daemon"
command_args=" \
	-c \
	-t riemann \
	-r \
	-P ${pidfile} \
	${riemann_java_home}/bin/java \
	${riemann_java_opts} \
	riemann.bin start ${riemann_config}"

required_files="${java_cmd} ${riemann_config}"

# support SIGHUP to reload config file using pkill. parent pid
# is that of daemon(8) and not of riemann's JVM instance
extra_commands="reload"
reload_cmd="pkill -SIGHUP -U ${riemann_user} -G ${riemann_group} -f Dapp=riemann"

run_rc_command "$1"
