#!/bin/bash
#######################################################
#
# automate-034-configure-sudo
# to be called on the landscape 'master' 
# configure sudo for SAP HANA hooks
#
#
#
#######################################################
#
# License: GPL
# Author: Fabian Herschel 2023
# (c) 2016-2023 SUSE Linux GmbH, Nuremberg, Germany
#
# Preequisites:
# - VMs installed with SLES, cluster sw installed inside VMs
#
# Syntax:
# automate-034-configure-sudo [--group=<group>] [--node=<system>]
# Next Automation Script
# 
#
#######################################################
#
set -u

logFile="/var/log/automate-010-install-hana.$$"

#
# QUIET MODE
#

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

echo "$(date) == Logs are written to $logFile" >&3
source /usr/share/Landscape/bin/get_values
export PATH="$PATH:$LandscapeMain/bin"

GROUP="none"   
node="all" 
force=0     
FILE_DIR="$LandscapeRoot/files/UseCases/$LandscapeUseCase/"
FILE_SOURCE="SAPHanaSR.sudo"
FILE_TARGET="SAPHanaSR"

while [ $# -gt 0 ]; do
    case "$1" in
        --group=* ) GROUP=${1#--group=}
                   ;;
        --node=* ) node=${1#--node=}
                   ;;
        --force )
echo "====== FORCE ========"
                   force=1
                   ;;
    esac
    shift
done

if [ -z "$GROUP" ]; then
	echo "Welcome... I am just doing some SLES automation tasks"
	echo "If any question comes along during the auto installation process, just say 'yes'"
	echo ""
	echo -n "Please enter your group number: "
	read GROUP
	echo ""
	echo "Your group number is $GROUP"
	echo "Press <enter>"
	read
	echo ""
fi

function getLandscapeVars() 
{
    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
    done
}

function filterSystem()
{
    local system="$@"
    local systemKV
    for systemKV in ${system}; do
        sKey="${systemKV%=*}"; sKey=${sKey^^}
        sValue=${systemKV#*=}
        local SYSTEM_$sKey=$sValue
    done
    # BAUSTELLE
    if [ $GROUP = "all" -a $node = "all" ]; then
        echo "$SYSTEM_SYSTEM"
        #echo "rule 1" >&2
    elif [ $GROUP = "$SYSTEM_OWNER" -a $node = "all" ]; then
        echo "$SYSTEM_SYSTEM"
        #echo "rule 2: node=$node " >&2
    elif [ $GROUP = "all" -a $node = "$SYSTEM_SYSTEM" ]; then
        echo "$SYSTEM_SYSTEM"
        #echo "rule 3" >&2
    elif [ $GROUP = "$SYSTEM_OWNER" -a $node = "$SYSTEM_SYSTEM" ]; then
        echo "$SYSTEM_SYSTEM"
        #echo "rule 4" >&2
    fi
}

for system in "${LandscapeSystems[@]}"
do
    allSystems="$allSystems $(filterSystem $system)"
done

getLandscapeVars

cat "$FILE_DIR/$FILE_SOURCE" | sed \
    -e "s/@@sid@@/$sid/g" \
    -e "s/@@INO@@/$ino/g" \
    > /tmp/$$_$FILE_SOURCE

for system in $allSystems; do
    ssh $system "mkdir -p /etc/sudoers.d/"
    rsync -v "/tmp/$$_$FILE_SOURCE" "$system:/etc/sudoers.d/$FILE_TARGET"
done
rm /tmp/$$_$FILE_SOURCE
