aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2018-11-04 13:18:19 -0200
committerSilvio Rhatto <rhatto@riseup.net>2018-11-04 13:18:19 -0200
commitb7f427181f9b0c37fe9eb1d4ce6c57cc98eda7c7 (patch)
tree7d2b88996f18bfde1db687f448744030ea9d91d0
parenta4037fb36e20423df5223b10ec5aec18ab09d8fe (diff)
downloadkvmx-b7f427181f9b0c37fe9eb1d4ce6c57cc98eda7c7.tar.gz
kvmx-b7f427181f9b0c37fe9eb1d4ce6c57cc98eda7c7.tar.bz2
Support for disposable guests
-rwxr-xr-xkvmx36
1 files changed, 35 insertions, 1 deletions
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 $*