#!/bin/sh -f
#++
#  repo_mig - Utility Script for the EM
#
#  Migrates administrators, groups, target privileges, and preferred
#  credentials from OEM versions 2.2, 9.0.1, and 9.2 to OEM v4.1.
#
#--
#
# MODIFIED
#    minfan     04/25/07 - ojdbc14 sunset
#    nsharma    03/21/07 - Fix for PE 5921102
#    smodh      02/20/06 - XbranchMerge smodh_jdbc_emcore from main 
#    njagathe   08/20/04 - Replace join with minimal perl5lib 
#    njagathe   08/16/04 - Fix hardcoded 561 refs 
#    rdabbott   08/06/04 - fix regression paths 
#    djoly      05/14/04 - Update core reference 
#    mbhoopat   03/11/04 - merge from pl_main_gen 
#    nsharma    02/27/04 - ia64 changes 
#    mbhoopat   12/19/03 - Fix class path 
#    rzazueta   11/12/03 - Update display help 
#    rzazueta   03/25/03 - rzazueta_migration_script
#    rzazueta   03/24/03 - Created.
#

displayHelp()
{
   printf "Unknown command option $1\n"
   printf "Usage:: \n"
   printf "repo_mig -preview|-migrate source_user/source_pwd@source_service dest_user/dest_pwd@dest_service \n"
   printf "\nwhere:\n"
   printf "   -preview      : Generates a preliminary migration report without carrying out the migration.\n"
   printf "   -migrate      : Performs migration of groups, administrators, target privileges,\n"
   printf "                   and preferred credentials of hosts, databases, and listeners.\n\n"
   printf "   source_user   : Source OEM repository user name\n"
   printf "   source_pwd    : Source OEM repository password\n"
   printf "   source_service: Source OEM repository service. Ie. Host:Port:SID\n\n"
   printf "   dest_user     : Destination OEM repository user name\n"
   printf "   dest_pwd      : Destination OEM repository password\n"
   printf "   dest_service  : Destination OEM repository service. Ie. Host:Port:SID\n"
}

#
# Make sure certain environment variables are set
#
JAVA_HOME=%JAVA_HOME%
ORACLE_HOME=/oracle/EPP/11203
EMDROOT=%EMDROOT%
export JAVA_HOME
export ORACLE_HOME
export EMDROOT

printf "Enterprise Manager 4.1.0.0.0\n"
printf "Copyright (c) 2003, Oracle Corporation.  All rights reserved.\n\n"

EM_OC4J_HOME=$EMDROOT/sysman/j2ee
# these variables - PERL5LIB and LD_LIBRARY_PATH - are set so that
# osfetchlets can run correctly

uname=`uname`
if [ "$uname" = "SunOS" ];
then

# Set up TZ if not already set, this is done as a workaround
# for bug in JDK 1.3.1
  if [ "$TZ" = "" ]
  then
    TMPFILE=/tmp/setTZ.sh.$$
    grep -v "^#" /etc/TIMEZONE | grep TZ > $TMPFILE
    . $TMPFILE
    echo "TZ set to $TZ\n"
    rm $TMPFILE
  fi
  export TZ

fi

PERL5LIB_NATIVE=:$ORACLE_HOME/perl/lib:$ORACLE_HOME/perl/lib/site_perl
PERL5LIB_TMP=${PERL5LIB_NATIVE}:$EMDROOT/sysman/admin/scripts:$SRCHOME/emagent/test/src/emd/chronos

if [ "$PERL5LIB" = "" ] ;
then
   PERL5LIB=${PERL5LIB_TMP}
else
   PERL5LIB=${PERL5LIB_TMP}:${PERL5LIB}
fi

if [ "$LD_LIBRARY_PATH" = "" ] ; then
   LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/oui/bin/%PLATFORM%
else
   LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/oui/bin/%PLATFORM%:$LD_LIBRARY_PATH
fi

if [ "$SHLIB_PATH" = "" ] ; then
   SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/oui/bin/%PLATFORM%
else
   SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/oui/bin/%PLATFORM%:$SHLIB_PATH
fi

if [ "$LIBPATH" = "" ] ; then
   LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/oui/bin/%PLATFORM%
else
   LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/perl/lib:$EMDROOT/lib:%OUILOC%/oui/bin/%PLATFORM%:$LIBPATH
fi

# add java lib to LD_LIBRARY_PATH.
if [ "$uname" = "SunOS" ];
then
        LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/sparc/client:$JAVA_HOME/jre/lib/sparc:$LD_LIBRARY_PATH
