#!/bin/sh

# ident   "@(#)dbms_upgrade_methods.sh 1.3	01/03/28 SMI"

# Copyright (c) 1996 by Sun Microsystems, Inc.
# All rights reserved.
#

# dbms_upgrade_methods 
#
# Do post installation processing.
# postinstall is called by pkgadd(1M) utility.

#
# this script is for upgrading ha1.3 data service configuration file to
# sc2.2 configuration format
# For dbms data services (oracle, informix and sybase)
#	check to to see /etc/opt/SUNWhadf/hadf directory that contains
#	the ha1.3 databases configuration file.  If it exist, we will
# 	queuy the information of each instance and store them into
#	SC ccd database file
#

TEXTDOMAIN=dbms_upgrade_methods; export TEXTDOMAIN
TEXTDOMAINDIR=/opt/SUNWcluster/locale;  export TEXTDOMAINDIR

PATH=/usr/bin:/usr/sbin:/sbin

_basedir=`pkgparam SUNWsccf BASEDIR`
_productdir=`pkgparam SUNWsccf PRODUCTDIR`
_configdir="$_basedir/etc/opt/$_productdir/conf"
_ccddb="ccd.database"
_bindir=`dirname $0`

dbms_dir=/etc/opt/SUNWhadf/hadf
temp_ccddb=/var/opt/SUNWcluster/run/{_ccddb}.$$

CCDADM=${_bindir}/ccdadm
SCCCD=${_bindir}/scccd
CLUSTER=`cat ${basedir}/etc/opt/${_productdir}/conf/default_clustername`

if [ $# != 1 ]; then
	gettext "Error: Illegal number of parameters passed!\n"
                exit 1
        fi

ds="$1"

if [ "$ds" != "oracle" -a "$ds" != "informix" -a "$ds" != "sybase" ] ; then
	exit 0
fi

HA_DATABASES=$dbms_dir/ha${ds}_databases
if [ ! -f $HA_DATABASES ]; then
	exit 0
fi
	
if [ ! -r $HA_DATABASES ] ; then
	gettext "Warning: database file not readable.\n"
	exit 1
fi

cd ${_configdir}

${CCDADM} -p ${_ccddb} > /dev/null 2>&1 	#get "pure" ccd db
if [ $? != 0 ]; then
	printf "${_ccddb} `gettext 'is corrupted'`\n"
  	exit 1
fi

grep -v '^#' ${HA_DATABASES} | \
while read mode name lhost poll connect timeout restart_delay id file_1 file_2 file_3; do

	if [ "$id" = "" ] ; then
		printf "`gettext 'Warning: invalid value in %s file.  Can not be convert to ccd.database'`\n" "$HA_DATABASES"

	fi

	case "$ds" in 
           "oracle")
		found=`grep "HAORACLE:o[a-z]*:${name}:" ${_ccddb}` 
		if [ "$found" != "" ] ; then
			continue
		fi
		if [ "$file_2" = "" ]; then
			sedcmd="/^HAORACLE_sync/a\\
HAORACLE:$mode:$name:$lhost:$poll:$connect:$timeout:$restart_delay:$id:$file_1:" 
		else
			sedcmd="/^HAORACLE_sync/a\\
HAORACLE:$mode:$name:$lhost:$poll:$connect:$timeout:$restart_delay:$id:$file_1:$file_2" 
		fi ;;

	   "informix")
		found=`grep "HAINFORMIX:o[a-z]*:${name}:" ${_ccddb}` 
		if [ "$found" != "" ] ; then
			continue
		fi
		sedcmd="/^HAINFORMIX_sync/a\\
HAINFORMIX:$mode:$name:$lhost:$poll:$connect:$timeout:$restart_delay:$id:$file_1" ;;

	   "sybase")
		found=`grep "HASYBASE:o[a-z]*:${name}:" ${_ccddb}` 
		if [ "$found" != "" ] ; then
			continue
		fi
		if [ "$file_2" = "" ]; then
			sedcmd="/^HASYBASE_sync/a\\
HASYBASE:$mode:$name:$lhost:$poll:$connect:$timeout:$restart_delay:$id:$file_1::"
		else
			sedcmd="/^HASYBASE_sync/a\\
HASYBASE:$mode:$name:$lhost:$poll:$connect:$timeout:$restart_delay:$id:$file_1:$file_2:$file_3"
		fi
	esac

	sed -e "$sedcmd" ${_ccddb}.pure >${temp_ccddb}
	cp ${temp_ccddb} ${_ccddb}.pure
done

rm -rf ${_ccddb}.pure
if [ -f ${temp_ccddb} ] ; then
	${CCDADM} -x ${temp_ccddb}
	cp ${_ccddb} ${_ccddb}.orig
	mv ${temp_ccddb} ${_ccddb}
fi

exit 0
