#!/bin/bash
#
##########################################################################
#
###!!! GET THESE VALUES FROM CALLING SCRIPT automate-010-install-HANA
#prim="se01group1"
#secn="se02group1"
#sid="ha1"
#SID="HA1"
#ino="00"
#primSite="WDF1"
#secnSite="ROT1"
#TAG="fh_reset_ScaleUP"
#HANA_INST_DIR="/hana_inst/SCT_workshop/SAP-MEDIA/51050308/DATA_UNITS/HDB_SERVER_LINUX_X86_64"
#
##########################################################################
#

#
# unmanage
function unmanage()
{
    local res=$1
    local rc=0
    logger -s -i -t $TAG "unmanage $res"
    crm resource unmanage $res; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}


#
# manage
function manage()
{
    local res=$1
    local rc=0
    logger -s -i -t $TAG "manage $res"
    crm resource manage $res; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

#
# cleanup
function cleanup()
{
    local res=$1
    local rc=0
    logger -s -i -t $TAG "cleanup $res"
    crm resource cleanup $res; rc=$?
}


#
# Stop secondary system
#
function stop_secondary()
{
    local rc=0
    logger -s -i -t $TAG "stop_secondary"
    COMMAND="hostname; sapcontrol -nr $ino -function StopSystem; sapcontrol -nr $ino -function WaitforStopped 300 10; hostname"
    ssh root@$secn "su - ${sid}adm -c '$COMMAND'"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

#
# Stop primary system
#
function stop_primary()
{
    local rc=0
    logger -s -i -t $TAG "stop_primary"
    COMMAND="hostname; sapcontrol -nr $ino -function StopSystem; sapcontrol -nr $ino -function WaitforStopped 300 10; hostname"
    ssh root@$prim "su - ${sid}adm -c '$COMMAND'"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

###
# Uninstall primary
function uninstall_primary()
{ 
    local rc=0
    logger -s -i -t $TAG "uninstall_primary"
    COMMAND="$HANA_INST_DIR/hdbuninst -b --sid=$SID"
    ssh root@$prim "$COMMAND"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

###
# Uninstall secondary
function uninstall_secondary()
{
    local rc=0
    logger -s -i -t $TAG "uninstall_secondary"
    COMMAND="$HANA_INST_DIR/hdbuninst -b --sid=$SID"
    ssh root@$secn "$COMMAND"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

###
# Install primary
function install_primary()
{
    local rc=0
    logger -s -i -t $TAG "install_primary"
echo $PWD
ls -l files
ls -l files/hana_passwords
    rsync -va files/hana_passwords root@$prim:.
    COMMAND="cat ~/hana_passwords | $HANA_INST_DIR/hdbinst --sid=${SID} --number=${ino}  --db_mode=multiple_containers --batch --read_password_from_stdin=xml"
    ssh root@$prim "$COMMAND"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

###
# Install secondary
function install_secondary()
{
    local rc=0
    logger -s -i -t $TAG "install_secondary"
    rsync -va files/hana_passwords root@$secn:.
    COMMAND="cat ~/hana_passwords | $HANA_INST_DIR/hdbinst --sid=${SID} --number=${ino} --db_mode=multiple_containers --batch --read_password_from_stdin=xml"
    ssh root@$secn "$COMMAND"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

####
# BACKUP PRIMARY SYSTEM
function backup_primary()
{
    local rc=0
    logger -s -i -t $TAG "backup_primary"
    # TODO: need to start that via ssh
    #COMMAND="/usr/sap/$SID/HDB${ino}/exe/hdbsql -u system -p manager -i ${ino} -n localhost:3${ino}13  \"backup data using file ('lala')\""
    COMMAND="/usr/sap/$SID/HDB${ino}/exe/hdbsql -u system -p SuSE1234 -i ${ino} -n localhost:3${ino}13  \"backup data using file ('lala')\""
    ssh root@$prim "$COMMAND"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

####
# ENABLE AT PRIMARY
function enable_primary()
{ 
    local rc=0
    logger -s -i -t $TAG "enable_primary"
    COMMAND="hostname; hdbnsutil -sr_enable --name=${primSite}"
    ssh root@$prim "su - ${sid}adm -c '$COMMAND'"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

####
# REGISTER SECONDARY
function register_secondary()
{
    local rc=0
    logger -s -i -t $TAG "register_secondary"
    COMMAND="hostname; hdbnsutil -sr_register --remoteHost=${prim} --remoteInstance=${ino} --mode=sync --name=${secnSite} --force_full_replica"
    ssh root@$secn "su - ${sid}adm -c '$COMMAND'"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

function cleanup_primary()
{
    local rc=0
    logger -s -i -t $TAG "cleanup_primary"
    COMMAND="hostname; hdbnsutil -sr_cleanup --force; hostname"
    ssh root@$secn "su - ${sid}adm -c '$COMMAND'"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

####
# START PRIMARY
function start_primary()
{ 
    local rc=0
    logger -s -i -t $TAG "start_primary"
    COMMAND="hostname; hostname; sapcontrol -nr $ino -function StartSystem; sapcontrol -nr $ino -function WaitforStarted 300 10; hostname"
    ssh root@$prim "su - ${sid}adm -c '$COMMAND'"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

####
# START SECONDARY
function start_secondary()
{ 
    local rc=0
    logger -s -i -t $TAG "start_secondary"
    COMMAND="hostname; hostname; sapcontrol -nr $ino -function StartSystem; sapcontrol -nr $ino -function WaitforStarted 300 10; hostname"
    ssh root@$secn "su - ${sid}adm -c '$COMMAND'"; rc=$?
    logger -s -i -t $TAG "rc=$rc"
    return $rc
}

function manually_check_nameserver_ini()
{
    local rc=1
    logger -s -i -t $TAG "manually_check_nameserver_ini"
    ok=0
    COMMAND="hostname; cat /hana/shared/$SID/global/hdb/custom/config/nameserver.ini"
    ssh root@$secn "su - ${sid}adm -c '$COMMAND'"
    echo "is this nameserver.ini correct?"
    read yn
    case "$yn" in
      "y" | "yes" | "j" | "ja" ) ok=1;;
    esac
 
    if [ $ok -eq 0 ]; then
       echo "EXIT"
       exit 1
    fi
}

check_n_press()
{
   echo "CHECK AND PRESS ENTER"; read
}

#
# cluster
#
#unmanage msl_SAPHana_${SID}_HDB${ino}
#unmanage cln_SAPHanaTopology_${SID}_HDB${ino}

# stop all
#
#stop_secondary
#stop_primary

# primary
#
#uninstall_primary || check_n_press
#( install_primary 
#backup_primary  
#enable_primary 
#) &
#install_secondary &

# secondary
#
#uninstall_secondary || check_n_press
stop_secondary || check_n_press
register_secondary || check_n_press
start_secondary || check_n_press

#
# cluster (2/2)
#
#cleanup cln_SAPHanaTopology_${SID}_HDB${INO}
#manage cln_SAPHanaTopology_${SID}_HDB${INO}
#cleanup msl_SAPHana_${SID}_HDB${INO}
#sleep 60
#manage msl_SAPHana_${SID}_HDB${INO}

####
#
# SSH-COPY-ID für alle cluster knoten und user sidadm
