#!/usr/local/bin/cbsd
#v10.0.3
globalconf="${workdir}/cbsd.conf";
MYARG=""
MYOPTARG="jname"
MYDESC="Stop jail"
CBSDMODULE="virtualbox"
EXTHELP="wf_jstop_jstart.html"

set -e
. ${globalconf}
set +e

. ${subr}
. ${system}
. ${mdtools}
. ${strings}
. ${tools}

. ${workdir}/virtualbox.subr

[ -z "${1}" ] && select_jail_by_list -s "List of online VMs" -a "On" -e vls -r ${sqlreplica}
init $*

# MAIN
if [ $# -gt 1 ]; then
#	recursive stop
	JLIST=$*
	for jname in ${JLIST}; do
		/usr/sbin/daemon -p ${ftmpdir}/vstop.${jname}.$$ /usr/local/bin/cbsd vstop jname=${jname}
		#lets save .pid file
		sleep 1
		[ -f "${ftmpdir}/vstop.${jname}.$$" ] && cbsd_pwait --pid=$( /bin/cat ${ftmpdir}/vstop.${jname}.$$ ) --timeout=${parallel}
	done

	wait_for_fpid -a stop

	err 0 "${MAGENTA}Multiple stop: ${GREEN}done${NORMAL}"
fi

[ -z "${jname}" ] && jname=$1

. ${jrcconf}
[ $? -eq 1 ] && err 1 "${MAGENTA}No such jail: ${GREEN}${jname}${NORMAL}"
#[ ${jid} -eq 0 ] && err 1 "${MAGENTA}Not Running: ${GREEN}${jname}${NORMAL}"
[ "${emulator}" != "virtualbox" ] && err 1 "${MAGENTA}Not in virtualbox mode${NORMAL}"


${VBOX_MGMT_CMD} controlvm ${jname} acpipowerbutton

# wait 15 seconds until vm is shutdown. After 15 sec and while vm is still alive
# apply hard stop

${ECHO} "${GREEN}ACPI power button in progress.${NORMAL}"
printf "Wait for 30 seconds"

for i in $( /usr/bin/seq 1 30 ); do
	_state=$( ${VBOX_MGMT_CMD} showvminfo ${jname}| /usr/bin/awk '/^State: /{print $2}' )
	if [ "${_state}" = "running" ]; then
		printf "."
		sleep 1
	else
		echo
		exit 0
	fi
done

${VBOX_MGMT_CMD} controlvm ${jname} poweroff
echo
exit 0
