upgrade revision cf6c7da2cbe8b9c7704e00b37847b1363450ef3e
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#!/bin/sh
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# CDDL HEADER START
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# The contents of this file are subject to the terms of the
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Common Development and Distribution License, Version 1.0 only
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# (the "License"). You may not use this file except in compliance
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# with the License.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# You can obtain a copy of the license at
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# trunk/opends/resource/legal-notices/OpenDS.LICENSE
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# See the License for the specific language governing permissions
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# and limitations under the License.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# When distributing Covered Code, include this CDDL HEADER in each
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# file and include the License file at
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# add the following below this CDDL HEADER, with the fields enclosed
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# by brackets "[]" replaced with your own identifying information:
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Portions Copyright [yyyy] [name of copyright owner]
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# CDDL HEADER END
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen#
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Portions Copyright 2006-2007 Sun Microsystems, Inc.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Capture the current working directory so that we can change to it later.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Then capture the location of this script and the Directory Server instance
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# root so that we can use them to create appropriate paths.
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenWORKING_DIR=`pwd`
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensencd `dirname "${0}"`
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenSCRIPT_DIR=`pwd`
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenINSTANCE_ROOT=${SCRIPT_DIR}
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenexport INSTANCE_ROOT
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenSCRIPT_NAME=upgrade
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenexport SCRIPT_NAME
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensencd "${WORKING_DIR}"
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Set java home
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenSCRIPT_UTIL_CMD=set-java-home-and-args
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenexport SCRIPT_UTIL_CMD
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen. "${INSTANCE_ROOT}/lib/_script-util.sh"
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenRETURN_CODE=$?
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenif test ${RETURN_CODE} -ne 0
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenthen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen exit ${RETURN_CODE}
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenfi
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Set environment variables
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenSCRIPT_UTIL_CMD=set-environment-vars
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenexport SCRIPT_UTIL_CMD
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen. "${INSTANCE_ROOT}/lib/_script-util.sh"
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenRETURN_CODE=$?
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenif test ${RETURN_CODE} -ne 0
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenthen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen exit ${RETURN_CODE}
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenfi
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Configure the appropriate CLASSPATH to test.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenfor JAR in ${INSTANCE_ROOT}/tmp/upgrade/lib/*.jar
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensendo
7014882c6a3672fd0e5d60200af8643ae53c5928Richard Lowe CLASSPATH=${CLASSPATH}:${JAR}
7014882c6a3672fd0e5d60200af8643ae53c5928Richard Lowedone
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenCLASSPATH=${CLASSPATH}:${INSTANCE_ROOT}/classes
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenfor JAR in ${INSTANCE_ROOT}/lib/*.jar
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensendo
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen CLASSPATH=${CLASSPATH}:${JAR}
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensendone
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenexport CLASSPATH
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Test the java installation
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenSCRIPT_UTIL_CMD=test-java
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenexport SCRIPT_UTIL_CMD
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen. "${INSTANCE_ROOT}/lib/_script-util.sh"
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenRETURN_CODE=$?
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenif test ${RETURN_CODE} -ne 0
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenthen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen exit ${RETURN_CODE}
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenfi
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenif [ -r "${INSTANCE_ROOT}/tmp/upgrade" ]
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenthen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen rm -fr "${INSTANCE_ROOT}/tmp/upgrade"
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenfi
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Launch the build extractor.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# Configure the appropriate CLASSPATH.
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# BuildExtractor uses the existing install's
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen# jars
30588217a56ff2c9137248fb2e5065c4f0101459Mike ChristensenCLASSPATH=${INSTANCE_ROOT}/classes
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensenfor JAR in ${INSTANCE_ROOT}/lib/*.jar
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensendo
30588217a56ff2c9137248fb2e5065c4f0101459Mike Christensen CLASSPATH=${CLASSPATH}:${JAR}
done
export CLASSPATH
# Run the build extractor first. An exit code of 99 from the extractor
# means that this is indeed an upgrade (as opposed to a reversion) and
# that the upgrade should continue. An exit code of 98 means that this
# operation is a reversion. An exit code of 50 means that the usage
# statement was printed and there is nothing else to do
"${OPENDS_JAVA_BIN}" ${OPENDS_JAVA_ARGS} org.opends.quicksetup.upgrader.BuildExtractor "${@}"
RETURN_CODE=$?
if test ${RETURN_CODE} -eq 99
then
# Configure the appropriate CLASSPATH.
# Unlike BuildExtractor, the Upgrader uses
# the newly extracted build's jars.
CLASSPATH=${INSTANCE_ROOT}/tmp/upgrade/classes
for JAR in ${INSTANCE_ROOT}/tmp/upgrade/lib/*.jar
do
CLASSPATH=${JAR}:${CLASSPATH}
done
# Launch the upgrade process.
"${OPENDS_JAVA_BIN}" ${OPENDS_JAVA_ARGS} org.opends.quicksetup.upgrader.UpgradeLauncher "${@}"
elif test ${RETURN_CODE} -eq 98
then
# Copy jars to a temporary place from which to run the reverter
# in order to avoid potential file lock issues.
mkdir -p ${INSTANCE_ROOT}/tmp/revert
cp -R ${INSTANCE_ROOT}/lib ${INSTANCE_ROOT}/tmp/revert
if test ${?} -ne 0
then
echo "ERROR: Failed to initialize reversion."
exit 101
else
CLASSPATH=${INSTANCE_ROOT}/tmp/revert/classes
for JAR in ${INSTANCE_ROOT}/tmp/revert/lib/*.jar
do
CLASSPATH=${JAR}:${CLASSPATH}
done
# Launch the upgrade process.
"${OPENDS_JAVA_BIN}" ${OPENDS_JAVA_ARGS} org.opends.quicksetup.upgrader.ReversionLauncher "${@}"
fi
elif test ${RETURN_CODE} -eq 50
then
# Version info was on requested
exit 0
elif test ${RETURN_CODE} -eq 0
then
# Usage printed
exit 0
else
# Some unknown return code returned
exit 101
fi