#!/bin/bash

### внимание это утилита ТОЛЬКО ДЛЯ РУЧНОГО ЗАПУСКА АДМИНОМ только для удобства
set -eu
export LOG_FILE=/var/log/fox_vm.log
__SILENT=TRUE
. /opt/fox_utils/crab_sys.sh
# уберем отлов ошибок тк во врапере он только мешает
# skip strongbash021_5
trap '' ERR

if [ "${1:---help}" = "--help" ]; then
	echo "Info: Эту утилиту можно вызвать только локально для удобства админа"
	echo "Info: Нельзя вызывать из cloudfox_vm"
	echo -n "Usage: $0 create|start|stop|info|list [name|ALL] [--type=vz|kvm|lxc]"
	echo -n "--memory=1024M --disksize=10G [ --ip=10.100.0.10 ] [--ctid=123]"
	echo -n "[ --gate 10.100.0.1 --hostname test1.example.com --dns 8.8.8.8 ]"
	echo "[ --tmplt_os=centos-7-x86_64 ] [ --dry=1 ] [ --ssh_dnat_port=12112 ]"
	echo "Default: --tmplt_os=centos-7-x86_64 --memory=1024M --disksize=10G"
	echo "Example:"
	echo "Example1: vm create test3"
	echo "Example2: vm clone test3 name_clone"
	echo "Example3: vm create phplist --tmplt_os=centos-7-x86_64 --memory=4096M --disksize=10G"
	echo "Example4: vm create fromkvm1 --tmplt_os=zero --memory=4096M --disksize=10G"
	echo "Example5: vm list_tmplt"
	echo "Command for alltype:"
	for type in /opt/fox_vz/vz_cli /opt/fox_kvm/kvm_cli; do
		echo '################################################################################'
		[ -x "$type" ] && $type --help
	done
	exit 0
fi

sys::arg_parse "$@"
# дефалтный тип при создании vz
if [ "$1" = "create" -a "${ARG_TYPE:-}" = '' ]; then
	ARG_TYPE="vz7"
fi
if [ "${ARG_TYPE:-}" != '' ]; then
	"/opt/fox_${ARG_TYPE}/${ARG_TYPE}_cli" "$@"
	exit 0
fi

if [ "${ARG_2:-}" = "" -o "${ARG_2:-}" = "ALL" ] \
	|| [[ "${ARG_2:-}" == '--'* ]] \
	|| [ ! -f "/opt/fox_conf/vm/$ARG_2/vm.conf" ]; then
	RETS=0
	for type in /opt/fox_vz/vz_cli /opt/fox_kvm/kvm_cli \
		/opt/fox_vz7/vz7_cli /opt/fox_kvm7/kvm7_cli \
		/opt/fox_lxc/lxc_cli; do
		set +e
		# export __SILENT=TRUE
		if [ -x "$type" ]; then
			if $type "$@"; then
				:
			else
				RETS=$(($RETS+$?))
			fi
		fi
		set -e
	done
	exit $RETS
fi
VM_NAME="${ARG_2}"
if [ "$1" = show ]; then
	cat "/opt/fox_conf/vm/$VM_NAME/vm.conf"
	exit 0
fi
. /opt/fox_utils/fox_conf vm get "$VM_NAME"
if [ -x "/opt/fox_vm/fox_$VM_TYPE" ]; then
	/opt/fox_vm/${VM_TYPE}_cli "$@"
else
	/opt/fox_$VM_TYPE/${VM_TYPE}_cli "$@"
fi
exit 0
