From: Silvio Rhatto Date: Sun, 4 Nov 2018 15:18:19 +0000 (-0200) Subject: Support for disposable guests X-Git-Tag: 0.1.0~163 X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=b7f427181f9b0c37fe9eb1d4ce6c57cc98eda7c7;p=kvmx.git Support for disposable guests --- 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 $*