diff options
Diffstat (limited to 'kvmx')
-rwxr-xr-x | kvmx | 51 |
1 files changed, 39 insertions, 12 deletions
@@ -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 |