Switch to using bash traps to destroy bhyve vms.

This commit is contained in:
Tom Alexander 2023-07-14 11:18:38 -04:00
parent fb759470f5
commit cd6d8f3f69
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
2 changed files with 30 additions and 5 deletions

View File

@ -35,6 +35,33 @@ if [ "$VERBOSE" = "YES" ]; then
set -x set -x
fi fi
############## Setup #########################
function cleanup {
for vm in "${vms[@]}"; do
log "Destroying bhyve vm $f"
bhyvectl "--vm=$vm" --destroy
log "Destroyed bhyve vm $f"
done
}
vms=()
for sig in EXIT INT QUIT HUP TERM; do
trap "set +e; cleanup" "$sig"
done
function die {
local status_code="$1"
shift
(>&2 echo "${@}")
exit "$status_code"
}
function log {
(>&2 echo "${@}")
}
############## Program #########################
function main { function main {
local cmd="$1" local cmd="$1"
shift 1 shift 1
@ -122,6 +149,7 @@ function start_vm {
if [ "$VNC_ENABLE" = "YES" ]; then if [ "$VNC_ENABLE" = "YES" ]; then
additional_args+=("-s" "29,fbuf,tcp=$VNC_LISTEN,w=1920,h=1080") additional_args+=("-s" "29,fbuf,tcp=$VNC_LISTEN,w=1920,h=1080")
fi fi
vms+=("$name")
while true; do while true; do
set -x set -x
set +e set +e
@ -156,9 +184,6 @@ function start_vm {
break break
fi fi
done done
bhyvectl "--vm=$name" --destroy
echo "Destroyed bhyve vm."
} }
function detect_available_link { function detect_available_link {

View File

@ -16,9 +16,9 @@ load_rc_config $name
: ${poudboot_enable:=YES} : ${poudboot_enable:=YES}
command=/usr/sbin/daemon command=/usr/sbin/daemon
command_dendrite=poudboot
pidfile=/var/run/${name}.pid pidfile=/var/run/${name}.pid
command_args="-P $pidfile -u root -f -S -T $name poudboot start" command_args="-p $pidfile -u root -f -S -T $name poudboot start"
export PATH="${PATH}:/usr/local/bin"
run_rc_command "$1" run_rc_command "$1"