#!/bin/ksh
# Copyright 2005 Sun Microsystems, Inc., All Rights Reserved.
#
# @(#)config_EsmPortal	1.132 05/10/13
#
# This software is the confidential and proprietary information of Sun
# Microsystems, Inc. ("Confidential Information"). You shall not
# disclose such Confidential Information and shall use it only in
# accordance with the terms of the license agreement you entered into
# with Sun.
#
# SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
# THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
# TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
# ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
# DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
#
# Exit Codes:
#   0 = success
#   2 = config/properties error (fatal)
#   3 = stop JES servers failure (fatal)
#   4 = start JES servers failure (fatal)
#   5 = invalid amAdmin password (could retry)
#   6 = cacao start/restart failed (???)
#   7 = webservd user does not exist creation failed
#   8 = JES was detected to not be installed properly/completely
#
###############################################
# Defines
###############################################

AWK=/usr/bin/awk
CAT=/usr/bin/cat
CP=/usr/bin/cp
ECHO=/usr/bin/echo
GREP=/usr/bin/grep
ID=/usr/bin/id
LN=/usr/bin/ln
MV=/usr/bin/mv
NAWK=/usr/bin/nawk
RM=/usr/bin/rm
SED=/usr/bin/sed
UNIQ=/usr/bin/uniq

exitStatus=0;
ESM_BASE="`pkginfo -r SUNWesmportal`"
CACAO_BASE="`pkginfo -r SUNWcacao`"
BASE_DIR="`pkginfo -r SUNWesmdb`/SUNWesmportal/config"
WEB_BASEDIR="`pkginfo -r SUNWwbsvr`"
BELL_CHAR='\a'
HOSTNAME="`uname -n`"
PS_FILE="PSConfig.properties"
STATE_FILE="/etc`pkginfo -r SUNWps`/SUNWps/${PS_FILE}"
CREATE_INFILE=${BASE_DIR}/../profiles/createEsmPortal.xml
CREATE_CONVFILE=${BASE_DIR}/../profiles/createEsmPortalConverted.xml
DP_INFILE=${BASE_DIR}/../profiles/dp-esmportal.xml
DP_CONVFILE=${BASE_DIR}/../profiles/dp-esmportalConverted.xml
DPA_INFILE=${BASE_DIR}/../profiles/dp-esmadmin.xml
DPA_CONVFILE=${BASE_DIR}/../profiles/dp-esmadminConverted.xml
DATESTAMP=`date +%m%d\%H\%M`
DESKTOP_BASE="/etc`pkginfo -r SUNWps`/SUNWps/desktop"

###############################################
# Get configuration from file
###############################################
GrabConfig() {
  local FILE=$1
  local KEY=$2
  local SEPARATOR=$3

  ANSWER=`$GREP "^$KEY$SEPARATOR" $FILE | $UNIQ | $SED -e "s/$KEY$SEPARATOR//"`
}

#
#   Prevent breaking out during portal config operations
#   Can leave the portal in an unusable state.
#
_backout () {
    # reset traps at this point - otherwise end up in a loop if
    # try to ^C out
    trap 2 3 15
    $ECHO "Please wait for all changes to complete."
}

###############################################
# Main
###############################################

# Need get_password () from esmlib.sh
. ${BASE_DIR}/../esmlib.sh

#
# Must be root to perform these functions
#
if [ `$ID | $AWK '{print $1}'` != "uid=0(root)" ]; then
  $ECHO
  $ECHO "You must be root user. $BELL_CHAR"
  $ECHO
  exit 2
fi

#
# Need amAdmin password to perform these functions
#
if [ -z "$1" ]; then
    $ECHO "Must supply amAdmin password. $BELL_CHAR"
    get_password
else
    password="$1"
fi

#
# Verify JES Portal Servers are Installed
#
${BASE_DIR}/../bin/checkjes3installed >/dev/null 2>&1
if [ $? = 1 ]; then
#    ${BASE_DIR}/../bin/checkjes2installed
#    if [ $? = 1 ]; then
        $ECHO
        $ECHO " Java ES Portal is not completely/properly installed $BELL_CHAR"
        $ECHO
        exit 8
