#!/bin/bash

# $Id: //depot/prod/mcctb/main/modules/mcctb-deb/src/main/data/etc/cron.weekly/mcctb-support.template#1 $
# Copyright (c) 2013 NetApp, Inc.
# All rights reserved.

LAUNCH_HOME=/opt/netapp/mcctb
LOG_DIR=/var/log/netapp/mcctb
LIB_ROOT=${MCCTB_HOME}/lib/
JAVA=$(which java)

export LIB_ROOT

STATUS_DUMP="com.netapp.mcctb.MCCTBCommandClient"
AUTOSUPPORT="com.netapp.mcctb.autosupport.AutoSupportMain"

cd $LAUNCH_HOME
source /etc/netapp/mcctb/autosupport.conf

JVM_ARGS="$JVM_ARGS -client"
JVM_ARGS="$JVM_ARGS -Xms32M"
JVM_ARGS="$JVM_ARGS -XX:MaxPermSize=196m"
JVM_ARGS="$JVM_ARGS -XX:+StartAttachListener"
JVM_ARGS="$JVM_ARGS -enableassertions"

basic_logs=( 'metrocluster-tiebreaker-config.xml' 'metrocluster-tiebreaker-status.xml' 'metrocluster-tiebreaker-error-log.txt' 'metrocluster-tiebreaker-cluster-details.xml')
troubleshoot_logs=('metrocluster-tiebreaker-config.xml' 'metrocluster-tiebreaker-error-log.txt' 'metrocluster-tiebreaker-cluster-details.xml' 'metrocluster-tiebreaker-log.txt' 'metrocluster-tiebreaker-log-1.txt' 'metrocluster-tiebreaker-log-2.txt' 'metrocluster-tiebreaker-status.xml' 'metrocluster-tiebreaker-stacktrace.txt' 'metrocluster-tiebreaker-install.log')
asup_info_file="/var/log/netapp/mcctb/metrocluster-tiebreaker-cluster-details.xml"
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.7za.path=$(which 7za)"

dumpMcctbStatus() {
    $JAVA ${JVM_ARGS} ${JVM_DEBUG_ARGS} -cp $CLASSPATH $STATUS_DUMP "monitor dump -status"
}

sendBasicAutosupport() {

    if [ "$ASUP_ENABLE" == "false" ] ; then
        return
    fi
    mkdir -p /var/log/netapp/mcctb/asup
    chmod 1775 /var/log/netapp/mcctb/asup

    for files in "${basic_logs[@]}"; do
        if [ -f "/var/log/netapp/mcctb/$files" ]; then
            cp "/var/log/netapp/mcctb/$files" "/var/log/netapp/mcctb/asup/$files"
        fi
    done

    $JAVA ${JVM_ARGS} ${JVM_DEBUG_ARGS} -cp $CLASSPATH $AUTOSUPPORT $1
    STATUS="${?}"
    rm -r /var/log/netapp/mcctb/asup
}

sendTroubleshootAutosupport() {
    if [ "$ASUP_ENABLE" == "false" ] ; then
        return
    fi
    mkdir -p /var/log/netapp/mcctb/asup
    chmod 1775 /var/log/netapp/mcctb/asup

    for files in "${troubleshoot_logs[@]}"; do
        if [ -f "/var/log/netapp/mcctb/$files" ]; then
            cp "/var/log/netapp/mcctb/$files" "/var/log/netapp/mcctb/asup/$files"
        fi
    done

    $JAVA ${JVM_ARGS} ${JVM_DEBUG_ARGS} -cp $CLASSPATH $AUTOSUPPORT $1
    STATUS="${?}"
    rm -r /var/log/netapp/mcctb/asup
}

dumpMcctbStatus

case $1 in
    PANIC)
	sendTroubleshootAutosupport $1
	;;
    SWITCHOVER_SUCCEEDED)
	sendBasicAutosupport $1
	;;
    SWITCHOVER_FAILED)
	sendTroubleshootAutosupport $1
	;;
    INDETERMINATE_STATE)
	sendTroubleshootAutosupport $1
	;;
    DISASTER_DETECTED_IN_OBSERVER_MODE)
	sendTroubleshootAutosupport $1
	;;
    USER_TRIGGERED)
	sendTroubleshootAutosupport $1
	;;
    MCC_UNREACHABLE)
	;;
    WEEKLY | *)
	sendBasicAutosupport "WEEKLY"
esac

if [ -f ${asup_info_file} ]; then
    rm ${asup_info_file};
fi

exit ${STATUS};
