#!/bin/sh
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# bos720 src/bos/usr/lpp/bosinst/samples/AE/AS/updateWASProfile.sh 1.1 
#  
# Licensed Materials - Property of IBM 
#  
# COPYRIGHT International Business Machines Corp. 2008,2009 
# 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 

# @(#)45        1.1  src/bos/usr/lpp/bosinst/samples/AE/AS/updateWASProfile.sh, bosinst, bos720 3/29/09 15:20:35

#
# A utility for config WAS.
#
# usage: sh updateWASProfile  <parameters>

# source include for debug output
. /opt/IBM/AE/AS/debugWAS

echodebug "Updating the WebSphere profile with new configuration values"

WAS=/opt/IBM/WebSphere
WAS_HOME=$WAS/AppServer
WAS_PROFILES=$WAS/Profiles

touch $CONFIGWAS7/.started

if [ "$UNAME" = "AIX" ]
then
    FULL_HOSTNAME=`hostname`
else
    FULL_HOSTNAME=`cat /etc/HOSTNAME`
fi
#password=$WAS_PASSWORD
#WAS_PASSWORD=`cat $WAS_PROFILES/.ibm/password`
#WAS_USERNAME=`cat $WAS_PROFILES/.ibm/username`

#set all profiles as default unless overridden 
SET_AS_DEFAULT=true


updateProfile()
{
   echodebug "Updating profile: $WAS_PROFILES/$PROF_NAME"   
   if [ "$SET_AS_DEFAULT" = "true" ] ; then 
     echodebug "Setting the $PROF_NAME profile as the default"
     COMMAND="$WAS_HOME/bin/manageprofiles.sh -setDefaultName -profileName $PROF_NAME"
     if [ "$UNAME" = "AIX" ]
     then
	 su virtuser -c "$COMMAND"
     else
	 sudo -u virtuser $COMMAND
     fi
   fi  

   if [ "$NEW_NODE" = "" ]
   then
       NEW_NODE=$OLD_NODE
   fi

   if [ "$NEW_CELL" = "" ]
   then
       NEW_CELL=$OLD_CELL
   fi

   echodebug "Changing the cell, node, host name, and password"
   echodebug "  Host name: $FULL_HOSTNAME   Old node name: $OLD_NODE   New node name: $NEW_NODE"
   COMMAND="$WAS_PROFILES/$PROF_NAME/bin/wsadmin.sh -conntype NONE \
	   -c \"\\\$AdminTask changeHostName {-nodeName $OLD_NODE -hostName $FULL_HOSTNAME}\" \
           -c \"\\\$AdminTask changeFileRegistryAccountPassword {-userId virtuser -password $WAS_PASSWORD}\" \
	   -c \"\\\$AdminTask renameNode {-nodeName $OLD_NODE -newNodeName $NEW_NODE}\" \
	   -c \"\\\$AdminTask renameCell {-newCellName $NEW_CELL}\" \
	   -c \"\\\$AdminConfig save\""
   if [ "$UNAME" = "AIX" ]
   then
       su virtuser -c "$COMMAND"
   else
       sudo -u virtuser $COMMAND
   fi

    #Need to reset setupCmdLine otherwise rename isn't complete  
    echodebug "Updating setupCmdLine.sh" 
    cp $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh.orig
    sed -e s/WAS_NODE=$OLD_NODE/WAS_NODE=$NEW_NODE/g $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh |
         sed -e s/WAS_CELL=$OLD_CELL/WAS_CELL=$NEW_CELL/g > $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh.new
    mv $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh.new $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh
    chown virtuser $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh
    chgrp $WASGROUP $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh
    chmod +x $WAS_PROFILES/$PROF_NAME/bin/setupCmdLine.sh
}

while [ $# -ne 0 ]
do
	case $1 in
		-type*)
		type=$2
		;;
		-cell_name*)
		cell_name=$2
		;;
		-node_name*)
		node_name=$2
		;;
		-dmgr_federate*)
		dmgr_federate=$2
		;;
		-dmgr_host*)
		dmgr_host=$2
		;;
		-dmgr_jmxport*)
		dmgr_jmxport=$2
		;;
		-dmgr_conntype*)
		dmgr_conntype=$2
		;;
		-dmgr_user*)
		dmgr_userid=$2
		;;
		-dmgr_pass*)
		dmgr_password=$2
		;;
		-profile_num*)
		profile_num=$2
		;;
        -jmgr_register*)
		jmgr_register=$2
		;;				
		-jmgr_host*)
		jmgr_host=$2
		;;
		-jmgr_httpport*)
		jmgr_httpport=$2
		;;
		-jmgr_user*)
		jmgr_userid=$2
		;;
		-jmgr_pass*)
		jmgr_password=$2
		;;
		-password*)
		password=$2
		;;
		-autostart*)
		autostart=$2
		;;		
		*)
		;;
	esac
	shift 2
done



