#!/usr/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/sa/filenet/sbin/cl_filenet_was_AE_CE_lsserver.sh 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 # @(#)19 1.1 src/43haes/usr/sbin/cluster/sa/filenet/sbin/cl_filenet_was_AE_CE_lsserver.sh, hacmp, 61haes_r714 11/28/11 15:26:32 ############################################################################# ## ## Name: cl_filenet_was_AE_CE_lsserver ## ## Description: Discovers and Lists the WebSphere Application Servers ## or Deployment Managers that may be available to ## Application Discovery ## ## Arguments: ## -i Node list to search ## -n Return Application Servers ## -d Return Deployment Managers ## ## Output: Appropriate SMIT output for select panel and creates ## temporary discovery file for later use. ## ############################################################################# ############################################################################# ## ## Name: configure_CE_AE_resources ## ## Description: Modify Content Engine RG after updating Application ## Engine resources and vice versa, if Application ## Engine and Content Engine are deployed under same ## app server. ## ## Remove Application Engine start-after Process Engine ## dependency, if any, as CE and AE are under single RG. ## ## Arguments: ## component ID ## ## Output: ## Info message of one RG for both AE and CE. ## ############################################################################# function configure_CE_AE_resources { [[ "$VERBOSE_LOGGING" == "high" ]] && set -x typeset RESOURCE_GROUP typeset NAME typeset VG="" typeset VG_LIST="" typeset APP_ID typeset CONFIG_COMPONENT_ID=$1 [[ "$CONFIG_COMPONENT_ID" == "FILENET_CONTENT_ENGINE" ]] && { NAME=CONTENT_ENGINE_RESOURCE_GROUP } [[ "$CONFIG_COMPONENT_ID" == "FILENET_APPLICATION_ENGINE" ]] && { NAME=APPLICATION_ENGINE_RESOURCE_GROUP } [[ "$COMP_ID" == "FILENET_APPLICATION_ENGINE" ]] && { [[ -n "$AE_INSTALL_PATH" ]] && { VG=$(KLIB_AIX_get_vg_by_path $AE_INSTALL_PATH) } } [[ "$COMP_ID" == "FILENET_CONTENT_ENGINE" ]] && { [[ -n "$CE_INSTALL_PATH" ]] && { VG=$(KLIB_AIX_get_vg_by_path $CE_INSTALL_PATH) } } APP_ID=$(KLIB_AIX_ODM_get_odm_fields "name=COMPONENT_ID and value=$CONFIG_COMPONENT_ID" HACMPsa_metadata application_id) RESOURCE_GROUP=$(KLIB_AIX_ODM_get_odm_fields "application_id=$APP_ID and name=$NAME" HACMPsa_metadata value) # # Update the resources to the resource group # [[ -n "$VG" ]] && { set -a eval $(clvt query resource_group $RESOURCE_GROUP) set +a [[ -n "$VG" ]] && { KLIB_UTIL_LIST_unique_key_list VG_LIST "$VOLUME_GROUP $VG" } clvt modify resource_group $RESOURCE_GROUP \ VOLUME_GROUP="$VG_LIST" APPLICATIONS="$APPLICATIONS" \ SERVICE_LABEL="$SERVICE_LABEL" FORCED_VARYON='false' \ VG_AUTO_IMPORT='true' FSCHECK_TOOL='fsck' \ RECOVERY_METHOD='parallel' FS_BEFORE_IPADDR='false' || { dspmsg -s $IMPORT_MSGSET $WASSACAT 200 "ERROR: Failed \ updating HACMP Resource Group $RESOURCE_GROUP.\n" $RESOURCE_GROUP exit 1 } } # # Modify the HACMPsa_metadata to reflect AE and CE are under # one RG # KLIB_SA_delete_metadata $APP_ID $NAME claddsaapp -a $APP_ID FILENET_AE_CE_RESOURCE_GROUP=$RESOURCE_GROUP # # Remove the dependency; application engine RG start after process engine # RG, if any, as AE and CE are under single RG. # [[ "$CONFIG_COMPONENT_ID" == "FILENET_APPLICATION_ENGINE" ]] && { PE_RG=$(clodmget -q "name=PROCESS_ENGINE_RESOURCE_GROUP" -f value -d "=" HACMPsa_metadata) PE_RG=${PE_RG//\"/} [[ -n "$PE_RG" ]] && { clrgdependency -t 'START_AFTER' -d -p "$PE_RG" -c "$RESOURCE_GROUP" clrgdependency -t 'START_AFTER' -a -p "$RESOURCE_GROUP" -c "$PE_RG" } } } # Load the common functions, logmsg, dbgmsg, errmsg, abort . /usr/es/lib/ksh93/common_functions.ksh93 PROGNAME=$(basename ${0}) PATH="$($(dirname ${0})/../../../utilities/cl_get_path all)" PATH=$PATH:/usr/bin:/etc:/usr/sbin:/usr/ucb:/sbin:/usr/es/sbin/cluster/sa/sbin FPATH_BASE=/usr/es/lib/ksh93 FPATH=$FPATH_BASE/hacmp:$FPATH_BASE/sa:$FPATH_BASE/aix:$FPATH_BASE/aix/odm:$FPATH_BASE/util/list export PATH FPATH umask -S u=rw,g=,o= [[ "$VERBOSE_LOGGING" == "high" ]] && set -x WASSA_HOME="/usr/es/sbin/cluster/sa/was" WASSA_ETC_PATH="$WASSA_HOME/etc" WASSA_SBIN_DIR="$WASSA_HOME/sbin" WASSA_DISC_FILE="$WASSA_ETC_PATH/was.disc" WAS_MIN_VERSION="6.0" WAS_MAX_VERSION="6.1" KLIB_MSGCATALOG="wassa.cat" KLIB_MSGSET=7 TYPE="" # Get the arguments. if set -- $(getopt i:C:nd $* 2>&1); then while [ $# != 0 ]; do case "$1" in -i) NODES=$2 shift ;; -d) # lists only Websphere Application Server node managed by HACMP TYPE="DEPLOYMENT_MANAGER" ;; -n) # lists only Websphere Application Server node not managed by HACMP TYPE="APPLICATION_SERVER" ;; -C) # component id COMP_ID=$2 shift ;; --) shift break ;; esac shift done fi if [[ -z $TYPE ]] ; then exit 0 fi header="TRUE" # Check that the WebSphere Smart Assist etc directory exists. if [[ ! -d "$WASSA_ETC_PATH" ]] ; then mkdir -p "$WASSA_ETC_PATH" fi # Remove old discovery file rm -f $WASSA_DISC_FILE DATE=$(date +"%m/%d/%y %H:%M:%S") echo "#" >> $WASSA_DISC_FILE echo "# This ksh93 source file was generated on $DATE" >> $WASSA_DISC_FILE echo "# Do NOT alter the content of this file" >> $WASSA_DISC_FILE echo "#" >> $WASSA_DISC_FILE echo "" >> $WASSA_DISC_FILE # display only components not managed by HACMP if [[ -n $NODES ]]; then NODES=$(echo "$NODES" | tr ',' ' ') for node in $NODES ; do cl_rsh $node $WASSA_SBIN_DIR/cl_wasdiscserver -q 2>/dev/null | while read line; do echo $line | IFS=: read component install_count install_path version install_vgs install_pvids profile_count profile_name profile_path ismanaged wascell wasnode servername typename endpoint_host # Make sure values were returned. Sometimes with bad installs, these values can be missing. if [[ -z $version || -z $profile_count || -z $profile_name || -z $profile_path || -z $typename ]] ; then continue fi # Check for version if (( $version < $WAS_MIN_VERSION || $version > $WAS_MAX_VERSION )) ; then continue fi # Check for multiple profiles if (( $profile_count > 1 )); then continue fi # Check for volume groups if [[ -z $install_vgs ]] ; then continue fi KLIB_HACMP_are_pvids_shared $install_pvids if (( $? != 0 )); then continue fi if [[ $TYPE == "APPLICATION_SERVER" ]] ; then # Check for federated if (( $ismanaged != 0 )); then continue fi # Check for APPLICATION_SERVER if [[ $typename != "APPLICATION_SERVER" ]] ; then continue fi APPLICATION_NAME=$(clodmget -q "name=WAS_CELL_NAME \ and value=$wascell" -f application_id -d "=" HACMPsa_metadata) APPLICATION_NAME=${APPLICATION_NAME//\"/} CONFIG_COMP_ID="" [[ -n "$APPLICATION_NAME" ]] && { # Look for already configured instances CONFIG_COMP_ID=$(clodmget -q \ "application_id=$APPLICATION_NAME and name=COMPONENT_ID" -f value -d "=" HACMPsa_metadata) CONFIG_COMP_ID=${CONFIG_COMP_ID//\"/} } [[ -z "$APPLICATION_NAME" ]] && { APPLICATION_NAME="WAS_NODE_${wascell}_${wasnode}" } [[ -n "$CONFIG_COMP_ID" ]] && { if [[ $CONFIG_COMP_ID == $COMP_ID ]]; then continue; else # # Check whether the WAS (app server) has been configured # using WAS smart assist. # RG entry would be added to HACMPsa_metadata with # "name = RESOURCE_GROUP" # RG=$(clodmget -q "application_id=$APPLICATION_NAME \ and name=RESOURCE_GROUP" -f value -d "=" HACMPsa_metadata) RG=${RG//\"/} [[ -n "$RG" ]] && { continue } # # Check whether the existing RG have resources for both # application engine and content engine # If it has then RG entry would be added to HACMPsa_metadata with # "name = FILENET_AE_CE_RESOURCE_GROUP" # RG=$(clodmget -q "application_id=$APPLICATION_NAME \ and name=FILENET_AE_CE_RESOURCE_GROUP" -f value -d "=" HACMPsa_metadata) RG=${RG//\"/} [[ -z "$RG" ]] && { configure_CE_AE_resources $CONFIG_COMP_ID } continue fi } if [[ "$header" == "TRUE" ]]; then printf "#Cell Node\n" printf "#---------------------------------------------------------------------\n" #printf " 1 2 3 4 5 6 7\n" #printf "1234567890123456789012345678901234567890123456789012345678901234567890\n" header="FALSE" fi printf "%-38s %s\n" ${wascell} ${wasnode} fi if [[ $TYPE == "DEPLOYMENT_MANAGER" ]] ; then # Check for DEPLOYMENT_MANAGER if [[ $typename != "DEPLOYMENT_MANAGER" ]] ; then continue fi APPLICATION_NAME="WAS_DM_${wascell}" # Look for already configured instances clquerysaapp -a $APPLICATION_NAME INSTALL_NODE_NAME > /dev/null 2>&1 if (( $? == 0 )) ; then continue; fi if [[ "$header" == "TRUE" ]]; then printf "#Cell Server Name\n" printf "#---------------------------------------------------------------------\n" #printf " 1 2 3 4 5 6 7\n" #printf "1234567890123456789012345678901234567890123456789012345678901234567890\n" header="FALSE" fi printf "%-38s %s\n" ${wascell} ${servername} fi echo "unset $APPLICATION_NAME" >> $WASSA_DISC_FILE echo "typeset -A $APPLICATION_NAME" >> $WASSA_DISC_FILE echo "$APPLICATION_NAME=( \\" >> $WASSA_DISC_FILE echo "\t[WAS_CELL_NAME]=\"${wascell}\"" >> $WASSA_DISC_FILE echo "\t[WAS_NODE_NAME]=\"${wasnode}\"" >> $WASSA_DISC_FILE echo "\t[WAS_SERVER_NAME]=\"${servername}\"" >> $WASSA_DISC_FILE echo "\t[WAS_TYPE]=\"${TYPE}\"" >> $WASSA_DISC_FILE echo "\t[INSTALL_NODE_NAME]=\"${node}\"" >> $WASSA_DISC_FILE echo "\t[PROFILE_NAME]=\"${profile_name}\"" >> $WASSA_DISC_FILE echo "\t[INSTALL_PATH]=\"${install_path}\"" >> $WASSA_DISC_FILE echo "\t[INSTALL_VGS]=\"${install_vgs}\"" >> $WASSA_DISC_FILE echo "\t[VG_PVIDS]=\"${install_pvids}\"" >> $WASSA_DISC_FILE echo "\t[ENDPOINT_HOST]=\"${endpoint_host}\"" >> $WASSA_DISC_FILE echo "\t[VERSION]=\"${version}\"" >> $WASSA_DISC_FILE echo ")" >> $WASSA_DISC_FILE echo "" >> $WASSA_DISC_FILE done done echo "" >> $WASSA_DISC_FILE exit 0 else dspmsg -s $KLIB_MSGSET $KLIB_MSGCATALOG 20 "ERROR: There is no %1\$s information in the discovery file.\n" "WebSphere Application Server" exit 1 fi