#    else
#        $ECHO "Detected Java ES 2 Portal Servers"
#    fi
else
    $ECHO "Detected Java ES 3 Portal Servers"
fi

#
# Need portal server config properties to perform these functions
#
if [ ! -f $STATE_FILE ]; then
  $ECHO
  $ECHO "Error: $STATE_FILE does not exist. $BELL_CHAR"
  $ECHO
  exit 2
fi

#
# Need portal server config properties to perform these functions
#
GrabConfig $STATE_FILE "IDSAME_BASEDIR" "="
if [ "$ANSWER" != "" ]; then
  IDSAME_BASEDIR=$ANSWER
else
  $ECHO
  $ECHO "Error: Cannot determine IDSAME_BASEDIR. $BELL_CHAR"
  $ECHO
  exit 2
fi

#
# Need portal server config properties to perform these functions
#
GrabConfig $STATE_FILE "BASEDIR" "="
if [ "$ANSWER" != "" ]; then
  PS_BASEDIR=$ANSWER
else
  $ECHO
  $ECHO "Error: Cannot determine BASEDIR. $BELL_CHAR"
  $ECHO
  exit 2
fi

#
# Need portal server config properties to perform these functions
#
GrabConfig $STATE_FILE "DEPLOY_INSTANCE" "="
if [ "$ANSWER" != "" ]; then
  DEPLOY_INSTANCE=$ANSWER
else
  $ECHO
  $ECHO "Error: Cannot determine DEPLOY_INSTANCE. $BELL_CHAR"
  $ECHO
  exit 2
fi

AM_FILE="$IDSAME_BASEDIR/SUNWam/lib/AMConfig.properties"
ADMIN_DN=`$GREP "^com.sun.identity.authentication.super.user=" $AM_FILE | $SED -e "s/com.sun.identity.authentication.super.user=//"`
ROOT_DN=`$GREP "^com.iplanet.am.rootsuffix=" $AM_FILE | $SED -e "s/com.iplanet.am.rootsuffix=//"`
ORG_DN=`$GREP "^com.iplanet.am.defaultOrg=" $AM_FILE | $SED -e "s/com.iplanet.am.defaultOrg=//"`
HOST=`$GREP "^com.iplanet.am.directory.host=" $AM_FILE | $SED -e "s/com.iplanet.am.directory.host=//"`
if [ "$ORG_DN" != "$ROOT_DN" ]; then
  ORG_DN="$ORG_DN,$ROOT_DN"
fi
ESM_ORG_NAME="esmjss.com"
ORG_NAMING_ATTR="o"
ESM_ORG_DN="${ORG_NAMING_ATTR}=${ESM_ORG_NAME},${ORG_DN}"
SERVER_CONFIG="${WEB_BASEDIR}/https-${DEPLOY_INSTANCE}/config/server.xml"
SERVER_CONFIG_BK="${WEB_BASEDIR}/https-${DEPLOY_INSTANCE}/config/server.xml-orig.${DATESTAMP}"
SERVER_ADMIN="${WEB_BASEDIR}/https-admserv/config/magnus.conf"
SERVER_ADMIN_BK="${WEB_BASEDIR}/https-admserv/config/magnus.conf-orig.${DATESTAMP}"
SERVER_USER="${WEB_BASEDIR}/https-${DEPLOY_INSTANCE}/config/magnus.conf"
SERVER_USER_BK="${WEB_BASEDIR}/https-${DEPLOY_INSTANCE}/config/magnus.conf-orig.${DATESTAMP}"
AM_FILE_BK="$IDSAME_BASEDIR/SUNWam/lib/AMConfig.properties.${DATESTAMP}"