#echo all parameters
if [ $type ] ; then 
   echodebug "type=$type"
fi
if [ $cell_name ] ; then 
   echodebug "cell_name=$cell_name"
fi
if [ $node_name ] ; then 
   echodebug "node_name=$node_name"
fi
if [ $dmgr_federate ] ; then 
   echodebug "dmgr_federate=$dmgr_federate"
fi
if [ $dmgr_host ] ; then 
   echodebug "dmgr_host=$dmgr_host"
fi
if [ $dmgr_conntype ] ; then 
   echodebug "dmgr_conntype=$dmgr_conntype"
fi
if [ $dmgr_jmxport ] ; then 
   echodebug "dmgr_jmxport=$dmgr_jmxport"
fi
if [ $dmgr_userid ] ; then 
   echodebug "dmgr_userid=$dmgr_userid"
fi
if [ $dmgr_password ] ; then 
   echodebug "dmgr_password=xxxxxx"
fi
if [ $profile_num ] ; then 
   echodebug "profile_num=$profile_num"
fi

if [ $jmgr_register ] ; then 
   echodebug "jmgr_register=$jmgr_register"
fi
if [ $jmgr_host ] ; then 
   echodebug "jmgr_host=$jmgr_host"
fi
if [ $jmgr_httpport ] ; then 
   echodebug "jmgr_httpport=$jmgr_httpport"
fi
if [ $jmgr_userid ] ; then 
   echodebug "jmgr_userid=$jmgr_userid"
fi
if [ $jmgr_password ] ; then 
   echodebug "jmgr_password=xxxxxx"
fi
if [ $autostart ] ; then 
   echodebug "autostart=$autostart"
fi

cd $WAS_HOME

if [ "$type" = "dmgr" ] ; then
   
   PROF_NAME=DefaultDmgr01
   OLD_CELL=DefaultDmgrCell01
   NEW_CELL=$cell_name
   OLD_NODE=DefaultDmgrNode01
   NEW_NODE=$node_name
   updateProfile
   
fi


if [ "$type" = "default" ] ; then
       
   PROF_NAME=DefaultAppSrv01 
   OLD_CELL=DefaultAppSrvCell01
   NEW_CELL=$cell_name  
   OLD_NODE=DefaultAppSrvNode01
   NEW_NODE=$node_name
   
   updateProfile

   if [ "$dmgr_federate" = "true" ] ; then 
	echodebug "Starting the deployment manager federation"
	COMMAND="$WAS_PROFILES/DefaultAppSrv01/bin/addNode.sh $dmgr_host $dmgr_jmxport -conntype $dmgr_conntype -username $dmgr_userid -password $dmgr_password -trace"
	if [ "$UNAME" = "AIX" ]
	then
	    su virtuser -c "$COMMAND"
	else
	    sudo -u virtuser $COMMAND
	fi
   fi
fi


if [ "$type" = "custom" ] ; then
 
   PROF_NAME=DefaultCustom01 
   OLD_CELL=DefaultCustomCell01 
   NEW_CELL=$cell_name 
   OLD_NODE=DefaultCustomNode01
   NEW_NODE=$node_name   
   updateProfile
  
   if [ "$dmgr_federate" = "true" ] ; then 
	echodebug "Starting the deployment manager federation"
	COMMAND="$WAS_PROFILES/DefaultCustom01/bin/addNode.sh $dmgr_host $dmgr_jmxport -conntype $dmgr_conntype -username $dmgr_userid -password $dmgr_password -trace"
	if [ "$UNAME" = "AIX" ]
	then
	    su virtuser -c "$COMMAND"
	else
	    sudo -u virtuser $COMMAND
	fi
   fi
fi

