#!/bin/bash

IP=""
MN_INST=0
PASSWD=""
CT_HOSTNAME=""
RESTORE_STORAGE_UI_CT="/usr/sbin/restore-storage-ui-ct"
REGISTER_AGENT_SCRIPT="/usr/sbin/register-storage-ui-agent"
START_AGENT_UI_FLAG="/tmp/start-vstorage-agent-ui"
STORAGE_UI_CFG_FLAG="/tmp/storage-ui-cfg"

function cleanup() {
	rm -f $STORAGE_UI_CFG_FLAG >/dev/null 2>&1
}

function error() {
	cleanup
	echo $*
	exit 1
}

function create_ui_container() {
	local params

	[ $MN_INST -eq 0 ] && return

	params="--rootpw $PASSWD --ip $IP --skip-recache"

	[ "x$CT_HOSTNAME" != "x" ] && params="$params --hostname $CT_HOSTNAME"

	$RESTORE_STORAGE_UI_CT $params
	[ $? -ne 0 ] && error "Failed to create storage-ui CT"
}

function usage() {
	error "Usage: $0 (-p|--password) PASSWORD (-i|--ip-address) IP1[,IP2[,IP3]...] [-m|--mn-install] [-h|--hostname HOSTNAME]"
}

# Getopt
OPTS=$(getopt -o h:p:i:m --long password:,ip-address:,mn-install,hostname: -- "$@")

eval set -- "$OPTS"

while true; do
	case $1 in
	   -p|--password)
		PASSWD="$2"
		shift 2
		;;
	   -i|--ip-address)
		IP="$2"
		shift 2
		;;
	   -h|--hostname)
		CT_HOSTNAME="$2"
		shift 2
		;;
	   -m|--mn-install)
		MN_INST=1
		shift
		;;
	   --)
		break
		;;
	   *)
		echo "Invalid argument: $1" 1>&2
		exit 1
	esac
done

[ "x$PASSWD" = "x" -o "x$IP" = "x" ] && usage

create_ui_container

for ip in `echo $IP | sed "s,\,, ,g"`; do
	[ "x${ip:0:3}" = "x10." ] && break
done

$REGISTER_AGENT_SCRIPT $ip $PASSWD
[ $? -ne 0 ] && error "Agent registration failed"

echo "#!/bin/bash

/usr/bin/systemctl start vstorage-ui-agent.service
rm -f $START_AGENT_UI_FLAG >/dev/null 2>&1
" > $START_AGENT_UI_FLAG
chmod 0700 $START_AGENT_UI_FLAG

cleanup

exit 0