if [ -z "${ADMIN_DN}" ] || [ -z "${ROOT_DN}" ] || [ -z "${ORG_DN}" ] || [ -z "${HOST}" ] || [ -z "${JSSTAG1}" ] || [ -z "${JCETAG1}" ] || [ -z "${JSSTAG2}" ] || [ -z "${JCETAG2}" ] || [ -z "${JSSTAG3}" ] || [ -z "${JCETAG3}" ] || [ -z "${TAG}" ] || [ -z "${HEADLESS}" ] || [ -z "${LOGLINE}" ] || [ -z "${CLASSPATH}" ] || [ -z "${CLASSPATHADD}" ] || [ -z "${DOCSOURCE}" ] || [ -z "${JVM_MS}" ] || [ -z "${JVM_MXPERM}" ] || [ -z "${JVM_MXSIZE}" ] || [ -z "${JVM_MXSIZE_DEF}" ] || [ -z "${BRANDING}" ] || [ -z "${AM_COOKIE_NAME}" ] || [ -z "${AM_SESSION}" ] || [ -z "${DEPLOY_INSTANCE}" ] || [ -z "${DEFAULTUSER}" ] || [ -z "${WEBSERVD}" ]; then 
  $ECHO
  $ECHO "Parse Config Properties ERROR. $BELL_CHAR"
  $ECHO "One or more of the following properties are NULL"
  $ECHO
  $ECHO "admin_dn     = ${ADMIN_DN}"
  $ECHO "root_dn      = ${ROOT_DN}"
  $ECHO "org_dn       = ${ORG_DN}"
  $ECHO "host         = ${HOST}"
  $ECHO "jsstag1      = ${JSSTAG1}"
  $ECHO "jcetag1      = ${JCETAG1}"
  $ECHO "jsstag2      = ${JSSTAG2}" 
  $ECHO "jcetag2      = ${JCETAG2}" 
  $ECHO "jsstag3      = ${JSSTAG3}" 
  $ECHO "jcetag3      = ${JCETAG3}" 
  $ECHO "am_cookie_name = ${AM_COOKIE_NAME}" 
  $ECHO "am_session   = ${AM_SESSION}" 
  $ECHO "deploy_instance = ${DEPLOY_INSTANCE}" 
  $ECHO "tag          = ${TAG}" 
  $ECHO "headless     = ${HEADLESS}"
  $ECHO "logline      = ${LOGLINE}"
  $ECHO "classpath    = ${CLASSPATH}"
  $ECHO "classpathadd = ${CLASSPATHADD}"
  $ECHO "docsource    = ${DOCSOURCE}"
  $ECHO "jvm_ms       = ${JVM_MS}"
  $ECHO "jvm_mxperm   = ${JVM_MXPERM}"
  $ECHO "jvm_mxsize   = ${JVM_MXSIZE}"
  $ECHO "jvm_mxsize_def   = ${JVM_MXSIZE_DEF}"
  $ECHO "branding     = ${BRANDING}"
  $ECHO "defaultuser  = ${DEFAULTUSER}"
  $ECHO "webservd     = ${WEBSERVD}"
  exit 2
fi

#
#DEBUG
#
#$ECHO
#$ECHO "STATE_FILE:\t${STATE_FILE}"
#$ECHO "JDK_DIR:\t${JDK_DIR}"
#$ECHO "IDSAME_BASEDIR:\t${IDSAME_BASEDIR}"
#$ECHO "PS_BASEDIR:\t${PS_BASEDIR}"
#$ECHO "ADMIN_DN:\t${ADMIN_DN}"
#$ECHO "ROOT_DN:\t${ROOT_DN}"
#$ECHO "ORG_DN:\t\t${ORG_DN}"
#$ECHO "ESM_ORG_DN:\t\t${ESM_ORG_DN}"
#$ECHO "HOST:\t\t${HOST}"
#$ECHO "BASE_DIR:\t\t${BASE_DI}"
#$ECHO

#
# From here on out we need no interuptions.
#
trap 2 3 15

#
# Check for webservd group
# 
_group="webservd"
/usr/bin/grep "^$_group" /etc/group > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "Group $_group already exists - skip creating group"
else
    #
    # Create user group in /etc/group
    #
    /usr/sbin/groupadd -g 80 -o $_group > /dev/null
    if [ $? -ne 0 ]; then :
        echo "ERROR: Unable to add group $_group."
        exit 7
    fi
