#!/bin/bash

# $Id: //depot/prod/mcctb/main/modules/mcctb-deb/src/main/control/netapp-metrocluster-tiebreaker-software.template#18 $
# Copyright (c) 2013 NetApp, Inc.
# All rights reserved.

# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 90 10
# description: Provides automatic switchover capability on disaster.


### BEGIN INIT INFO
# Provides: mcctb-daemon
# Required-Start: mysql
# Required-Stop: mysql
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start mcctb daemon at the end of boot
# Description: This command is used to start metrocluster tiebreaker which will provide automatic switchover capability on disaster.
### END INIT INFO

set -e

LOG_DIR=/var/log/netapp/mcctb

if [ ! -d "$LOG_DIR" ]; then
    # Control will enter here if $DIRECTORY doesn't exist.
    mkdir -p $LOG_DIR
    chmod 1775 $LOG_DIR
fi


JSVC=/opt/netapp/essentials/mcctb/bin/native/lib64/jsvc
MYSQL=`which mysql`
SOCKET_FILE=`$MYSQL -u mcctb -e "show variables like 'socket';" | grep socket`
JAVA_HOME=`readlink -f /usr/bin/java | sed 's#^\(.*\)\(jre\)*/bin/java$#\1#'`
CLASS=com.netapp.mcctb.MCCTBMain
USER=root
PID=$LOG_DIR/mcctb.pid
LOG_OUT=$LOG_DIR/metrocluster-tiebreaker-out-log.txt
LOG_ERR=$LOG_DIR/metrocluster-tiebreaker-error-log.txt

# Lock directory for RedHat.
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mcctb"


LAUNCH_HOME=/opt/netapp/mcctb
cd $LAUNCH_HOME

if [ -n "$DEBUG_PORT" ] ; then
    JVM_DEBUG_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=$DEBUG_PORT,timeout=20000"
fi

CLASSPATH="$LAUNCH_HOME/etc:$CLASSPATH"

for file in `find $LIB_ROOT -follow -name "*.jar"`; do
    CLASSPATH="$file:${CLASSPATH}"
done

for file in `find ${LAUNCH_HOME}/lib/common -follow -name "*.jar"`; do
    CLASSPATH="$file:${CLASSPATH}"
done

JVM_ARGS="$JVM_ARGS -Djava.library.path=/opt/netapp/essentials/mcctb/bin/native/lib64"
JVM_ARGS="$JVM_ARGS -Djna.library.path=/opt/netapp/essentials/mcctb/bin/native/lib64"
JVM_ARGS="$JVM_ARGS -Duser.language=en -Duser.country=US -Dfile.encoding=UTF8 -Dclient.encoding.override=UTF-8"
JVM_ARGS="$JVM_ARGS -Dmcctb.install.dir=$LAUNCH_HOME"
JVM_ARGS="$JVM_ARGS -Dmcctb.log.dir=$LOG_DIR"
JVM_ARGS="$JVM_ARGS -Dmcctb.config.dir=/etc/netapp/mcctb"
PROP="-Dmysql.socket.file=$SOCKET_FILE"
TIMESTAMP="-Dmcctb.install.timestamp=Wed Jan 14 05:13:43 PST 2015"

# Define hostname and pid as System Properties for reference in logback pattern layout
JVM_ARGS="$JVM_ARGS -Dpid=$$"

mcctb_daemon() {
    # Start JSVC MCCTB daemon
    ${JSVC} $JVM_ARGS $1 -home "$JAVA_HOME" "$PROP" "$TIMESTAMP" -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID -cp $CLASSPATH $CLASS
    if [ $? -eq 0 ]; then
        printf "    [ OK ]\n"
    else
        printf "    [ FAILED ]\n"
    fi
}


start_mcctb() {
    printf "Starting NetApp MetroCluster Tiebreaker software daemon"
    mcctb_daemon
    # Make lock for RedHat / SuSE
    if test -w "$lockdir"
    then
	touch "$lock_file_path"
    fi
}

stop_mcctb() {
    if [ -f "$PID" ]; then
	printf "Stopping NetApp MetroCluster Tiebreaker software daemon"
        mcctb_daemon "-stop"
    else
        echo "Unable to stop service. Service not running"
    fi

    if test -f "$lock_file_path"
    then
        rm -f "$lock_file_path"
    fi
}

case "$1" in

    start | "")
	start_mcctb
        ;;
    stop)
	stop_mcctb
        ;;
    restart)
	stop_mcctb
        start_mcctb
        ;;
   *)
        echo "Usage: metrocluster-tiebreaker {start|stop|restart}"
        ;;
esac
