#!/bin/bash
#
# MR Storage Administrator : This starts and stops MRStorageAdministrator service.
#
# chkconfig: 345 99 50
# description: MR Storage Administrator Service
#
# processname: LSA


### BEGIN INIT INFO
# Provides: LSISA
# Should-Start: 
# Should-Stop: 
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: start and stop MRStorageAdministrator service
# Description: MR Storage Administrator Service
### END INIT INFO


RETVAL=0
INSTALL_ROOT="/opt/HPEMRSA/LSIStorageAuthority"
prog="LSA"

start(){
    [ -f "${INSTALL_ROOT}/bin/LSA" ] || exit 5

   # LD_LIBRAR_PATH="${INSTALL_ROOT}/lib:$LD_LIBRAR_PATH"
   # export LD_LIBRAR_PATH

    export MALLOC_CHECK_=0
    #export LANG=C
   export LD_LIBRARY_PATH="${INSTALL_ROOT}/bin:$LD_LIBRARY_PATH"
   export LD_LIBRARY_PATH="${INSTALL_ROOT}/plugins:$LD_LIBRARY_PATH"
    #export LC_ALL=C

    if [ -d "${INSTALL_ROOT}/server" ]; then
    cd "${INSTALL_ROOT}/server"
    ./nginx -p . > /dev/null 2>&1
    fi

    echo -n "Starting MR Storage Administrator:                           "
	get_LSA_pid
 	RETVAL=$?	
	if [ $RETVAL = 0 ]; then
		
    cd "${INSTALL_ROOT}/bin"
    ./$prog -start > /dev/null 2>&1
		# check if service runs for 30 seconds atleast before reporting success
	    c=0
	    while [ $c -lt  6 ]; do	
			is_running
    RETVAL=$?
			if [ $RETVAL = 0 ]; then
				echo -e "[\033[33;31mFAILED\033[0m]"
				return 1
			fi
			sleep 2
			c=$[$c+1]
		done
	fi
	echo -e "[\033[33;32m  OK  \033[0m]"
    return  0
}

stop(){
    [ -f "${INSTALL_ROOT}/bin/LSA" ] || exit 5

    echo -n "Stopping MR Storage Administrator:                           "
    
    if [ -d "${INSTALL_ROOT}/server" ]; then
    cd "${INSTALL_ROOT}/server"
    ./nginx -s stop -p . > /dev/null 2>&1
    fi

	is_running
     RETVAL=$?
	if [ $RETVAL = 1 ]; then
		pid=$LSAPID
		kill -s 9 $pid > /dev/null 2>&1
		# check for 30 seconds atleast before reporting service is down
		c=0
		while [ $c -lt 6 ]; do
			is_running
        RETVAL=$?
			if [ $RETVAL = 0 ]; then 
				break
     fi
			sleep 5
			c=$[$c+1]
		done
		if [ $RETVAL = 1 ]; then
			echo -e "[\033[33;31mFAILED\033[0m]"
			return 1
		fi
	fi  
	echo -e "[\033[33;32m  OK  \033[0m]"
    return $RETVAL

}

restart(){
    stop
    sleep 2
    start
}

# get current status
status(){
	is_running
    RETVAL=$?
    if [ $RETVAL = 1 ]; then
	pid=$LSAPID
        echo -n "MR Storage Administrator (pid  ${pid}) is running..."
	echo
    else
        echo -n "MR Storage Administrator is stopped"
	echo
    fi
}


# Check if running
# 1 - if running 
# 0 - if not running
is_running() 
{
	get_LSA_pid
	RETVAL=$?
	if [ $RETVAL != 0 ]; then
		# already running
		return 1 
	fi
	return 0
}

get_LSA_pid()
{
    pid=`ps -ef | grep "./LSA -start" | grep -v grep | awk  '{print $2}'`
    RETVAL=$?
    if [ $RETVAL = 0 ] && [[ $pid != "" ]]; then
	export LSAPID=$pid
	return 1
	fi
	return  0
}



# See how we were called.
case "$1" in
    start)
	start
	RETVAL=$?
	;;
    stop)
	stop
	RETVAL=$?
	;;
    status)
	status
	RETVAL=$?
	;;
    restart)
	restart
	RETVAL=$?
	;;
    *)
	echo $"Usage: $0 {start|stop|status|restart}"
	RETVAL=2
esac

exit $RETVAL
