#!/bin/sh

# PROVIDE: graphiteapi
# REQUIRE: LOGIN DAEMON NETWORKING
# KEYWORD: shutdown

# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# graphiteapi_enable    (bool):   Set to NO by default.
# Set it to YES to enable graphiteapi.
#
# graphiteapi_user      (string): optional username to run daemon under
# graphiteapi_group     (string): optional groupname to run daemon under
# graphiteapi_address   (string): optional IP:PORT tuple to bind to
# graphiteapi_config    (string): optional full path for yaml config file
# graphiteapi_flags     (string): optional flags to pass through to gunicorn

. /etc/rc.subr

name="%%GRAPHITEAPI_APP%%"
rcvar="%%GRAPHITEAPI_APP%%_enable"
desc="graphite-web rendering API"

load_rc_config ${name}

: ${graphiteapi_enable:="NO"}
: ${graphiteapi_user="%%GRAPHITEAPI_USER%%"}
: ${graphiteapi_group="%%GRAPHITEAPI_GROUP%%"}
: ${graphiteapi_address="127.0.0.1:5600"}
: ${graphiteapi_config="%%ETCDIR%%/%%GRAPHITEAPI_APP%%.yaml"}
: ${graphiteapi_flags="--workers 4"}

required_files="${graphiteapi_config}"

command="%%PREFIX%%/bin/gunicorn-%%PYTHON_VER%%"
procname="%%PYTHON_VERSION%%"

pidfile="%%GRAPHITEAPI_PIDFILE%%"

command_args="--daemon graphite_api.app:app"
command_args="${command_args} --user ${graphiteapi_user} --group ${graphiteapi_group}"
command_args="${command_args} --bind ${graphiteapi_address}"
command_args="${command_args} --env GRAPHITE_API_CONFIG=${graphiteapi_config}"
command_args="${command_args} --pid %%GRAPHITEAPI_PIDFILE%%"
command_args="${command_args} --worker-tmp-dir %%GRAPHITEAPI_TMPDIR%%"
command_args="${command_args} --error-logfile %%GRAPHITEAPI_LOGDIR%%/error.log"
command_args="${command_args} --access-logfile %%GRAPHITEAPI_LOGDIR%%/access.log"

extra_commands="reload"
start_precmd="start_precmd"

start_precmd()
{
    test -d "%%GRAPHITEAPI_LOGDIR%%" || install -d -o ${graphiteapi_user} \
        -g ${graphiteapi_group} -m 0750 "%%GRAPHITEAPI_LOGDIR%%"
    test -d "%%GRAPHITEAPI_TMPDIR%%" || install -d -o ${graphiteapi_user} \
        -g ${graphiteapi_group} -m 0750 "%%GRAPHITEAPI_TMPDIR%%"
}

run_rc_command "$1"
