#!/bin/sh
#
# cassandra 	Cassandra 
#
# chkconfig:	345 84 25
#
# description:	Cassandra database node
#
# processname:  cassandra

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

# Get network config
. /etc/sysconfig/network

# Get service config - may override defaults
[ -f /etc/sysconfig/cassandra ] && . /etc/sysconfig/cassandra

# Check that networking is up.
if is_yes "${NETWORKING}"; then
	if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
		msg_network_down "cassandra"
		exit 1
	fi
else
	exit 0
fi

start() {
	# Check if the service is already running?
	if [ -f /var/lock/subsys/cassandra ]; then
		msg_already_running "cassandra"
		return
	fi

	msg_starting "cassandra"
	daemon --user cassandra /usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/cassandra
}


stop() {
	if [ ! -f /var/lock/subsys/cassandra ]; then
		msg_not_running "cassandra"
		return
	fi

	# Stop daemons.
	msg_stopping "cassandra"
	# TODO: Fix it to work it properly with default PLD starting script scheme
	# I do not know how to make 
	pid=$(cat /var/run/cassandra/cassandra.pid)
	kill -TERM $pid
	# 0 - call succeed
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		# Success, giving some time for cassandra to flush.
		checkpid $pid && sleep 1
		checkpid $pid && sleep 3
		checkpid $pid && sleep 5
		if checkpid $pid; then
			fail
			log_failed "cassandra shutdown (timeout after -TERM)"
		else
			ok
			log_success "cassandra shutdown"
		fi
	else
		fail
		log_failed "cassandra shutdown (signalling error)"
	fi
	rm -f /var/lock/subsys/cassandra
}

condrestart() {
	if [ ! -f /var/lock/subsys/cassandra ]; then
		msg_not_running "cassandra"
		RETVAL=$1
		return
	fi

	stop
	start
}

RETVAL=0
# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	stop
	start
	;;
  try-restart)
	condrestart 0
	;;
  force-reload)
	condrestart 7
	;;
  status) 
	# Does not work with /usr/sbin/cassandra for some reason
	status cassandra
	;;
  *)
	msg_usage "$0 {start|stop|restart|try-restart|force-reload}"
	exit 3
esac

exit $RETVAL
