1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-13 12:58:17 +03:00

feature #2097: Minor fixes in vmfs tm

(cherry picked from commit d45a053c9843980933df221b92367a9ae94f53b6)
This commit is contained in:
Ruben S. Montero 2013-05-30 12:57:04 +02:00
parent af22e45866
commit 51887fb006
2 changed files with 60 additions and 37 deletions

View File

@ -43,10 +43,7 @@ grep -v "Content Listing"|grep -Fv -- "--------"|egrep -v "^[[:space:]]*$"`
# - dsid is the target datastore
DST=$1
VMID=$2
# We are interested in the system datastore, embedded in the path
DSID=$(basename $(dirname $(dirname $DST)))
if [ -z "${ONE_LOCATION}" ]; then
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
@ -58,10 +55,16 @@ fi
. $TMCOMMON
DST_PATH=`arg_path $DST`
DST_HOST=`arg_host $DST`
#Get the System DS ID based in PATH. dsid argument is for the image DS
if [ `is_disk $DST_PATH` -eq 1 ]; then
DSID=$(basename $(dirname $(dirname $DST)))
else
DSID=$(basename $(dirname $DST))
fi
#-------------------------------------------------------------------------------
# Retrieve needed information
#-------------------------------------------------------------------------------
@ -70,7 +73,7 @@ USE_SSH=$(get_tm_use_ssh $DSID)
#-------------------------------------------------------------------------------
# Set up datastore
#-------------------------------------------------------------------------------
#----------------------- --------------------------------------------------------
vmfs_set_up

View File

@ -40,6 +40,47 @@ fi
. $TMCOMMON
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
function mvds_ssh {
MVSCRIPT=$(cat <<EOF
SRC_READLN=\$($READLINK -f $SRC_PATH)
DST_READLN=\$($READLINK -f $DST_PATH)
if [ \( -L $SRC \) -a \( "$SRC_READLN" = "$DST_READLN" \) ] ; then
echo "Not moving files to image repo, they are the same"
else
$VMKFSTOOLS -U $DST_DISK
$VMKFSTOOLS -i $SRC_DISK -d thin $DST_DISK
fi
if [ -d $DST_PATH ]; then
chmod 0770 $DST_PATH
else
chmod 0660 $DST_PATH
fi
EOF
)
ssh_exec_and_log $SRC_HOST "$MVSCRIPT" \
"Could not move image $SRC_DISK_VMW to $DST_DISK_VMW"
}
#-------------------------------------------------------------------------------
function mvds_local {
$VMKFSTOOLS $VI_PARAMS -U $DST_DISK_VMW &> /dev/null
exec_and_log "$VMKFSTOOLS $VI_PARAMS -i $SRC_DISK_VMW -d thin $DST_DISK_VMW" \
"Could not move image $SRC_DISK_VMW to $DST_DISK_VMW"
}
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Retrieve needed information, set dst path and dir
#-------------------------------------------------------------------------------
@ -56,6 +97,14 @@ USE_SSH=$(get_tm_use_ssh $DSID)
IMAGE_DS_NAME=`basename $(dirname $DST_PATH)`
SYSTEM_DS_NAME=`basename $(dirname $(dirname $SRC_PATH))`
# Paths for disks
SRC_DISK="/vmfs/volumes/$SYSTEM_DS_NAME/$VMID/$SRC_FOLDER/disk.vmdk"
SRC_DISK_VMW="[$SYSTEM_DS_NAME]$VMID/$SRC_FOLDER/disk.vmdk"
DST_DISK="/vmfs/volumes/$IMAGE_DS_NAME/$DST_FOLDER/disk.vmdk"
DST_DISK_VMW="[$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk"
#-------------------------------------------------------------------------------
# Set up datastore
#-------------------------------------------------------------------------------
@ -66,41 +115,12 @@ vmfs_set_up
# Move the image back to the datastore
#-------------------------------------------------------------------------------
log "Moving [$SYSTEM_DS_NAME]$VMID/$SRC_FOLDER/disk.vmdk to [$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk"
log "Moving $SRC_DISK_VMW to $DST_DISK_VMW"
if [ "$USE_SSH" == "yes" ]; then
MVSCRIPT=$(cat <<EOF
SRC_READLN=eval "$READLINK -f $SRC_PATH"
DST_READLN=eval "$READLINK -f $DST_PATH"
if [ \( -L $SRC \) -a \( "$SRC_READLN" = "$DST_READLN" \) ] ; then
echo "Not moving files to image repo, they are the same"
mvds_ssh
else
WHICH_SUDO=`which sudo`
if [ ! -z "$WHICH_SUDO" -a -f "$WHICH_SUDO" ]; then
SUDO="sudo "
fi
$SUDO $VMKFSTOOLS -U [$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk
$SUDO $VMKFSTOOLS -i [$SYSTEM_DS_NAME]$VMID/$SRC_FOLDER/disk.vmdk -d thin [$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk
fi
if [ -d $DST_PATH ]; then
chmod 0770 $DST_PATH
else
chmod 0660 $DST_PATH
fi
EOF
)
ssh_exec_and_log $SRC_HOST "$MVSCRIPT" \
"Could not move image [$SYSTEM_DS_NAME]$VMID/$SRC_FOLDER/disk.vmdk to [$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk in $SRC_HOST"
else
$VMKFSTOOLS $VI_PARAMS -U [$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk &> /dev/null
exec_and_log "$VMKFSTOOLS $VI_PARAMS -i [$SYSTEM_DS_NAME]$VMID/$SRC_FOLDER/disk.vmdk -d thin [$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk" \
"Could not move image [$SYSTEM_DS_NAME]$VMID/$SRC_FOLDER/disk.vmdk to [$IMAGE_DS_NAME]$DST_FOLDER/disk.vmdk in $SRC_HOST"
mvds_local
fi
exit 0