#!/bin/bash
#
############ automate-00-createNetworks
#
#############################################################################
#
# License: GPL
# (C) 2017-2018 SUSE Linux GmbH, Nuremberg, Germany
# AUTHOR: Fabian Herschel
#
#############################################################################

source /usr/share/Landscape/bin/get_values
export PATH="$PATH:$LandscapeMain/bin"

set +u
for lan in "${LandscapeNetworks[@]}"; do
    echo "########### $lan ###########################"
    export lan
    export NET_NAME="" NET_TYPE="" NET_BR="" NET_VIRBR="" NET_MAC="" NET_UUID=$(uuidgen)
    export NET_IP="" NET_MASK="" NET_RANGE_START="" NET_RANGE_END="" NET_FORWARD=""
    (
        for lanD in ${lan}; do
            # name=xxxx  ===> export NET_NAME=xxxx
            cmd=$(awk -F= '{ printf( "export NET_%s=%s\n",toupper($1),$2) }' <<< $lanD)
            # echo $cmd
            eval $cmd
        done
        cat $LandscapeKVMInDirectory/net-${NET_TYPE}-template.xml | sed \
            -e "s/@@NETNAME@@/$NET_NAME/g" \
            -e "s/@@NETUUID@@/$NET_UUID/g" \
            -e "s/@@NETBR@@/$NET_BR/g" \
            -e "s/@@NETVIRBR@@/$NET_VIRBR/g" \
            -e "s/@@NETMAC@@/$NET_MAC/g" \
            -e "s/@@NETIP@@/$NET_IP/g" \
            -e "s/@@NETMASK@@/$NET_MASK/g" \
            -e "s/@@NETUPLINK@@/$NET_UPLINK/g" \
            -e "s/@@RANGE_START@@/$NET_RANGE_START/g" \
            -e "s/@@RANGE_END@@/$NET_RANGE_END/g" \
            -e "s/@@NETFORWARD@@/$NET_FORWARD/g" \
        > $LandscapeKVMDirectory/net-$NET_NAME.xml
        for hyp in $LandscapeHypervisors; do
            if [ "$hyp" = "$HOSTNAME" ]; then
                ssh_or_local="bash"
            else
                ssh_or_local="ssh -T root@$hyp"
            fi
            $ssh_or_local <<EOF
                if virsh net-uuid $NET_NAME 1>/dev/null 2>/dev/null; then
                    echo "NET $NET_NAME already defined"
                else
                    echo "Define NET $NET_NAME"
                    virsh net-define $LandscapeKVMDirectory/net-$NET_NAME.xml
                fi
EOF
        done
    )
done