elif [ "$uname" = "HP-UX" ] && [ "`uname -m`" = "9000/800" ] ; then
        SHLIB_PATH=$JRE_HOME/lib/PA_RISC2.0/client:$JRE_HOME/lib/PA_RISC2.0:$SHLIB_PATH
elif [ "$uname" = "HP-UX" ] && [ "`uname -m`" = "ia64" ] ; then
        SHLIB_PATH=$JRE_HOME/lib/IA64N/client:$JRE_HOME/lib/IA64N:$SHLIB_PATH
elif [ "$uname" = "Linux" ] && [ "`uname -m`" = "i686" ]  ; then
         LD_LIBRARY_PATH=$JRE_HOME/lib/i386/client:$JRE_HOME/lib/i386:$LD_LIBRARY_PATH
elif [ "$uname" = "Linux" ] && [ "`uname -m`" = "ia64" ] ; then
         LD_LIBRARY_PATH=$JRE_HOME/lib/ia64/client:$JRE_HOME/lib/ia64:$LD_LIBRARY_PATH
elif [ "$uname" = "Linux" ] && [ "`uname -m`" = "ppc64" ] ; then
        LD_LIBRARY_PATH=$JRE_HOME/bin/classic:$JRE_HOME/bin:$LD_LIBRARY_PATH
fi


# to workaround Solaris2.8 Java thr_suspend hang, use alternate libthread.
# Since this directory doesn't exist on other versions, this is a noop there.
#
#    ---- Let's try using T1 on 2.8 for a while with Java workaround -- jabramso
#
#if [ "$uname" = "SunOS" ];
#then
#       LD_LIBRARY_PATH=/usr/lib/lwp:$LD_LIBRARY_PATH
#fi

export PERL5LIB
export LD_LIBRARY_PATH
export SHLIB_PATH
export LIBPATH


# Add the var for HP
if [ "$uname" = "HP-UX" ] ; then
   UNIX95=XPG4;
   export UNIX95
   # fix for emctl stop issue on HP.
   EM_OC4J_OPTS="-XdoCloseWithReadPending $EM_OC4J_OPTS"
   export EM_OC4J_OPTS
fi

if [ "$uname" = "OSF1" ] ; then
   # java "-native" flag not used on decunix
   JAVA_OPTS=""
else
   JAVA_OPTS="-native"
fi

#
# Set path so that our native executables can be found when run from java
#
PATH=$EMDROOT/bin:$PATH
export PATH


# use ulimit to make sure we have enough descriptors

if [ "$EM_DESCRIPTORS" = "" ]
then
   EM_DESCRIPTORS=1024
fi

CURRENT_LIMIT=`ulimit -n`

if [ "$CURRENT_LIMIT" != "unlimited" ]
then
   if [ $CURRENT_LIMIT -lt $EM_DESCRIPTORS ]
   then
      ulimit -n $EM_DESCRIPTORS
   fi
fi

#
# repo_mig -preview|-migrate source_user/source_pwd@source_service dest_user/dest_pwd@dest_service
#
if ( [ $# -eq 3 ] ) &&
   ( [ "$1" = "-preview" ] || [ "$1" = "-migrate" ] )
then   

   CP=$ORACLE_HOME/oc4j/jdbc/lib/ojdbc5dms.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/ojdbc14dms.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-net-ee.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-utility.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-collation.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-net.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-internal.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-servlet.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-lcsd.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-tools.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-mapping.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n-translation.jar:\
$ORACLE_HOME/oc4j/jdbc/lib/orai18n.jar:\
$ORACLE_HOME/oc4j/lib/dms.jar:\
$ORACLE_HOME/jdbc/lib/ojdbc14.jar:\
$ORACLE_HOME/jdbc/lib/nls_charset12.jar:\
$ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/classes:\
$ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/lib/emCORE.jar:\
$ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/lib/emagentSDK.jar:\
$ORACLE_HOME/j2ee/OC4J_EM/applications/em/em/WEB-INF/lib/log4j-core.jar:\
$EMDROOT/sysman/jlib/emCORE.jar:\
$EMDROOT/sysman/jlib/emagentSDK.jar:\
$EMDROOT/sysman/jlib/log4j-core.jar:\
$ORACLE_HOME/jlib/uix2.jar:\
$ORACLE_HOME/lib/xmlparserv2.jar

   ${JAVA_HOME}/bin/java -classpath $CP oracle.sysman.migration.v41.v92.Migrate $*

   exit $?
  
else
   displayHelp
   exit 2
fi