fi
#
# Check for webservd username
#
_user="webservd"
/usr/bin/grep "^$_user" /etc/passwd > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "User $_user already exists - skip creating user"
else
    /usr/sbin/useradd -c "WebServer Reserved UID" -g $_group -u 80 -d "/" $_user > /dev/null
    if [ $? -ne 0 ]; then :
        echo "ERROR: Unable to add user $_user."
        exit 7
    fi
fi
#
# Validate the Portal Servers are up and running and accessible
#
${BASE_DIR}/../bin/checkJESRunning $password
exitStatus=$?
if [ $exitStatus != 0 ]; then
    exit $exitStatus
fi

#
# link the esmportal desktop into the portal desktop
#
cd ${DESKTOP_BASE}
$ECHO "Deploy desktop esmportal"
$RM -rf esmportal
$LN -s ${BASE_DIR}/../desktop/esmportal esmportal

cd ${BASE_DIR}/../desktop/default/tld/
jar -xvf portletSetup.jar META-INF/portletSetupTags.tld
$CP META-INF/portletSetupTags.tld .
$RM -rf META-INF
cd ${DESKTOP_BASE}/default/tld
$CP ${BASE_DIR}/../desktop/default/tld/portletSetupTags.tld portletSetupTags.tld

#
# link the esmportal desktop help into the portal desktop
#
cd ${PS_BASEDIR}/SUNWps/web-src/docs/desktop
$ECHO "Deploy desktop help"
$RM -rf esmportal
$LN -s ${BASE_DIR}/../docs/esmportal esmportal

cd ${PS_BASEDIR}/SUNWps/web-src/docs/en/desktop
$RM -rf esmportal
$LN -s ${BASE_DIR}/../docs/esmportal esmportal

