summaryrefslogtreecommitdiffstats
path: root/src/spdk/test/vhost/common/vm_shutdown.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/spdk/test/vhost/common/vm_shutdown.sh')
-rwxr-xr-xsrc/spdk/test/vhost/common/vm_shutdown.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/spdk/test/vhost/common/vm_shutdown.sh b/src/spdk/test/vhost/common/vm_shutdown.sh
new file mode 100755
index 00000000..1de1170f
--- /dev/null
+++ b/src/spdk/test/vhost/common/vm_shutdown.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+
+BASE_DIR=$(readlink -f $(dirname $0))
+[[ -z "$COMMON_DIR" ]] && COMMON_DIR="$(cd $BASE_DIR/../common && pwd)"
+[[ -z "$TEST_DIR" ]] && TEST_DIR="$(cd $BASE_DIR/../../../../ && pwd)"
+
+function usage()
+{
+ [[ ! -z $2 ]] && ( echo "$2"; echo ""; )
+ echo "Shortcut script for shutting down VMs"
+ echo "Usage: $(basename $1) [OPTIONS] [VMs]"
+ echo
+ echo "-h, --help print help and exit"
+ echo " --work-dir=WORK_DIR Where to find build file. Must exist. [default: ./..]"
+ echo "-a kill/shutdown all running VMs"
+ echo "-k kill instead of shutdown"
+ exit 0
+}
+optspec='akh-:'
+do_kill=false
+all=false
+
+while getopts "$optspec" optchar; do
+ case "$optchar" in
+ -)
+ case "$OPTARG" in
+ help) usage $0 ;;
+ work-dir=*) TEST_DIR="${OPTARG#*=}" ;;
+ *) usage $0 "Invalid argument '$OPTARG'" ;;
+ esac
+ ;;
+ h) usage $0 ;;
+ k) do_kill=true ;;
+ a) all=true ;;
+ *) usage $0 "Invalid argument '$OPTARG'"
+ esac
+done
+
+. $COMMON_DIR/common.sh
+
+if $do_kill && [[ $EUID -ne 0 ]]; then
+ echo "Go away user come back as root"
+ exit 1
+fi
+
+if $all; then
+ if do_kill; then
+ notice "killing all VMs"
+ vm_kill_all
+ else
+ notice "shutting down all VMs"
+ vm_shutdown_all
+ fi
+else
+ shift $((OPTIND-1))
+
+ if do_kill; then
+ notice "INFO: killing VMs: $@"
+ for vm in $@; do
+ vm_kill $vm
+ done
+ else
+ notice "shutting down all VMs"
+ vm_shutdown_all
+ fi
+fi