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:
parent
af22e45866
commit
51887fb006
@ -43,10 +43,7 @@ grep -v "Content Listing"|grep -Fv -- "--------"|egrep -v "^[[:space:]]*$"`
|
|||||||
# - dsid is the target datastore
|
# - dsid is the target datastore
|
||||||
|
|
||||||
DST=$1
|
DST=$1
|
||||||
|
|
||||||
VMID=$2
|
VMID=$2
|
||||||
# We are interested in the system datastore, embedded in the path
|
|
||||||
DSID=$(basename $(dirname $(dirname $DST)))
|
|
||||||
|
|
||||||
if [ -z "${ONE_LOCATION}" ]; then
|
if [ -z "${ONE_LOCATION}" ]; then
|
||||||
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
|
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
|
||||||
@ -58,10 +55,16 @@ fi
|
|||||||
|
|
||||||
. $TMCOMMON
|
. $TMCOMMON
|
||||||
|
|
||||||
|
|
||||||
DST_PATH=`arg_path $DST`
|
DST_PATH=`arg_path $DST`
|
||||||
DST_HOST=`arg_host $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
|
# Retrieve needed information
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
@ -70,7 +73,7 @@ USE_SSH=$(get_tm_use_ssh $DSID)
|
|||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# Set up datastore
|
# Set up datastore
|
||||||
#-------------------------------------------------------------------------------
|
#----------------------- --------------------------------------------------------
|
||||||
|
|
||||||
vmfs_set_up
|
vmfs_set_up
|
||||||
|
|
||||||
|
@ -40,6 +40,47 @@ fi
|
|||||||
|
|
||||||
. $TMCOMMON
|
. $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
|
# 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)`
|
IMAGE_DS_NAME=`basename $(dirname $DST_PATH)`
|
||||||
SYSTEM_DS_NAME=`basename $(dirname $(dirname $SRC_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
|
# Set up datastore
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
@ -66,41 +115,12 @@ vmfs_set_up
|
|||||||
# Move the image back to the datastore
|
# 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
|
if [ "$USE_SSH" == "yes" ]; then
|
||||||
|
mvds_ssh
|
||||||
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"
|
|
||||||
else
|
else
|
||||||
WHICH_SUDO=`which sudo`
|
mvds_local
|
||||||
|
|
||||||
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"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user