#!/bin/bash
set -e
# This script installs a MS/worker/campus-manager/cache/MV using envsetup on a system

# Prerequisites
# 1. create DNS entries
#   alpha.ubicast.net
#   alpha-cm.ubicast.net
#   alpha-mon.ubicast.net
# 2. create system in panel
# 3. launcher.sh

# log
LOGFILE=/root/$(date +%F)_envsetup.log
exec > >(tee -i ${LOGFILE})

## envsetup action calls
init() {
	python3 /root/envsetup/envsetup.py 31
	python3 /root/envsetup/envsetup.py 32
	python3 /root/envsetup/envsetup.py 33
	python3 /root/envsetup/envsetup.py 34
	python3 /root/envsetup/envsetup.py 35

	python3 /root/envsetup/envsetup.py 11
	python3 /root/envsetup/envsetup.py 12
	python3 /root/envsetup/envsetup.py 13

	python3 /root/envsetup/envsetup.py 21
	python3 /root/envsetup/envsetup.py 22
}

monitor() {
	python3 /root/envsetup/envsetup.py 25
	python3 /root/envsetup/envsetup.py 26
	python3 /root/envsetup/envsetup.py 41
}

mediaserver() {
	python3 /root/envsetup/envsetup.py 23
	python3 /root/envsetup/envsetup.py 24
	python3 /root/envsetup/envsetup.py 71
	python3 /root/envsetup/envsetup.py 25
	python3 /root/envsetup/envsetup.py 51
	python3 /root/envsetup/envsetup.py 52
	python3 /root/envsetup/envsetup.py 25
}

worker() {
	python3 /root/envsetup/envsetup.py 72
}

campusmanager() {
	python3 /root/envsetup/envsetup.py 23
	python3 /root/envsetup/envsetup.py 25
	python3 /root/envsetup/envsetup.py 61
	python3 /root/envsetup/envsetup.py 62
	python3 /root/envsetup/envsetup.py 25
}

cache() {
	python3 /root/envsetup/envsetup.py 81
	python3 /root/envsetup/envsetup.py 82
	python3 /root/envsetup/envsetup.py 25
	python3 /root/envsetup/envsetup.py 26
}

tests() {
	python3 /root/envsetup/tester.py
}

backup_server() {
	python3 /root/envsetup/envsetup.py 91
}

exportvm() {
	python3 /root/envsetup/envsetup.py 111
}

exportvm_local() {
	python3 /root/envsetup/envsetup.py 112
}

case "$1" in
	"ms")
		init
		monitor
		campusmanager
		mediaserver
		tests
	;;

	"w")
		init
		worker
		tests
	;;

	"cm")
		init
		monitor
		campusmanager
		tests
	;;

	"cache")
		init
		cache
	;;

	"mv")
		init
		backup_server
	;;

	"exportvm")
		CONF="$2"
		exportvm
	;;

	"exportvm_local")
		VM_NAME="$2"
		exportvm_local
	;;

	*)
		echo "
Usage: $0 [arg]
ms          build a MediaServer & CM
w           build a Worker
cm          build a Campus-Manager
cache       build a Cache server (munin needs manual configuration on master AND node)
mv          build a MediaVault

After usage a log file will be generated under /root/$(date +%F)_envsetup.log

From admin machine:
Usage: $0 exportvm
exportvm        [conf_file]    export VM from an hypervisor
exportvm_local  [vm name]      export VM from local vbox
"
	;;
esac