aboutsummaryrefslogtreecommitdiff
path: root/kvmx
diff options
context:
space:
mode:
Diffstat (limited to 'kvmx')
-rwxr-xr-xkvmx51
1 files changed, 39 insertions, 12 deletions
diff --git a/kvmx b/kvmx
index 75c0c3a..6a5e2d2 100755
--- a/kvmx
+++ b/kvmx
@@ -41,7 +41,21 @@ function kvmx_up {
# Check if image exists, create otherwise
if [ ! -e "$image" ]; then
- kvmx-create $GLOBAL_USER_CONFIG_FOLDER/$VM
+ if [ ! -z "$basebox" ]; then
+ if [ -e "$GLOBAL_USER_CONFIG_FOLDER/$basebox" ]; then
+ baseimage="`kvmx list_image $basebox`"
+
+ if [ ! -e "$baseimage" ]; then
+ echo "$BASENAME: could not find basebox $baseimage. Please create it first."
+ exit 1
+ fi
+
+ echo "Copying base image $baseimage to $image"
+ cp $baseimage $image
+ fi
+ else
+ kvmx-create $GLOBAL_USER_CONFIG_FOLDER/$VM
+ fi
fi
# Run virtual machine
@@ -52,7 +66,7 @@ function kvmx_up {
-chardev spicevmc,id=spicechannel0,name=vdagent \
-smp 2 -soundhw ac97 -cpu host -balloon virtio \
-net nic,model=virtio \
- -net user,hostfwd=tcp:127.0.0.1:$SSH-:22 &
+ -net user,hostfwd=tcp:127.0.0.1:$SSH-:22 &> $LOGFILE &
PID="$!"
@@ -70,8 +84,8 @@ function kvmx_usage {
echo "examples:"
echo ""
echo "$BASENAME list"
- echo "$BASENAME init <machine> [folder]"
- echo "$BASENAME clone <orig> <dest>"
+ echo "$BASENAME init <machine> [folder]"
+ echo "$BASENAME clone <orig-guest> <dest-folder>"
exit 1
}
@@ -192,9 +206,10 @@ function kvmx_initialize {
PIDFILE="$STATE_DIR/pid"
PORTFILE="$STATE_DIR/port"
SSHFILE="$STATE_DIR/ssh"
+ LOGFILE="$STATE_DIR/log"
mkdir -p $STATE_DIR
- if [ ! -e "$image" ] && [ "$ACTION" != "up" ]; then
+ if [ ! -e "$image" ] && [ "$ACTION" != "up" ] && [ "$ACTION" != "purge" ] && [ "$ACTION" != "destroy" ]; then
echo "$BASENAME: file not found: $image"
exit 1
fi
@@ -205,8 +220,13 @@ function kvmx_initialize {
function kvmx_init {
FOLDER="$3"
- if [ -z "$VM" ]; then
- VM="$(basename `pwd`)"
+ if [ -z "$FOLDER" ]; then
+ if [ -z "$VM" ]; then
+ VM="$(basename `pwd`)"
+ FOLDER="$(dirname `pwd`)/$VM"
+ else
+ FOLDER="$(pwd)/$VM"
+ fi
fi
if [ -e "$GLOBAL_USER_CONFIG_FOLDER/$VM" ]; then
@@ -214,10 +234,6 @@ function kvmx_init {
exit 1
fi
- if [ -z "$FOLDER" ]; then
- FOLDER="."
- fi
-
if [ ! -d "$FOLDER" ]; then
mkdir -p $FOLDER
fi
@@ -266,7 +282,7 @@ function kvmx_clone {
# Copy image and configuration
cp -r `dirname $image` $FOLDER/
- cp $GLOBAL_USER_CONFIG_FOLDER/$VM $GLOBAL_USER_CONFIG_FOLDER/$DEST
+ ( cd $GLOBAL_USER_CONFIG_FOLDER && ln -s $FOLDER/kvmxfile $DEST )
# Update config file
new_image="$FOLDER/`basename $image`"
@@ -312,6 +328,17 @@ function kvmx_purge {
rm -f $GLOBAL_USER_CONFIG_FOLDER/$VM
}
+# Provision a machine
+function kvmx_provision {
+ echo "TODO: provision"
+ exit 1
+}
+
+# Print guest image file name
+function kvmx_list_image {
+ echo $image
+}
+
# Print guest status
function kvmx_status {
if kvmx_running; then