#!/usr/bin/ksh93
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# 61haes_r720 src/43haes/usr/sbin/cluster/sa/filenet/sbin/cl_filenet_process_engine_stop.sh 1.1.1.1 
#  
# Licensed Materials - Property of IBM 
#  
# COPYRIGHT International Business Machines Corp. 2010 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
# @(#)60	1.1.1.1  src/43haes/usr/sbin/cluster/sa/filenet/sbin/cl_filenet_process_engine_stop.sh, hacmp, 61haes_r720, 1539B_hacmp720 9/11/15 15:32:05
###############################################################################
#
# Name: cl_filenet_process_engine_stop
#
# Command used as the PowerHA Application Server "Stop Script" for FileNet
# Process Engine. 
#
# Syntax:
# cl_filenet_process_engine_stop [-D | -v] PROCESS_ENGINE_USER
#
# Arguments:
#       -D                   Turn on debug mode.
#       -v                   Turn on verbose mode.
#       PROCESS_ENGINE_USER  Process Engine User
#
# Returns:
#       0 on SUCCESS
#       1 on FAILURE
#
###############################################################################

. /usr/es/lib/ksh93/func_include

###############################################################################
#
# Name: usage
#
# Prints usage message and exits the program.
#
# Arguments:  none
#
# Returns:    does not return
#
################################################################################
usage() {
    [[ $VERBOSE_LOGGING == "high" ]] && set -x

    KLIB_SA_logmsg WARN 3 1 filenetsa.cat "Usage:\ncl_filenet_process_engine_stop [-D | -v] PROCESS_ENGINE_USER.\n"

    exit 1
}

###############################################################################
#
# Name: isRunning
#
# Check to see if Process Engine is running or not.
#
# Arguments:  none
#
# Returns:
#       0 on RUNNING
#       1 on NOT RUNNING
#
################################################################################
isRunning() {
        [[ $VERBOSE_LOGGING == "high" ]] && set -x

        if echo | /usr/bin/su - $PE_USER_NAME -c "LC_ALL=C initfnsw -y status" | grep -i "software started" >> $LOG_FILE 2>&1
	then
                KLIB_SA_logmsg INFO 4 2 filenetsa.cat "Process Engine is active\n"
                return 0
	fi

        KLIB_SA_logmsg INFO 4 3 filenetsa.cat "Process Engine is not active\n"
        return 1    # instance not running
}

###############################################################################
#
# Name: doStop
#
# Becomes the PE USER OWNER and stops the process engine
#
# Arguments:  none
#
# Returns:
#       0 on SUCCESS
#       1 on FAILURE
#
################################################################################
doStop()
{
        [[ $VERBOSE_LOGGING == "high" ]] && set -x

        echo | /usr/bin/su - $PE_USER_NAME -c "initfnsw -y stop" >> $LOG_FILE 2>&1
        echo | /usr/bin/su - $PE_USER_NAME -c "LC_ALL=C killfnsw -DAyS" | grep -i error >> $LOG_FILE 2>&1
        RC=$?
        echo | /usr/bin/su - $PE_USER_NAME -c "killfnsw -r" >> $LOG_FILE 2>&1

        (( $RC == 0 )) && {
                KLIB_SA_logmsg INFO 5 3 filenetsa.cat "Process Engine has not been stopped\n"
                return 1
        }
        KLIB_SA_logmsg INFO 5 2 filenetsa.cat "Process Engine has been stopped\n"
        return 0
}

###############################################################################
# Main program procedure.
###############################################################################

# Load the common variables
. /usr/es/sbin/cluster/sa/filenet/sbin/cl_filenet_common_variables

PROGNAME=${0##*/}
PATH=$(/usr/es/sbin/cluster/utilities/cl_get_path all)
FPATH_BASE=/usr/es/lib/ksh93
FPATH=$FPATH_BASE/hacmp:$FPATH_BASE/sa:$FPATH_BASE/aix:$FPATH_BASE/aix/odm
#
# Process Engine path is set to PATH variable
#
PE_BIN_PATH=$(lslpp -cw '*/bin/initfnsw' | tail -1 | cut -d ':' -f 1)
PE_BIN_PATH=${PE_BIN_PATH%initfnsw}
PATH=$PATH:$PE_BIN_PATH
export PATH FPATH
LOG_FILE=$(clodmget -q name=$KLIB_HACMPLOG_ENTRY -f value -d "=" HACMPlogs)
LOG_FILE=${LOG_FILE//\"/}
LOG_FILE="$LOG_FILE/$KLIB_HACMPLOG_ENTRY"

if [[ $VERBOSE_LOGGING == "high" ]]
then
    set -x
    version='1.1.1.1 $Source: 61haes_r711 43haes/usr/sbin/cluster/sa/filenet/sbin/cl_filenet_process_engine_stop.sh 1$'
fi

DEBUG=${DEBUG:-"0"}
VERBOSE=${VERBOSE:-"0"}
PE_USER_NAME=""

NUM_ARGS=$#

(( $NUM_ARGS == 0 )) && usage

set -- $(getopt Dv $* 2> /dev/null)

(( $? != 0 )) && {
    usage
}

while [[ $1 != -- ]]
do
    case $1 in
        -D) # Verbose on + Debug on
            VERBOSE=1
            DEBUG=1
            shift
            ;;
        -v) # Verbose on
            VERBOSE=1
            shift
            ;;
        *)
            usage
            ;;
    esac
done

shift    # get rid of the trailing --

PE_USER_NAME=$1

echo "######################################################" >> $LOG_FILE
dspmsg -s 3 filenetsa.cat 5 "# PROCESS ENGINE STOP LOG" >> $LOG_FILE
echo "######################################################" >> $LOG_FILE

[[ -z "$PE_USER_NAME" ]] && {
    KLIB_SA_logmsg ERROR 2 6 filenetsa.cat "Process Engine user is missing\n"
    usage
}

isRunning

if (( $? == 0 )); then
    KLIB_SA_logmsg INFO 3 4 filenetsa.cat "Stopping Process Engine\n"
    doStop
    exit $?
fi

exit $?
