#!/bin/sh
####################################################
#                                                  #
#       IMA Service Startup and Shutdown Script    #
#                                                  #
#  Start in: rc3.d, rc5.d                          #
#  Stop in: rc0.d, rc1.d, rc2.d, rc6.d             #
#                                                  #
#  by: Xuan Du, FalconStor, Inc.                   #
####################################################

### BEGIN INIT INFO
# Provides: ima
# Required-Start: $network $syslog
# Required-Stop:
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Description:    IMA Service Startup and Shutdown Script
### END INIT INFO

IMAINSTALLDIR=/usr/local/fsima
IMASRV=iscmsvc
RETVAL=0

start()
{
	echo -n "Starting IMA Service: "
	SRVPIDLST=`ps -e -o pid,fname | grep $IMASRV | awk '{ print $1 }'`
	if [ -n "$SRVPIDLST" ] ; then
		RETVAL=0
	else
		if [ -f $IMAINSTALLDIR/iscmsvc ] ; then
			$IMAINSTALLDIR/iscmsvc
			RETVAL=$?
		else
			RETVAL=1
		fi
	fi

	if [ $RETVAL -eq 0 ] ; then
		echo "[ OK ]"
	else
		echo "[ FAILURE ]"
	fi	
}

stop()
{
	echo -n "Stopping IMA Service: "
	SRVPIDLST=`ps -e -o pid,fname | grep $IMASRV | awk '{ print $1 }'`
	if [ -n "$SRVPIDLST" ] ; then
	    for SPID in $SRVPIDLST ; do
	        kill $SPID >/dev/null 2>&1		
	    done
	fi
	
	COUNT=0
	MAXCOUNT=15
	LOOPDONE=0
	while [ $COUNT -lt $MAXCOUNT ] && [ $LOOPDONE -eq 0 ] ; do
		SRVPIDLST=`ps -e -o pid,fname | grep $IMASRV | awk '{ print $1 }'`
		if ! [ -n "$SRVPIDLST" ] ; then	
			LOOPDONE=1
		fi	
		
		sleep 1
		
		COUNT=$[COUNT+1]
	done
	
	if [ $COUNT -eq $MAXCOUNT ] ; then
		RETVAL=1
	fi
	
	if [ $RETVAL -eq 0 ] ; then
		echo "[ OK ]"
	else
		echo "[ FAILURE ]"
	fi	
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        *)
                echo $"Usage: $0 {start|stop}"
                RETVAL=1
esac

exit $RETVAL
