#!/bin/sh
#
###############################################################################
# (C) Copyright 2008 Hewlett-Packard Development Company, L.P.
# @(#) SG cmappmgr script
# @(#) Product Name                :  HP SG cmappmgr
# @(#) Product Version             :  A.12.10.00
# @(#) Patch Name                  :  
#
# PURPOSE: Start the cmappmgr command
#
###############################################################################

. ${SGCONFFILE:=/etc/cmcluster.conf}

PATH=/sbin:/usr/sbin:/usr/bin:/bin:$PATH
export PATH

typeset -i version_ok=0

# The number of times we will try to retry connection to cmappserver
NUM_OF_RETRYS=30
# Number of seconds to wait between retrys
RETRY_INTERVAL=15
#NUM_OF_RETRY and RETRY_INTERVAL determine maximum amount of time
#that cmappmgr waits to connect to cmappserver, which must be greater 
#than the amount of time required for the guest to boot and start
#cmappserver in its rc sequence.
java_cmd=`/usr/bin/which java`

echo $java_cmd |grep "no java"
if [[ $? -eq 0 ]]; then
	echo "java not found" 2>&1
	exit 1
fi

version=`$java_cmd -version 2>&1 | awk '/java version/ { print $3 }'`
echo "java version is $version"

major_version=`echo $version | awk -F. '{ print $2 }'`
minor_version=`echo $version | awk -F. '{ print $3 }'`
minor_version=${minor_version%%_*}

if (( major_version > 4 ))
then
	version_ok=1
elif (( major_version == 4 ))
then
	if (( minor_version > 1 ))
	then
		version_ok=1
	else
		echo "Minimum java version requirement is not met." 
	fi
else
	echo "Minimum java version requirement is not met."
fi

if (( version_ok == 0 ))
then
	exit 1 
fi

logger_cmd="/usr/bin/logger"
if [ -f /etc/SuSE-release ]
then
	logger_cmd="/bin/logger"
fi
if [ -f ${SGSBIN}/cmappmgr.jar ]
then
	#
	# Attempt to start the cmappmgr
	#
        java_exit=0
	/bin/echo "====="`$date`"=====cmappmgr command output is also logged in syslog" 
        i=0
	RANDOM=$$
	tmplog="/tmp/cmappmgr.tmp.$RANDOM"
        while [[ $i -lt NUM_OF_RETRYS ]]
        do
        	echo $java_cmd
        	echo $*
        	exec $java_cmd -jar ${SGSBIN}/cmappmgr.jar $* 2>&1 | /usr/bin/tee $tmplog | $logger_cmd 
	        java_exit=`awk '/PROGRAM EXIT CODE/ { print $4 }' $tmplog`
                cat $tmplog
		grep "Could not connect to the node" $tmplog 
		if [[ $? -eq 0 ]]; then
			let i+=1
			sleep ${RETRY_INTERVAL}
			echo "Retry connection to cmappserver..."
		else
        		rm -rf $tmplog 
			exit $java_exit
                fi
        done
       	rm -rf $tmplog 
        exit $java_exit 
else
	echo "cmappmgr.jar not found"
        exit 1
fi