if [ "$type" = "adminagent" ] ; then

   PROF_NAME=DefaultAdminAgent01 
   OLD_CELL=DefaultAdminAgentCell01
   NEW_CELL=$cell_name  
   OLD_NODE=DefaultAdminAgentNode01
   NEW_NODE=$node_name   
   updateProfile

   echodebug "Start the administrative agent so profiles can be registered"
   COMMAND="$WAS_PROFILES/DefaultAdminAgent01/bin/startServer.sh adminagent -trace &"
   if [ "$UNAME" = "AIX" ]
   then
       su virtuser -c "$COMMAND"
   else
       sudo -u virtuser $COMMAND
   fi

   # update any app servers defined
   SET_AS_DEFAULT=false 
   profile_index=1
   while [ $profile_index -le $profile_num ]
   do    
      	AA=AA0$profile_index
		PROF_NAME=DefaultAppSrv$AA 
            OLD_CELL=DefaultAppSrvCell$AA  
		NEW_CELL=$cell_name$AA 
	      OLD_NODE=DefaultAppSrvNode$AA
		NEW_NODE=$node_name$AA		
		updateProfile
		
		echodebug "Registering DefaultAppSrv$AA"
        #Grab username / password from ENV
		COMMAND="$WAS_PROFILES/DefaultAdminAgent01/bin/registerNode.sh -conntype SOAP -host localhost -port 8877 -profilePath $WAS_PROFILES/DefaultAppSrv$AA -username $WAS_USERNAME -password $WAS_PASSWORD -trace"
		if [ "$UNAME" = "AIX" ]
		then
		    su virtuser -c "$COMMAND"
		else
		    sudo -u virtuser $COMMAND
		fi
		
		if [ "$jmgr_register" = "true" ] ; then 
		    echodebug "registering the node with the job manager"
		    COMMAND="$WAS_PROFILES/DefaultAdminAgent01/bin/wsadmin.sh -conntype SOAP -port 8877 -user $WAS_USERNAME -password $WAS_PASSWORD -c \"\\\$AdminTask registerWithJobManager {-host $jmgr_host -port $jmgr_httpport -managedNodeName $NEW_NODE -user $jmgr_user -password $jmgr_password }\""
		    if [ "$UNAME" = "AIX" ]
		    then
			su virtuser -c "$COMMAND"
		    else
			sudo -u virtuser $COMMAND
		    fi
		fi
		
		let profile_index=$profile_index+1
   done
   
   if [ $profile_num != 4 ] ; then
     echodebug "Validating the profile registry"
     COMMAND="$WAS_HOME/bin/manageprofiles.sh -validateAndUpdateRegistry"
     if [ "$UNAME" = "AIX" ]
     then
	 su virtuser -c "$COMMAND"
     else
	 sudo -u virtuser $COMMAND
     fi
   fi  
       
   if [ $autostart != 'true' ] ; then 
         echodebug "Stop the administrative agent as user did not want it started"
	 COMMAND="$WAS_PROFILES/DefaultAdminAgent01/bin/stopServer.sh adminagent -username $WAS_USERNAME -password $WAS_PASSWORD -trace &"
	 if [ "$UNAME" = "AIX" ]
	 then
             su virtuser -c "$COMMAND"
	 else
             sudo -u virtuser $COMMAND
	 fi
   fi

fi

if [ "$type" = "jmgr" ] ; then
    
    PROF_NAME=DefaultJobManager01
    OLD_CELL=DefaultJobManagerCell01
    NEW_CELL=$cell_name
    OLD_NODE=DefaultJobManagerNode01
    NEW_NODE=$node_name    
    updateProfile   
    
fi

if [ "$type" = "cell" ] ; then   

   #setup to update the cell dmgr profile
   PROF_NAME=DefaultCellDmgr01
   OLD_CELL=DefaultCellDmgrCell01
   NEW_CELL=$cell_name
   OLD_NODE=DefaultCellDmgrNode01
   NEW_NODE=$node_name   
   updateProfile
   
   #also need to change the app server node under the dmgr
   OLD_NODE=DefaultCellAppSrvNode01
   APP_NODE_SUFFIX=AppSrvNode
   NEW_NODE=$node_name$APP_NODE_SUFFIX
   echodebug "Updating the application server node in the cell deployment manager profile"
   echodebug "   Host name: $FULL_HOSTNAME   Old node name: $OLD_NODE   New node name: $NEW_NODE"
   COMMAND="$WAS_PROFILES/$PROF_NAME/bin/wsadmin.sh -conntype NONE \
		-c \"\\\$AdminTask changeHostName {-nodeName $OLD_NODE -hostName $FULL_HOSTNAME}\" \
		-c \"\\\$AdminTask renameNode {-nodeName $OLD_NODE -newNodeName $NEW_NODE}\""
   if [ "$UNAME" = "AIX" ]
   then
       su virtuser -c "$COMMAND"
   else
       sudo -u virtuser $COMMAND
   fi

   #set up to update the cell appserver profile
   PROF_NAME=DefaultCellAppSrv01
   OLD_CELL=DefaultCellDmgrCell01
   NEW_CELL=$cell_name
   OLD_NODE=DefaultCellAppSrvNode01
   NEW_NODE=$node_name$APP_NODE_SUFFIX
   SET_AS_DEFAULT=false
   updateProfile
   
   #also need to change the host name in the dmgr node in the appserver profile
   OLD_NODE=DefaultCellDmgrNode01
   echodebug "Updating the deployment manager node in the cell application server profile"
   echodebug "   Host name: $FULL_HOSTNAME   Old node name: $OLD_NODE"
   COMMAND="$WAS_PROFILES/$PROF_NAME/bin/wsadmin.sh -conntype NONE \
           -c \"\\\$AdminTask changeHostName {-nodeName $OLD_NODE -hostName $FULL_HOSTNAME}\""
   if [ "$UNAME" = "AIX" ]
   then
       su virtuser -c "$COMMAND"
   else
       sudo -u virtuser $COMMAND  
   fi
fi

echodebug "Done updating the WebSphere profile with new configuration values"

echodebug "Creating Marker file: $CONFIGWAS7/.ok"
touch $CONFIGWAS7/.ok
