#!/bin/bash

if [ -z $1 ]; then
    echo "-- ERROR: specify the letter of the scenario assigned"
    echo "-- Usage: prepare-osmlab <letter>, being <letter> an uppercase letter (A-Z)"
    exit 1
fi
SCEN=$1

sed -i -e '/OSM_USER/d' \
       -e '/OSM_PASSWORD/d' \
       -e '/OSM_PROJECT/d' \
       -e '/OSM_HOSTNAME/d' \
       -e '/alias kubectl/d' \
       ~/.bashrc

echo "export OSM_USER=user$SCEN" >> ~/.bashrc
echo "export OSM_PASSWORD=iotalentum$SCEN" >> ~/.bashrc
echo "export OSM_PROJECT=project$SCEN" >> ~/.bashrc

echo "export OSM_HOSTNAME=10.11.12.1" >> ~/.bashrc
echo "alias kubectl='microk8s kubectl'" >> ~/.bashrc

#source ~/.bashrc 
export OSM_USER=user$SCEN
export OSM_PASSWORD=iotalentum$SCEN
export OSM_PROJECT=project$SCEN
export OSM_HOSTNAME=10.11.12.1

echo "-- "
echo "-- Script for preparing the enviroment for OSM laboratory "
echo "-- "
MYIP=$( ifconfig | grep 10.11.12 | awk '{print $2}' )
echo "-- My IP=$MYIP"

# Delete dummy VIM if registered
osm vim-show dummy_vim > /dev/null 2>&1 && ( echo "-- Deleting dummy_vim..."; osm vim-delete --wait dummy_vim )

#read -p "PAK"

osm vim-create --name dummy_vim --user u --password p --tenant p \
--account_type dummy --auth_url http://localhost/dummy --wait

osm vim-list

# Delete microk8s-cluster registration if already registered
osm k8scluster-show microk8s-cluster > /dev/null 2>&1 && ( echo "-- Deleting microk8s-cluster previous registration..."; osm k8scluster-delete --wait microk8s-cluster )
sleep 6
#read -p "PAK"

echo "-- Registering microk8s-cluster"
KID=$(osm k8scluster-add --creds ~/k8s-cluster.yaml --version 1.21 \
--vim dummy_vim --description "External k8s cluster" --k8s-nets \
'{"net1": "osm-ext"}' --wait microk8s-cluster)

osm k8scluster-list


#read -p "PAK"
#osm k8scluster-show --literal $KID | grep -A1 projects
OSMNS=$( osm k8scluster-show --literal $KID | awk '/projects_read/{getline;print $2}' )
echo "-- KID=$KID"
echo "-- OSMNS=$OSMNS"

# Create OSM namespace if not already created
echo "-- kubectl get namespace $OSMNS"
microk8s kubectl get namespace $OSMNS >/dev/null 2>&1 || microk8s kubectl create namespace $OSMNS 
microk8s kubectl get namespace $OSMNS

# Configure Multus extnet1
microk8s kubectl get -n $OSMNS network-attachment-definitions extnet1 || \
cat <<EOF | microk8s kubectl create -n $OSMNS -f -
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
 name: extnet1
 annotations:
   k8s.v1.cni.cncf.io/resourceName: ovs-cni.network.kubevirt.io/ExtNet1
spec:
 config: '{
   "cniVersion": "0.3.1",
   "type": "ovs",
   "bridge": "ExtNet1"
 }'
EOF

microk8s kubectl get -n $OSMNS network-attachment-definitions accessnet1 || \
cat <<EOF | microk8s kubectl create -n $OSMNS -f -
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
 name: accessnet1
 annotations:
   k8s.v1.cni.cncf.io/resourceName: ovs-cni.network.kubevirt.io/AccessNet1
spec:
 config: '{
   "cniVersion": "0.3.1",
   "type": "ovs",
   "bridge": "AccessNet1"
 }'
EOF

echo "-- kubectl get -n $OSMNS network-attachment-definitions"
microk8s kubectl get -n $OSMNS network-attachment-definitions
