#!/bin/sh
#######################################################
#
# automate-027-add-second-node-cl
# to be called on the landscape 'master' 
# init cluster on first node
#
#
#
#######################################################
#
# License: GPL
# Author: Fabian Herschel 2016
# (c) 2016-2018 SUSE Linux GmbH, Nuremberg, Germany
#
#
# Preequisites:
# - VMs installed with SLES, cluster sw installed inside VMs
#
# Syntax:
# automate-022-configure-cl [--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="all"
node="all"
force=0

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 do_cluster()
{
    local add_node="${1%:*}"
    local NET_IP="${1#*:}"

# TODO: NET_IF and SBD must NOT be static

if [ -n "$add_node" ]; then
	case "$LandscapeSLES" in
	    SLES11* | 11* )
        echo "$(date) == sleha-init on $add_node" >&3
		NET_IF="eth0"
		SBD="/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-part1"
		ssh $add_node /usr/sbin/sleha-join -y -c $NET_IP -i $NET_IF csync2
		ssh $add_node /usr/sbin/sleha-join -y -c $NET_IP -i $NET_IF ssh_merge
		ssh $add_node /usr/sbin/sleha-join -y -c $NET_IP -i $NET_IF cluster
		;;
	    SLES12* | 12* )
        echo "$(date) == ha-cluster-init on $add_node" >&3
		NET_IF="eth0"
		SBD="/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-part1"
		ssh $add_node modprobe softdog
		ssh $add_node "echo 'softdog' > /etc/modules-load.d/softdog.conf"
		ssh $add_node systemctl enable sbd
		ssh $add_node rsync $NET_IP:/etc/sysconfig/sbd /etc/sysconfig
		ssh $add_node /usr/sbin/ha-cluster-join -y -c $NET_IP -i $NET_IF csync2
		ssh $add_node /usr/sbin/ha-cluster-join -y -c $NET_IP -i $NET_IF ssh_merge
		ssh $add_node /usr/sbin/ha-cluster-join -y -c $NET_IP -i $NET_IF cluster
		;;
        SLES15* | 15* )
        echo "$(date) == ha-cluster-init on $add_node" >&3
		NET_IF="eth0"
		SBD="/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-part1"
		ssh $add_node systemctl enable chronyd.service
		ssh $add_node systemctl start chronyd.service
		ssh $add_node modprobe softdog
		ssh $add_node "echo 'softdog' > /etc/modules-load.d/softdog.conf"
		ssh $add_node systemctl enable sbd
		ssh $add_node rsync $NET_IP:/etc/sysconfig/sbd /etc/sysconfig
		ssh $add_node /usr/sbin/ha-cluster-join -y -c $NET_IP -i $NET_IF csync2
		ssh $add_node /usr/sbin/ha-cluster-join -y -c $NET_IP -i $NET_IF ssh_merge
		ssh $add_node /usr/sbin/ha-cluster-join -y -c $NET_IP -i $NET_IF cluster
		;;
	esac
fi
}

#
# For SAPHanaSR we iterate over Lanscape variable LandscapeSAPHanaSR KV-pair sys_site2=<system-name>
#
function filterCluster()
{
    local cluster="$@"
    local clusterKV
    for clusterKV in ${cluster}; do
        cKey="${clusterKV%=*}"; cKey=${cKey^^}
        cValue=${clusterKV#*=}
        local CLUSTER_$cKey=$cValue
    done
    # BAUSTELLE
    if [ "$GROUP" = "all" -a "$node" = "all" ]; then
        echo "$CLUSTER_SYS_SITE2:$CLUSTER_SYS_SITE1"
        #echo "rule 1" >&2
    elif [ "$GROUP" = "$CLUSTER_OWNER" -a "$node" = "all" ]; then
        echo "$CLUSTER_SYS_SITE2:$CLUSTER_SYS_SITE1"
        #echo "rule 2: node=$node " >&2
    elif [ "$GROUP" = "all" -a "$node" = "$CLUSTER_SYS_SITE2" ]; then
        echo "$CLUSTER_SYS_SITE2:$CLUSTER_SYS_SITE1"
        #echo "rule 3" >&2
    elif [ "$GROUP" = "$CLUSTER_OWNER" -a "$node" = "$CLUSTER_SYS_SITE2" ]; then
        echo "$CLUSTER_SYS_SITE2:$CLUSTER_SYS_SITE1"
        #echo "rule 4" >&2
    fi
}

#
# For SAPHanaSR we iterate over Lanscape variable LandscapeSAPHanaSR KV-pair sys_site1=<system-name>
#
for cluster in "${LandscapeSAPHanaSR[@]}"
do
    allClusters="$allClusters $(filterCluster $cluster)"
done

for aCluster in ${allClusters}; do
   do_cluster "${aCluster}"
done
