FOLDER="$1"
DEST="`basename $FOLDER`"
+ OPT="$2"
if [ -z "$FOLDER" ]; then
kvmx_usage
# 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
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 $*