#
# Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

BINDIR=/opt/SUNWscmys/bin
UTILDIR=/opt/SUNWscmys/util
MYCONFIG=

typeset opt

while getopts 'f:' opt
do
        case "${opt}" in
                f)      MYCONFIG=${OPTARG};;
                *)      logger -p daemon.err \
                        "ERROR: ${MYNAME} Option ${OPTARG} unknown - early End. Only -f is valid"
                        exit 1;;
        esac
done

# Sourcing the specified config file, either the default one,
# or the one supplied with -f

if [ -n "${MYCONFIG}" ] && [ -f "${MYCONFIG}" ]
then
	echo "sourcing ${MYCONFIG} and create a working copy under ${UTILDIR}/mysql_config.work"
	cp ${MYCONFIG} ${UTILDIR}/mysql_config.work 2>/dev/null
	. ${MYCONFIG}
else
	PKGCONF=`dirname $0`/mysql_config
	echo "sourcing ${PKGCONF}"
	. ${PKGCONF}
fi

MYSQL_MYSQLADMIN=${MYSQL_BASE}/bin/mysqladmin
MYSQL_MYSQL=${MYSQL_BASE}/bin/mysql
HOSTNAME=`uname -n`
TEST_DB="sc3_test_database"

VERSION=`${MYSQL_MYSQLADMIN} -V | awk '{print $5}' | cut -d',' -f1`
MYSQL_VERSION=`echo ${VERSION} | cut -d'.' -f1`
MYSQL_RELEASE=`echo ${VERSION} | cut -d'.' -f2`
MYSQL_UPDATE=` echo ${VERSION} | cut -d'.' -f3`

SOLARIS_RELEASE=`uname -r`
CLUSTER_RELEASE=`pkginfo -l SUNWscgds 2>/dev/null | /bin/grep VERSION | /bin/awk '{print $2}' | /bin/cut -d'.' -f1-2`


if [ ! -x "${MYSQL_MYSQL}" ]; then
  echo "${MYSQL_MYSQL} don't exist"
  exit 1
fi

echo
echo "MySQL version ${MYSQL_VERSION} detected on ${SOLARIS_RELEASE}/SC${CLUSTER_RELEASE}"
echo

#
# SPECIAL CARE FOR SC3.1
#

if [ "${CLUSTER_RELEASE}" = "3.1" ]; then

   # CHECK THAT MYSQL_NIC_HOSTNAME IS SET

   if [ -z "${MYSQL_NIC_HOSTNAME}" ]; then
      echo "Variable MYSQL_NIC_HOSTNAME is not set in mysql_config"
      exit 1
   fi

   node_array=${MYSQL_NIC_HOSTNAME}
else
   node_array=${MYSQL_HOST}
fi

for node in ${node_array}
do

  echo
  echo "Add faulmonitor user (${FMUSER}) with password (${FMPASS}) with Process-,Select-, Reload- and Shutdown-privileges to user table for mysql database for host ${node}"
  echo

  ${MYSQL_MYSQL} -S ${MYSQL_SOCK} -u${MYSQL_USER} -p${MYSQL_PASSWD} -e "GRANT PROCESS,SELECT,RELOAD,SHUTDOWN ON *.* TO ${FMUSER}@'${node}' IDENTIFIED BY '${FMPASS}'"

  if [ $? -ne 0 ]; then
   echo "Add faulmonitor user ${FMUSER} with Process-, Select-, Reload- and Shutdown-privileges to user table for mysql database for ${node} failed"
  fi

  if [ "${MYSQL_VERSION}" -gt 3 ]; then
     #
     # ADD SUPER PRIVILEGE FOR ${FMUSER}
     #

     echo
     echo "Add SUPER privilege for ${FMUSER}@${node}"
     echo

     ${MYSQL_MYSQL} -S ${MYSQL_SOCK} -u${MYSQL_USER} -p${MYSQL_PASSWD} -e "use mysql; UPDATE user SET Super_priv='Y' WHERE user='${FMUSER}' AND Host='${node}';"
     if [ $? -ne 0 ]; then
      echo "Add GRANT privilege for ${MYSQL_USER}@${node} failed"
     fi
  fi
done


echo
echo "Create test-database ${TEST_DB}"
echo
${MYSQL_MYSQL} -S ${MYSQL_SOCK} -u${MYSQL_USER} -p${MYSQL_PASSWD} -e "CREATE DATABASE ${TEST_DB};"

if [ $? -ne 0 ]; then
 echo "Create test-database ${TEST_DB} failed"
fi

for node in ${node_array}
do
   echo
   echo "Grant all privileges to ${TEST_DB} for faultmonitor-user ${FMUSER} for host ${node}"
   echo

   ${MYSQL_MYSQL} -S ${MYSQL_SOCK} -u${MYSQL_USER} -p${MYSQL_PASSWD} -e "GRANT ALL ON ${TEST_DB}.* TO ${FMUSER}@'${node}'"

   if [ $? -ne 0 ]; then
   echo "Adding all privileges to ${TEST_DB} for faultmonitor-user ${FMUSER} for host ${node} failed"
   fi
done

echo
echo "Flush all privileges"
echo
${MYSQL_MYSQLADMIN} -S ${MYSQL_SOCK} -u${MYSQL_USER} -p${MYSQL_PASSWD} flush-privileges

if [ $? -ne 0 ]; then
  echo "Flush all privileges failed"
fi


echo
echo "Mysql configuration for HA is done"
echo
