
#!/usr/bin/qsh
# // THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
# // 5724-I63, 5724-H88, 5655-N01, 5733-W61, 5733-W70, 5733-W80, 5733-W85 (C) COPYRIGHT International Business Machines Corp., 1997, 2012
# // All Rights Reserved * Licensed Materials - Property of IBM
# // US Government Users Restricted Rights - Use, duplication or disclosure
# // restricted by GSA ADP Schedule Contract with IBM Corp.
#
# //  DESCRIPTION:
# //      Script file used to start the node agent for
# //      an instance which is part of a Network Deployment cell.

. $(/usr/bin/dirname $0)/setupCmdLine

# Issue error message if we are unable to determine valid profile
CMD_NAME=`basename $0`

if [ "${INV_PRF_SPECIFIED:=}" != "" ] && [ "$INV_PRF_SPECIFIED" = "true" ]
then
    ${JAVA_HOME}/bin/java -cp "${WAS_HOME}/lib/commandlineutils.jar" com.ibm.ws.install.commandline.utils.CommandLineUtils -specifiedProfileNotExists -profileName $WAS_PROFILE_NAME
    exit 1
elif [ "${WAS_USER_SCRIPT_FILE_NOT_EXISTS:=}" != "" ] && [ "$WAS_USER_SCRIPT_FILE_NOT_EXISTS" = "true" ]
then
    ${JAVA_HOME}/bin/java -cp "${WAS_HOME}/lib/commandlineutils.jar" com.ibm.ws.install.commandline.utils.CommandLineUtils -wasUserScriptFileNotExists -wasUserScript $WAS_USER_SCRIPT
    exit 1
elif [ "${NO_DFT_PRF_EXISTS:=}" != "" ] && [ "$NO_DFT_PRF_EXISTS" = "true" ]
then
    ${JAVA_HOME}/bin/java -cp "${WAS_HOME}/lib/commandlineutils.jar" com.ibm.ws.install.commandline.utils.CommandLineUtils -noDefaultProfile -commandName $CMD_NAME
    exit 1
fi

printUsage()
{
   echo "startServer: [ server ] [ -instance instance | -profileName instance ]"
   echo "             [ -nowait ] [ -timeout seconds ] [ -cpyenvvar ]"
   echo "             [ -jobd Job_description ] [ -jobq Job_queue ]"
   echo "             [ -curlib Current_library ] [ -inllibl Initial_library_list ]"
   echo "             [ -outq Output_queue ] [ -sbs Subsystem ]"
   echo "             [ -inlaspgrp Initial_ASP_group ]"
   echo "             [ -usejobd ] [ -trace ] [ -help | -? ]"
}

SERVER=nodeagent
NOWAIT=
TIMEOUT=
TRACE=
USEJOBD=
CPYENVVAR=
CONFIG_ACTION_EXIT_CODE=
JOBD="${WAS_PROD_LIB}/QWASJOBD"
JOBQ="${WAS_PROD_LIB}/QWASJOBQ"
OUTQ="${WAS_PROD_LIB}/QWASOUTQ"
SBS="${WAS_PROD_LIB}/QWAS9"
SYSLIBL="*SYSVAL"
CURLIB="*CURRENT"
INLLIBL="*JOBD"
INLASPGRP="*JOBD"

while [ $# -gt 0 ]; do
  case $1 in
        -help)
               printUsage
               exit 0
               ;;
           -?)
               printUsage
               exit 0
               ;;
    -instance) shift
               ;;
    -profileName) shift
               ;;
      -nowait) NOWAIT=$1
               ;;
   -cpyenvvar) CPYENVVAR=$1
               ;;
     -timeout) TIMEOUT="$1 $2"
               shift
               ;;
        -jobd) shift
	       JOBD="$1"
               ;;
        -jobq) shift
	       JOBQ="$1"
               ;;
        -outq) shift 
	       OUTQ="$1"
               ;;
         -sbs) shift 
	       SBS="$1"
               ;;
     -syslibl) shift 
               SYSLIBL="$1"
               ;;
     -inllibl) shift
               INLLIBL="$1"
               ;;
      -curlib) shift
               CURLIB="$1"
               ;;
   -inlaspgrp) shift
               INLASPGRP="$1"
               ;;
     -usejobd) USEJOBD="'$1'"
               ;;
       -trace) TRACE="'$1'"
               ;;
           -*)
               echo "Unsupported option: $1"
               printUsage
               exit 1
               ;;
  esac
  shift
done

# Check if server is started
if [ -e $USER_INSTALL_ROOT/logs/${SERVER}/${SERVER}.pid ]; then
   JOB_ID=`cat $USER_INSTALL_ROOT/logs/${SERVER}/${SERVER}.pid`
   system -q "DSPJOBLOG ( ${JOB_ID} )" > /dev/null  
   if [ $? = 0 ]; then
       dspmsg ${WAS_OS400_MSGCAT_PATH} 14 "CWNATV07E: Application server %1$s in profile %2$s failed to start because it is already started or starting with job id %3$s.\n" ${SERVER} ${WAS_PROFILE_NAME} ${JOB_ID}
       exit 1
   fi
fi

if [ ! -e "${USER_INSTALL_ROOT}/config/cells/${WAS_CELL}/nodes/${WAS_NODE}/servers/${SERVER}/server.xml" ]; then
   dspmsg ${WAS_OS400_MSGCAT_PATH} 16 "CWNATV08E: No configuration defined for server: ${SERVER}.\n" ${SERVER}
   exit 1
fi

${WAS_HOME}/bin/runConfigActions
CONFIG_ACTION_EXIT_CODE=$?
if [ "${CONFIG_ACTION_EXIT_CODE}" != "0" ] && [ "${CONFIG_ACTION_EXIT_CODE}" != "2" ]; then
   dspmsg ${WAS_OS400_MSGCAT_PATH} 23 "CWNATV14E:  Application Server ${SERVER} in profile ${WAS_PROFILE_NAME} failed to start.\n" ${SERVER} ${WAS_PROFILE_NAME}
   dspmsg ${WAS_OS400_MSGCAT_PATH} 24 "CWNATV15E: ${WAS_HOME}/bin/runConfigActions execution failed with exit code: ${CONFIG_ACTION_EXIT_CODE}. Please check ${USER_INSTALL_ROOT}/properties/service/productDir/logs/runConfigActions.log for details.\n" ${WAS_HOME}/bin/runConfigActions ${CONFIG_ACTION_EXIT_CODE} ${USER_INSTALL_ROOT}/properties/service/productDir/logs/runConfigActions.log
   exit 1
fi

/QSYS.LIB/${WAS_LIB}.LIB/STRSVRWAIT.PGM \
  -pgm ${WAS_LIB}/QWASSTRSVR \
  -parm "'-profilePath' '${USER_INSTALL_ROOT}' '-server' '${SERVER}' ${TRACE} ${USEJOBD}" \
  -jobd ${JOBD} \
  -jobq ${JOBQ} \
  -outq ${OUTQ} \
  -sbs ${SBS} \
  -user QEJBSVR \
  -syslibl ${SYSLIBL} \
  -curlib ${CURLIB} \
  -inllibl "${INLLIBL}" \
  -inlaspgrp ${INLASPGRP} \
  ${NOWAIT} \
  ${TIMEOUT} \
  -profileName ${WAS_OS400_INSTANCE} \
  -server ${SERVER} \
  ${TRACE} \
  ${CPYENVVAR} \
  -profileRoot ${USER_INSTALL_ROOT} \
  -script startNode
