From b7f427181f9b0c37fe9eb1d4ce6c57cc98eda7c7 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 4 Nov 2018 13:18:19 -0200 Subject: Support for disposable guests --- kvmx | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'kvmx') diff --git a/kvmx b/kvmx index 85e5c4c..b902ba3 100755 --- a/kvmx +++ b/kvmx @@ -1185,6 +1185,7 @@ function kvmx_clone { FOLDER="$1" DEST="`basename $FOLDER`" + OPT="$2" if [ -z "$FOLDER" ]; then kvmx_usage @@ -1215,7 +1216,11 @@ function kvmx_clone { # Copy image and configuration echo "Copying basebox..." if which rsync &> /dev/null; then - rsync -ah --sparse --progress $STORAGE/ $FOLDER/ + if [ "$OPT" == "--skell" ]; then + local exclude="--exclude=box.img" + fi + + rsync -ah --sparse --progress $exclude $STORAGE/ $FOLDER/ else cp -r --sparse=always $STORAGE/ $FOLDER/ fi @@ -2040,6 +2045,35 @@ function kvmx_create { fi } +# Disposable guest +function kvmx_disposable { + local date="`date +%Y%m%d%I%M%S`" + local disposable="$VM-disposable-$date" + + # Clone and ensure we use a backing file + kvmx clone $VM $disposable --skell || exit 1 + echo "basebox=$VM" >> $GLOBAL_USER_CONFIG_FOLDER/$disposable + echo 'backing_file="1"' >> $GLOBAL_USER_CONFIG_FOLDER/$disposable + + kvmx up $disposable + + echo "Waiting for the VM $disposable to stop before erasing it..." + + local image="`kvmx list_image $disposable`" + local folder="`dirname $image`" + + # Remove VM after it stopped + while true; do + if ! kvmx running $disposable; then + kvmx purge $disposable + rm -rf $folder + exit + fi + + sleep 10 + done +} + # Dispatch if type kvmx_$ACTION 2> /dev/null | grep -q "kvmx_$ACTION ()"; then __kvmx_initialize $* -- cgit v1.2.3