From e0ef584256bba1bfcc84d284f9918ee9ff887a2b Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Thu, 30 Apr 2015 15:47:23 +0200 Subject: [PATCH] Feature #3778: TM shared/mv can migrate to another System DS --- src/tm_mad/shared/mv | 68 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) mode change 120000 => 100755 src/tm_mad/shared/mv diff --git a/src/tm_mad/shared/mv b/src/tm_mad/shared/mv deleted file mode 120000 index 300563f2ad..0000000000 --- a/src/tm_mad/shared/mv +++ /dev/null @@ -1 +0,0 @@ -../common/dummy.sh \ No newline at end of file diff --git a/src/tm_mad/shared/mv b/src/tm_mad/shared/mv new file mode 100755 index 0000000000..9d885a1b02 --- /dev/null +++ b/src/tm_mad/shared/mv @@ -0,0 +1,67 @@ +#!/bin/bash + +# -------------------------------------------------------------------------- # +# Copyright 2002-2015, OpenNebula Project (OpenNebula.org), C12G Labs # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); you may # +# not use this file except in compliance with the License. You may obtain # +# a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +#--------------------------------------------------------------------------- # + +# MV vmid dsid +# +# - hostX is the target host to deploy the VM +# - system_ds is the path for the system datastore in the host +# - vmid is the id of the VM +# - dsid is the target datastore (0 is the system datastore) + +SRC=$1 +DST=$2 + +VMID=$3 +DSID=$4 + +if [ -z "${ONE_LOCATION}" ]; then + TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh +else + TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh +fi + +. $TMCOMMON + +SRC=`fix_dir_slashes $SRC` +DST=`fix_dir_slashes $DST` + +SRC_PATH=`arg_path $SRC` +DST_PATH=`arg_path $DST` + +SRC_HOST=`arg_host $SRC` +DST_HOST=`arg_host $DST` + +DST_DIR=`dirname $DST_PATH` + +SRC_DS_DIR=`dirname $SRC_PATH` +SRC_VM_DIR=`basename $SRC_PATH` + +# Return if moving a disk, we will move them when moving the whole system_ds +# directory for the VM +if [ `is_disk $DST_PATH` -eq 1 ]; then + exit 0 +fi + +# Return if the target path is the same as the source path. No need to move +# anything. This is *not* a system ds migration. +if [ "$SRC_PATH" == "$DST_PATH" ]; then + exit 0 +fi + +ssh_exec_and_log "$DST_HOST" "mv $SRC_PATH $DST_PATH" \ + "Error moving VM files to another System DS: $SRC_PATH to $DST_PATH in $DST_HOST"