]> gitweb.fluxo.info Git - kvmx.git/commitdiff
Implements kvmx_rename and some aliases
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 11 Jul 2017 23:29:39 +0000 (20:29 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 11 Jul 2017 23:29:39 +0000 (20:29 -0300)
kvmx

diff --git a/kvmx b/kvmx
index c3d12f05dec862376df33d3aebbc016376957a0e..58f558aa5ab5cda66864352514a7f1d0dbf88329 100755 (executable)
--- a/kvmx
+++ b/kvmx
@@ -760,6 +760,11 @@ function kvmx_clone {
   fi
 }
 
+# Alias to clone
+function kvmx_copy {
+  kvmx_clone $*
+}
+
 # Edit guest config
 function kvmx_edit {
   if [ -z "$EDITOR" ]; then
@@ -1075,11 +1080,69 @@ function kvmx_rename {
     exit 1
   fi
 
-  echo "TODO"
-  # Rename folder
-  # Rename image
-  # Rename keypair
+  FOLDER="$3"
+  DEST="`basename $FOLDER`"
+
+  if [ -z "$FOLDER" ]; then
+    kvmx_usage
+  fi
+
+  # 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"
+  fi
+
+  # Check if dest machine exists
+  if [ -e "$GLOBAL_USER_CONFIG_FOLDER/$DEST" ]; then
+    echo "$BASENAME: destination guest $DEST already exists."
+    exit 1
+  fi
+
+  if [ -d "$FOLDER" ]; then
+    echo "$BASENAME: destination $FOLDER already exists."
+    exit 1
+  fi
+
+  # Ensure we have an absolute folder name
+  mkdir -p $FOLDER
+  FOLDER="`cd $FOLDER &> /dev/null && pwd`"
+  rmdir $FOLDER
+
+  # Copy image and configuration
+  echo "Renaming guest..."
+  mv "`dirname $image`" "$FOLDER"
+
+  # Remove old state folder
+  rm -rf $FOLDER/state/*
+
+  # Create config entry
+  ( cd $GLOBAL_USER_CONFIG_FOLDER && ln -s $FOLDER/kvmxfile $DEST )
+
+  # Remove old kvmxfile
+  rm $GLOBAL_USER_CONFIG_FOLDER/$VM
+
   # Update config file
+  new_image="$FOLDER/`basename $image`"
+  sed -i -e "s|image=\"$image\"|image=\"$new_image\"|g" $FOLDER/kvmxfile
+  sed -i -e "s|hostname=\"$VM\"|hostname=\"$DEST\"|g"   $FOLDER/kvmxfile
+
+  # Rename keypair if exists
+  if [ -e "$FOLDER/ssh/$VM.key" ]; then
+    mv $FOLDER/ssh/$VM.key     $FOLDER/ssh/$DEST.key
+    mv $FOLDER/ssh/$VM.key.pub $FOLDER/ssh/$DEST.key.pub
+  fi
+}
+
+# Alias to rename
+function kvmx_move {
+  kvmx_rename $*
+}
+
+# Alias to rename
+function kvmx_mv {
+  kvmx_rename $*
 }
 
 # Dispatch