#!/bin/bash
#######################################################
#
# automate-010-install-hana
# to be called on the landscape 'master' 
# installing saphostagent
# installing sap hana
# configuring system replication
#
#######################################################
#
# License: GPL
# Author: Fabian Herschel 2016
# (c) 2016-2017 SUSE Linux GmbH, Nuremberg, Germany
#
# Preequisites:
# - VMs installed with SLES
#
# Syntax:
# automate-010-install-hana [--group=<group>] [--node=<system>] ...
# Next Automation Script
# 
# TODO:
#     * MOUNT SITE SHARE FOR SCALEOUT: showmount -e 192.168.201.40 | awk '($0 ~ "SO_"  sid  "_"  site) {print $1 }' sid=HA1 site=ROT1
#     * Do we need to install saphostagent before we install scaleout to be able to use --remote_execution=saphostagent
#     * Configure saphostagent to use https: 
#     * Adjust the sapadm password
#
#######################################################
#
set -u

logFile="/var/log/automate-010-install-hana.$$"
source /usr/share/Landscape/bin/get_values
export PATH="$PATH:$LandscapeMain/bin"

function usage()
{
    cat <<EOF
automate-010-install-hana [--group=GROUP] \\
                          [--all | --primary | --secondary] {[--step=STEP|STEPS]}

GROUP name of the training group/owner which systems needs to be reset
      (like 1, fh, demo, admin, ...) the grou must match the systems
      list in the landscape configuration
      [--all | --primary | --secondary] 
STEP  Multiple SAP HANASR steps could be specified by
      all|uninstall|install|enable|register|backup ...
      start|stop|configure_hooks|configure_single_nameserver
      all is default and means install enable register
STEPS Colon (,) separated list of STEPs ( STEP1,STEP2,STEP3 )
EOF
}

GROUP=""
node="all"
fh_reset_param=""

while [ $# -gt 0 ]; do
    case "$1" in
        --help | -h ) usage
                      exit
                      ;;
        --group=* ) GROUP=${1#--group=}
                   ;;
        --owner=*) GROUP=${1#--owner=}
                   ;;
        --primary | --secondary | --third | --all | --step=* )
                   fh_reset_param="$fh_reset_param${fh_reset_param:+ }$1" 
                   ;;
        * )        echo "parameter $1 unknown"
                   ;;
    esac
    shift
done

if [[ -z "$GROUP" ]]; then
    echo "You must specify a group of systems using parameter --group=GROUP"
    exit 2
fi

#
# QUIET MODE
#

exec 3>&1
if false; then
    exec 1>$logFile
    exec 2>$logFile
fi

echo "$(date) == Logs are written to $logFile" >&3

export PATH="$PATH:$LandscapeRoot/SCT_workshop/automate-SAPHanaSR:$LandscapeRoot/bin"
export FILES="$LandscapeRoot/files"
export LandscapeUseCase

#
# new LandscapeSAPHanaSR format:
# "owner=1 sid=HA1 inst=10 ip=192.168.201.113 rmode=sync omode=logreplay dbtype=multiple_containers sys_site1=simple01 sys_site2=simple02 name_site1=WDF1 name_site2=ROT1
#

for record in "${LandscapeSAPHanaSR[@]}"
do
    for saphanasrKV in ${record}; do
        echo "saphanasrKV: $saphanasrKV"
        srKey="${saphanasrKV%=*}"; srKey=${srKey^^}
        srValue=${saphanasrKV#*=}
        #local SAP_HANA_SR_$srKey=$srValue
        declare SAP_HANA_SR_$srKey=$srValue
    done
    if [ "$SAP_HANA_SR_OWNER" = "$GROUP" ]; then
        export prim=$SAP_HANA_SR_SYS_SITE1
        export secn=$SAP_HANA_SR_SYS_SITE2
        export third=$SAP_HANA_SR_SYS_SITE3
        export SID=$SAP_HANA_SR_SID
        export sid="${SID,,}"
        export ino=$SAP_HANA_SR_INST
        export primSite=$SAP_HANA_SR_NAME_SITE1
        export secnSite=$SAP_HANA_SR_NAME_SITE2
        export thirdSite=$SAP_HANA_SR_NAME_SITE3
	    export primList=""
	    export secnList=""
	    export thirdList=""
    fi
    echo "SAP_HANA_SR_STAR: ${!SAP_HANA_SR_*}"
    unset ${!SAP_HANA_SR_*}
    echo "SAP_HANA_SR_STAR: ${!SAP_HANA_SR_*}"
    #
    # now add hosts for scaleOut, if specified
    # table: LandscapeSAPHanaSO
    # format: "owner=1 site=WDF1 system=simple01 mrole=master irole=worker"
    #
    # TODO: Currently REPMODE  OPMODE DBTYPE are ignored by this tool and fh_reset...
    for record in "${LandscapeSAPHanaSO[@]}"
    do
        for saphanasoKV in ${record}; do
            echo "saphanasoKV: $saphanasoKV"
            soKey="${saphanasoKV%=*}"; soKey=${soKey^^}
            soValue=${saphanasoKV#*=}
            #local SAP_HANA_SR_$soKey=$soValue
            declare SAP_HANA_SO_$soKey=$soValue
        done
        # TODO: Currently hMRole is ignored 
        set +u
        case $SAP_HANA_SO_IROLE in 
            - ) SAP_HANA_SO_IROLE="worker"
              ;;
        esac
        if [ "$SAP_HANA_SO_SITE" = "$primSite" ]; then
            if [ -z "$prim" ]; then
                 prim=$SAP_HANA_SO_SYSTEM
            else 
                 primList="${primList}${primList:+,}${SAP_HANA_SO_SYSTEM}:role=${SAP_HANA_SO_IROLE}"
            fi
        elif [ "$SAP_HANA_SO_SITE" = "$secnSite" ]; then
            if [ -z "$secn" ]; then
                 secn=$SAP_HANA_SO_SYSTEM
            else 
                 secnList="${secnList}${secnList:+,}${SAP_HANA_SO_SYSTEM}:role=${SAP_HANA_SO_IROLE}"
            fi
        elif [ "$SAP_HANA_SO_SITE" = "$thirdSite" ]; then
            if [ -z "$secn" ]; then
                 secn=$SAP_HANA_SO_SYSTEM
            else 
                 thirdList="${thirdList}${thirdList:+,}${SAP_HANA_SO_SYSTEM}:role=${SAP_HANA_SO_IROLE}"
            fi
        fi
        echo "SAP_HANA_SO_STAR: ${!SAP_HANA_SO_*}"
        unset ${!SAP_HANA_SR_*}
        echo "SAP_HANA_SO_STAR: ${!SAP_HANA_SO_*}"
      ##
      ##
    done
done

echo "prim=$prim"

export TAG="fh_reset_ScaleOUT"
export HANA_INST_DIR="$LandscapeSAPHANAinstDir"

echo "primList=$primList"
echo "secnList=$secnList"
echo "thirdList=$thirdList"

#ssh root@$prim zypper --non-interactive in "$LandscapeRoot/rpm/saphostagent.rpm"
#ssh root@$secn zypper --non-interactive in "$LandscapeRoot/rpm/saphostagent.rpm"
echo "$(date) == Starting fh_reset_Scale-Out $fh_reset_param" >&3
fh_reset_Scale-Out $fh_reset_param


# TODO: PRIO 1: Param-Section of bin/fh_reset_ScaleUP
# TODO: PRIO 2: Tale sql-pwd out of the pwd file instead of hard coded


echo "rc=$?"
echo "Done... "
echo ""