#
# Deploy the ESM Product Logo Images/Theme
#
cd ${BASE_DIR}/../images
$ECHO "Deploy product images"
mkdir -p $PS_BASEDIR/SUNWps/web-src/images/esmportal
$CP ./* $PS_BASEDIR/SUNWps/web-src/images/esmportal/

#
# Deploy NestedTabContainerProvider properties
#
cd ${BASE_DIR}/../classes
$ECHO "Deploy NestedTabContainerProvider properties"

mkdir -p $PS_BASEDIR/SUNWps/web-src/WEB-INF/classes
$CP NestedTabContainerProvider.properties $PS_BASEDIR/SUNWps/web-src/WEB-INF/classes/
$CP NestedTabContainerProvider_en.properties $PS_BASEDIR/SUNWps/web-src/WEB-INF/classes/
$ECHO "Deploy EsmTabContainerProvider properties"
$CP NestedTabContainerProvider.properties $PS_BASEDIR/SUNWps/web-src/WEB-INF/classes/EsmTabContainerProvider.properties
$CP NestedTabContainerProvider_en.properties $PS_BASEDIR/SUNWps/web-src/WEB-INF/classes/EsmTabContainerProvider_en.properties

#
# Deploy stylesheet images to esmportal-desktop area
#
$ECHO "Deploy stylesheets/images for portlets"
mkdir -p ${BASE_DIR}/../base
cd ${BASE_DIR}/../base
jar -xf ../warfiles/base.war images/
cd ${BASE_DIR}/../base/images
mkdir -p $PS_BASEDIR/SUNWps/web-src/esmportal/images
$CP -r alarms alerts other table $PS_BASEDIR/SUNWps/web-src/esmportal/images/
cd ${BASE_DIR}/..
$RM -rf ${BASE_DIR}/../base

#
# Deploy stylesheets to esmportal-desktop area
#
$ECHO "Deploy stylesheets/images for desktop"
mkdir -p $PS_BASEDIR/SUNWps/web-src/esmportal/css
cd ${BASE_DIR}/../web-src/esmportal/css
$CP *.css $PS_BASEDIR/SUNWps/web-src/esmportal/css/

#
# Deploy LockHart stylesheets/images/js to esmportal-desktop area
#
mkdir -p $PS_BASEDIR/SUNWps/web-src/esmportal/dt
cd ${BASE_DIR}/../web-src/esmportal/
$CP -r ${BASE_DIR}/../web-src/esmportal/dt $PS_BASEDIR/SUNWps/web-src/esmportal

#
# Deploy other LockHart files
#
mkdir -p $PS_BASEDIR/SUNWps/web-src/WEB-INF/lib
cd ${BASE_DIR}/../web-src/lib/
$CP suntheme.jar $PS_BASEDIR/SUNWps/web-src/WEB-INF/lib/
$CP esm_theme.jar $PS_BASEDIR/SUNWps/web-src/WEB-INF/lib/
$CP jsf-api.jar $PS_BASEDIR/SUNWps/web-src/WEB-INF/lib/
cd ${BASE_DIR}/../web-src/xml/
$CP esmportal.xml $PS_BASEDIR/SUNWps/web-src/WEB-INF/xml/
cd ${BASE_DIR}/../desktop/default/tld/
$CP portletSetup.jar $PS_BASEDIR/SUNWps/web-src/WEB-INF/lib/

#
# Now Redeploy all images to all existing server instances
#
$PS_BASEDIR/SUNWps/bin/deploy redeploy

#
# Enable headless option for the webserver
# Enable Logging
# Defined doc source
# Define esm branding
# update web server classpath
#
$CP ${SERVER_CONFIG} ${SERVER_CONFIG_BK}
if [ $? = 0 ]; then
    $SED -e "s#${TAG}#${HEADLESS}${TAG}#g" \
         -e "/${LOGLINE}/d" \
         -e "s#${CLASSPATH}#${CLASSPATH}${CLASSPATHADD}#g" \
         -e "s#${TAG}#${DOCSOURCE}${TAG}#g" \
         -e "s#${TAG}#${BRANDING}${TAG}#g" ${SERVER_CONFIG_BK} > ${SERVER_CONFIG}
else
    exitStatus=$?
    $ECHO "Backup of ${SERVER_CONFIG} FAILED"
    $ECHO "${SERVER_CONFIG} Changes not performed"
fi

#
# For deployment we need to increase PermGen size
# We need to remove this after deployment completes
#
if [ $exitStatus -eq 0 ]; then
    $CP ${SERVER_CONFIG} ${SERVER_CONFIG_BK}
    if [ $? = 0 ]; then
        $SED -e "s#${TAG}#${JVM_MS}${TAG}#g" \
            -e "s#${JVM_MXSIZE_DEF}#${JVM_MXSIZE}#g" \
            -e "s#${TAG}#${JVM_MXPERM}${TAG}#g" ${SERVER_CONFIG_BK} > ${SERVER_CONFIG}
    else
        exitStatus=$?
        $ECHO "Backup of ${SERVER_CONFIG} FAILED"
        $ECHO "${SERVER_CONFIG} Changes not performed"
    fi
fi


#
# Enable JCE security for the webserver
#
if [ $exitStatus -eq 0 ]; then
    $CP ${AM_FILE} ${AM_FILE_BK}
    if [ $? = 0 ]; then
        $SED -e "s#${JSSTAG1}#${JCETAG1}#g" \
            -e "s#${JSSTAG2}#${JCETAG2}#g" \
            -e "s#${JSSTAG3}#${JCETAG3}#g" \
            -e "s/\#com.sun.identity.server.fqdnMap\[<invalid-name>\]=<valid-name>/com.sun.identity.server.fqdnMap\[${HOSTNAME}\]=${HOST}/g" \
            -e "s#${AM_SESSION}#${AM_COOKIE_NAME}${HOST}.${ESM_ORG_NAME}#g" ${AM_FILE_BK} > ${AM_FILE}
    else
        exitStatus=$?
        $ECHO "Backup of ${AM_FILE} failed"
        $ECHO "${AM_FILE} Changes not performed"
    fi
fi

#
# Change Web Admin server to run as non root user
#
if [ $exitStatus -eq 0 ]; then
    cp ${SERVER_ADMIN} ${SERVER_ADMIN_BK}
    if [ $? = 0 ]; then
        $SED -e "s#${DEFAULTUSER}#${WEBSERVD}#g" ${SERVER_ADMIN_BK} > ${SERVER_ADMIN}
    else
        exitStatus=$?
        $ECHO "Backup of ${SERVER_ADMIN} FAILED"
        $ECHO "${SERVER_ADMIN} Changes not performed"
    fi
fi

if [ $exitStatus -eq 0 ]; then
    #
    # Deploy Release Notes 
    #
    #cd ${BASE_DIR}/..
    #$CP releaseNotes.html ${WEB_BASEDIR}/docs/

    #
    # Deploy rss cache files
    #
    cd ${BASE_DIR}/../docs
    $CP -r rsscache ${WEB_BASEDIR}/docs/
fi

#
# Change Web server to run as non root user
#
if [ $exitStatus -eq 0 ]; then
    cp ${SERVER_USER} ${SERVER_USER_BK}
    if [ $? = 0 ]; then
        $SED -e "s#${DEFAULTUSER}#${WEBSERVD}#g" ${SERVER_USER_BK} > ${SERVER_USER}
        #
        # Change filesystems access to non root user
        #
        USERDIR=`grep "TempDir" ${SERVER_USER} | $AWK '{print $2}'`
        ADMDIR=`grep "TempDir" ${SERVER_ADMIN} | $AWK '{print $2}'`
        chown -R webservd:webservd /etc/opt/SUNWps /etc/opt/SUNWam /opt/SUNWam /opt/SUNWps /opt/SUNWwbsvr /var/opt/SUNWam /var/opt/SUNWps /opt/SUNWma ${USERDIR} ${ADMDIR} >/dev/null 2>&1
    else
        exitStatus=$?
        $ECHO "Backup of ${SERVER_USER} FAILED"
        $ECHO "${SERVER_USER} Changes not performed"
    fi
fi

if [ $exitStatus -eq 0 ]; then
    #
    # stop/start the portal web server
    #
    $ECHO
    $ECHO "Restarting the portal web server"
    $ECHO
    ${BASE_DIR}/../bin/stopwebserver
    ${BASE_DIR}/../bin/startwebserver

    #
    # Deploy the base esm portlets
    #
    cd ${BASE_DIR}/../warfiles
    $ECHO "Deploy ESM Base Portlets"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g base.war >/dev/null 2>&1

    #
    # Deploy the rss portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-smprssreader.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Deploy the search portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-search.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Deploy the drm portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-drm.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Deploy the poolagg portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-poolagg.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Deploy the samq portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-samq.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Deploy the som-reportlet portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-som-reportlet.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1
    
    #
    # Deploy the peformance portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-performance.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Deploy the admin dashboard portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-dashboard.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Deploy the admin portlet
    #
    cd ${BASE_DIR}/../warfiles
    PORTLET="portlet-jsf_admin.war"
    $ECHO "Deploy ESM ${PORTLET} Portlet"
    $PS_BASEDIR/SUNWps/bin/pdeploy deploy -u "$ADMIN_DN" -w "$password" -p "$password" -g ${PORTLET} >/dev/null 2>&1

    #
    # Add default Esm users
    #
    $SED -e "s#%ORG_DN%#${ORG_DN}#g" \
        -e "s#%ESM_ORG_NAME%#${ESM_ORG_NAME}#g" \
        -e "s#%ESM_ORG_DN%#${ESM_ORG_DN}#g" $CREATE_INFILE > $CREATE_CONVFILE
    cd ${BASE_DIR}/../profiles
    $ECHO "Add Users"
    $IDSAME_BASEDIR/SUNWam/bin/amadmin -u "$ADMIN_DN" -w "$password" --continue -t ${CREATE_CONVFILE} >/dev/null 2>&1
    if [ $? = 0 ]; then
        $ECHO "Add Users successful"
    else
        exitStatus=$?
        $ECHO "Add Users FAILED"
    fi
    $RM -rf ${CREATE_CONVFILE}

    #
    # Add the Default Org desktop as esm desktop
    #
    if [ $exitStatus -eq 0 ]; then
        $ECHO "Load portal desktop"
        $SED -e "s#%HOST%#${HOST}#g" $DP_INFILE > $DP_CONVFILE
        $PS_BASEDIR/SUNWps/bin/dpadmin modify -u "$ADMIN_DN" -w "$password" -d "${ESM_ORG_DN}" ${DP_CONVFILE} >/dev/null 2>&1
        if [ $? = 0 ]; then
            $ECHO "Load portal desktop successful"
        else
            exitStatus=$?
            $ECHO "Load portal desktop FAILED"
        fi
        $RM -rf ${DP_CONVFILE}
    fi
    #
    # Add Admin Portlet to desktop for seadmin
    #
    if [ $exitStatus -eq 0 ]; then
        $ECHO "Add Admin Tab to desktop for seadmin"
        $SED -e "s#%HOST%#${HOST}#g" $DPA_INFILE > $DPA_CONVFILE
        $PS_BASEDIR/SUNWps/bin/dpadmin add -u "$ADMIN_DN" -w "$password" -d "uid=seadmin,ou=People,${ESM_ORG_DN}" ${DPA_CONVFILE} >/dev/null 2>&1
        if [ $? = 0 ]; then
            $ECHO "Add Admin Tab to desktop for seadmin successful"
        else
            exitStatus=$?
            $ECHO "Add Admin Tab to desktop for seadmin FAILED"
        fi
        $RM -rf ${DPA_CONVFILE}
    fi
    #
    # stop/start the portal servers
    #
    if [ $exitStatus -eq 0 ]; then
        $ECHO
        $ECHO "Restarting the portal servers"
        $ECHO
        ${BASE_DIR}/../bin/stopservers
        ${BASE_DIR}/../bin/checkservers -w >/dev/null 2>&1
        if [ $? -ne 1 ]; then
            $ECHO "ERROR: Cannot deploy desktop could not stop Web Server"
            $ECHO "       Verify that All Portal Servers are running and responsive"
            $ECHO "       Run /opt/SUNWesmportal/config/config_EsmPortal manually"
            $ECHO "       to deploy the Storage Portal Desktop."
            exit 3
        fi
#        ${BASE_DIR}/../bin/checkservers -i >/dev/null 2>&1
#        if [ $? -ne 1 ]; then
#            $ECHO "ERROR: Cannot deploy desktop could not stop Access Manager Server"
#            $ECHO "       Verify that All Portal Servers are running and responsive"
#            $ECHO "       Run /opt/SUNWesmportal/config/config_EsmPortal manually"
#            $ECHO "       to deploy the Storage Portal Desktop."
#            exit 2
#        fi
        ${BASE_DIR}/../bin/checkservers -d >/dev/null 2>&1
        if [ $? -ne 1 ]; then
            $ECHO "ERROR: Cannot deploy desktop could not stop Directory Server"
            $ECHO "       Verify that All Portal Servers are running and responsive"
            $ECHO "       Run /opt/SUNWesmportal/config/config_EsmPortal manually"
            $ECHO "       to deploy the Storage Portal Desktop."
            exit 2
        fi
        ${BASE_DIR}/../bin/startservers
        $ECHO
        $ECHO "Restarting the Service Container"
        $ECHO
        ${ESM_BASE}/SUNWesmportal/bin/checkservers -s > /dev/null 2>&1
        if [ $? = 0 ]; then
            ${CACAO_BASE}/SUNWcacao/bin/cacaoadm restart
            if [ $? -ne 0 ]; then
                exitStatus=6
            fi
        else
            ${CACAO_BASE}/SUNWcacao/bin/cacaoadm start
            if [ $? -ne 0 ]; then
                exitStatus=6
            fi
        fi
    fi
fi
if [ $exitStatus -eq 1 ]; then
    exitStatus=2
fi
if [ $exitStatus -eq 0 ]; then
    $ECHO
    $ECHO "Point your browser to http://$HOST/portal"
    $ECHO "to access the Sun StorEdge Management Portal"
    $ECHO
fi
exit $exitStatus
