aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xkvmx35
-rw-r--r--kvmxfile3
2 files changed, 20 insertions, 18 deletions
diff --git a/kvmx b/kvmx
index 3e71802..cb0e31b 100755
--- a/kvmx
+++ b/kvmx
@@ -153,8 +153,9 @@ function __kvmx_initialize {
KVMXFILE="`readlink $GLOBAL_USER_CONFIG_FOLDER/$VM`"
KVMX_PROJECT_FOLDER="`dirname $KVMXFILE`"
STORAGE="`dirname $image`"
- STATE_DIR="$STORAGE/state/$VM"
- LOG_DIR="$STORAGE/log"
+ DATADIR="${datadir:-$STORAGE}"
+ STATE_DIR="$DATADIR/state/$VM"
+ LOG_DIR="$DATADIR/log"
PIDFILE="$STATE_DIR/pid"
PORTFILE="$STATE_DIR/port"
XDMCPPORTFILE="$STATE_DIR/xdmcp"
@@ -169,9 +170,9 @@ function __kvmx_initialize {
MONITORFILE="$STATE_DIR/monitor"
CONSOLEFILE="$STATE_DIR/console"
- if [ -e "$STORAGE/ssh/$VM.key" ]; then
- mkdir -p "$STORAGE/ssh"
- SSHKEY="$STORAGE/ssh/$VM.key"
+ if [ -e "$DATADIR/ssh/$VM.key" ]; then
+ mkdir -p "$DATADIR/ssh"
+ SSHKEY="$DATADIR/ssh/$VM.key"
else
SSHKEY="$APP_BASE/share/ssh/insecure_private_key"
fi
@@ -319,9 +320,9 @@ function kvmx_up {
fi
if [ -e "$basekey" ]; then
- vmname="$(basename `dirname $image`)"
- imagekey="`dirname $image`/ssh/$vmname.key"
- mkdir -p "`dirname $image`/ssh"
+ vmname="$(basename $STORAGE)"
+ imagekey="$STORAGE/ssh/$vmname.key"
+ mkdir -p "$STORAGE/ssh"
cp $basekey $imagekey
cp $basekey.pub $imagekey.pub
@@ -916,8 +917,7 @@ function kvmx_clone {
# If dest is given without a full path, clone to the same basedir
# as the original guest.
if [ "$FOLDER" == "$DEST" ]; then
- FOLDER="`dirname $image`"
- FOLDER="`dirname $FOLDER`/$DEST"
+ FOLDER="`dirname $STORAGE`/$DEST"
fi
# Check if dest machine exists
@@ -939,9 +939,9 @@ function kvmx_clone {
# Copy image and configuration
echo "Copying basebox..."
if which rsync &> /dev/null; then
- rsync -ah --sparse --progress `dirname $image`/ $FOLDER/
+ rsync -ah --sparse --progress $STORAGE/ $FOLDER/
else
- cp -r --sparse=always `dirname $image` $FOLDER/
+ cp -r --sparse=always $STORAGE/ $FOLDER/
fi
# Remove old state folder
@@ -1005,7 +1005,7 @@ function kvmx_destroy {
rm -f $image
rm -rf $STATE_DIR
- echo "$BASENAME: removed image and state files, but not the whole `dirname $image` folder."
+ echo "$BASENAME: removed image and state files, but not the whole $STORAGE folder."
}
# Shred a guest
@@ -1135,8 +1135,8 @@ function kvmx_log {
# Rotate SSH keys
function kvmx_rotate_sshkeys {
# Generate new keypair
- mkdir -p "$STORAGE/ssh"
- SSHKEY="$STORAGE/ssh/$VM.key"
+ mkdir -p "$DATADIR/ssh"
+ SSHKEY="$DATADIR/ssh/$VM.key"
__kvmx_ssh_keygen $SSHKEY.new "$user@`basename $image .img`"
# Replace pubkey on server
@@ -1342,8 +1342,7 @@ function kvmx_rename {
# If dest is given without a full path, rename to the same basedir
# as the original guest.
if [ "$FOLDER" == "$DEST" ]; then
- FOLDER="`dirname $image`"
- FOLDER="`dirname $FOLDER`/$DEST"
+ FOLDER="`dirname $STORAGE`/$DEST"
fi
# Check if dest machine exists
@@ -1364,7 +1363,7 @@ function kvmx_rename {
# Copy image and configuration
echo "Renaming guest..."
- mv "`dirname $image`" "$FOLDER"
+ mv "$STORAGE" "$FOLDER"
# Remove old state folder
rm -rf $FOLDER/state/*
diff --git a/kvmxfile b/kvmxfile
index 68d90aa..9dd6211 100644
--- a/kvmxfile
+++ b/kvmxfile
@@ -85,6 +85,9 @@ run_xephyr="0"
# Where the guest image is stored
#image="$HOME/.local/share/kvmx/$VM/box.img"
+# Where datafiles are stored: just set this if you know what you're doing
+#datadir="$HOME/.local/share/kvmx/$VM"
+
# Image size
size="10G"