#!/bin/bash
#
# carbon-relay - This script starts and stops the carbon-relay service.
#
# chkconfig:   - 85 15
# description: carbon-relay accepts graphite metrics and writes them into cluster's nodes.
#
# processname: carbon-relay.py
# config:      /etc/sysconfig/carbon-cache

umask 0022

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

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

exec="/opt/graphite/bin/carbon-relay.py"
prog=$(basename "$exec")
CARBON_CONFIG_PATH="/opt/graphite/conf/carbon.conf"
CARBON_CACHE_ARGS=""
CARBON_CACHE_PIDFILE="/opt/graphite/storage/carbon-relay-a.pid"
GRAPHITE_STORAGE_DIR="/opt/graphite/storage"

if [ -f /etc/sysconfig/carbon-relay ]; then
    . /etc/sysconfig/carbon-relay
fi

export GRAPHITE_STORAGE_DIR

restart() {
    stop
    start
}

rh_status() {
    status -p "$CARBON_CACHE_PIDFILE" "$prog"
}

start() {
    echo -n 'Starting carbon-relay...'
    daemon --pidfile="$CARBON_CACHE_PIDFILE" "$exec" start $args --config="$CARBON_CONFIG_PATH" >/dev/null
    retval=$?
    echo
    return $retval
}

stop() {
    echo -n 'Stopping carbon-relay...'
    killproc -p "$CARBON_CACHE_PIDFILE" "$prog"
    retval=$?
    echo
    return $retval
}

case $1 in
    condrestart|try-restart)
        rh_status 2>/dev/null && restart
        ;;
    reload|force-reload)
        restart
        ;;
    restart)
        restart
        ;;
    start)
        start
        ;;
    status)
        rh_status
        ;;
    status_q)
        rh_status >/dev/null 2>&1
        ;;
    stop)
        stop
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
        exit 2
        ;;
esac
