1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Merge branch 'feature-1437' of git.opennebula.org:one into feature-1437

This commit is contained in:
Ruben S. Montero 2012-09-28 23:14:30 +02:00
commit 787ccb888d
10 changed files with 106 additions and 131 deletions

View File

@ -65,22 +65,15 @@ SRC="${XPATH_ELEMENTS[5]}"
IMAGE_ID="${XPATH_ELEMENTS[6]}"
SRC_FOLDER=`basename $SRC`
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
DST=`generate_image_path`
DST_FOLDER=`basename $DST`
DST_HOST=`get_destination_host $IMAGE_ID`
if [ "$USE_SSH" != "yes" ]; then
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
# ------------ Set up datastore -------------
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
vmfs_set_up
# ------------ Copy the image to the repository -------------

View File

@ -76,34 +76,23 @@ MD5="${XPATH_ELEMENTS[9]}"
SHA1="${XPATH_ELEMENTS[10]}"
IMAGE_ID="${XPATH_ELEMENTS[11]}"
# Set up the datastore
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
FE_DST=`generate_image_path`
DST_FOLDER=`basename $FE_DST`
DST="/vmfs/volumes/$DS_ID/$DST_FOLDER"
DST_HOST=`get_destination_host $IMAGE_ID`
if [ "$USE_SSH" != "yes" ]; then
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
# Create DST in DST_HOST
if [ "$USE_SSH" == "yes" ]; then
ssh_make_path $DST_HOST $DST
else
exec_and_log "vifs $VI_PARAMS --mkdir [$DS_ID]$DST_FOLDER" \
"Cannot create $DST in $DST_HOST"
fi
# ------------ Set up datastore -------------
# Prepare for a possible download in the front-end
if [ ! -d $TMP_DIR ]; then
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
vmfs_set_up
vmfs_create_remote_path $DS_ID
# ------------ Prepare for a possible download in the front-end -------------
if [ ! -d $TMP_DIR ]; then
mkdir -p $TMP_DIR
fi

View File

@ -63,27 +63,22 @@ RESTRICTED_DIRS="${XPATH_ELEMENTS[1]}"
SAFE_DIRS="${XPATH_ELEMENTS[2]}"
UMASK="${XPATH_ELEMENTS[3]}"
USE_SSH="${XPATH_ELEMENTS[4]:-$DS_USE_SSH}"
IMAGE_DS_ID="${XPATH_ELEMENTS[5]}"
DS_ID="${XPATH_ELEMENTS[5]}"
FSTYPE="${XPATH_ELEMENTS[6]}"
SIZE="${XPATH_ELEMENTS[7]}"
IMAGE_ID="${XPATH_ELEMENTS[8]}"
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
DST=`generate_image_path`
DST_DIR=`dirname $DST`
DST_FOLDER=`basename $DST`
DST_HOST=`get_destination_host $IMAGE_ID`
if [ "$USE_SSH" != "yes" ]; then
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
# ------------ Set up datastore -------------
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
vmfs_set_up
vmfs_create_remote_path $DS_ID
# ------------ Image to save_as disk, no need to create a FS ------------
@ -94,23 +89,19 @@ fi
# ------------ Create the image within the image datastore ------------
log "Making filesystem of ${SIZE}M (with no format) at [$IMAGE_DS_ID]$DST_FOLDER on $DST_HOST"
log "Making filesystem of ${SIZE}M (with no format) at [$DS_ID]$DST_FOLDER on $DST_HOST"
IMAGE_FORMAT=vmdk
VMWARE_DISK_TYPE=`echo $FSTYPE|cut -d'_' -f 2`
if [ "$USE_SSH" == "yes" ]; then
ssh_exec_and_log $DST_HOST "mkdir -p /vmfs/volumes/$IMAGE_DS_ID/$DST_FOLDER" \
"Could not create disk directory /vmfs/volumes/$IMAGE_DS_ID/$DST_FOLDER on $DST_HOST"
$SSH $DST_HOST $VMKFSTOOLS -U [$IMAGE_DS_ID]$DST_FOLDER/disk.vmdk
ssh_exec_and_log $DST_HOST "$VMKFSTOOLS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} /vmfs/volumes/$IMAGE_DS_ID/$DST_FOLDER/disk.vmdk" \
"Cannot create [$IMAGE_DS_ID] $DST_FOLDER/disk.vmdk on $DST_HOST"
$SSH $DST_HOST $VMKFSTOOLS -U [$DS_ID]$DST_FOLDER/disk.vmdk &> /dev/null
ssh_exec_and_log $DST_HOST "$VMKFSTOOLS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} /vmfs/volumes/$DS_ID/$DST_FOLDER/disk.vmdk" \
"Cannot create [$DS_ID] $DST_FOLDER/disk.vmdk on $DST_HOST"
else
$VMKFSTOOLS $VI_PARAMS -U [$IMAGE_DS_ID]$DST_FOLDER/disk.vmdk &> /dev/null
exec_and_log "vifs $VI_PARAMS --mkdir [$IMAGE_DS_ID]$DST_FOLDER" \
"Cannot create [$IMAGE_DS_ID] $DST_FOLDER on $DST_HOST"
exec_and_log "$VMKFSTOOLS $VI_PARAMS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} [$IMAGE_DS_ID]$DST_FOLDER/disk.vmdk" \
"Cannot create $IMAGE_DS_ID]$DST_FOLDER/disk.vmdk on $DST_HOST"
$VMKFSTOOLS $VI_PARAMS -U [$DS_ID]$DST_FOLDER/disk.vmdk &> /dev/null
exec_and_log "$VMKFSTOOLS $VI_PARAMS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} [$DS_ID]$DST_FOLDER/disk.vmdk" \
"Cannot create $DS_ID]$DST_FOLDER/disk.vmdk on $DST_HOST"
fi
echo "/vmfs/volumes/$IMAGE_DS_ID/$DST_FOLDER"
echo "/vmfs/volumes/$DS_ID/$DST_FOLDER"

View File

@ -53,40 +53,34 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \
/DS_DRIVER_ACTION_DATA/IMAGE/ID)
SRC="${XPATH_ELEMENTS[0]}"
DS_NAME="${XPATH_ELEMENTS[1]}"
DS_ID="${XPATH_ELEMENTS[1]}"
USE_SSH="${XPATH_ELEMENTS[4]:-$DS_USE_SSH}"
IMAGE_ID="${XPATH_ELEMENTS[2]}"
DST_HOST=`get_destination_host $IMAGE_ID`
DST_FOLDER=`basename $SRC`
if [ "$USE_SSH" != "yes" ]; then
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
# ------------ Set up datastore ------------
vmfs_set_up
# ------------ Remove the image from the repository ------------
log "Removing $SRC from the image repository"
if [ "$USE_SSH" == "yes" ]; then
if [ -n $DS_NAME -a -n $DST_FOLDER ]; then
ssh_exec_and_log $DST_HOST "rm -rf /vmfs/volumes/$DS_NAME/$DST_FOLDER" \
if [ -n $DS_ID -a -n $DST_FOLDER ]; then
ssh_exec_and_log $DST_HOST "rm -rf /vmfs/volumes/$DS_ID/$DST_FOLDER" \
"Error deleting $SRC"
fi
else
# We have to erase the contents of the folder one by one
FILES_TO_ERASE=`vifs $VI_PARAMS --dir [$DS_NAME]$DST_FOLDER|grep -v "Content Listing"|grep -v "\-\-\-\-\-\-\-\-"|egrep -v "^[[:space:]]*$"`
FILES_TO_ERASE=`vifs $VI_PARAMS --dir [$DS_ID]$DST_FOLDER|grep -v "Content Listing"|grep -v "\-\-\-\-\-\-\-\-"|egrep -v "^[[:space:]]*$"`
for file in $FILES_TO_ERASE; do
exec_and_log "vifs $VI_PARAMS --force --rm [$DS_NAME]$DST_FOLDER/$file" \
exec_and_log "vifs $VI_PARAMS --force --rm [$DS_ID]$DST_FOLDER/$file" \
"Cannot delete $DST_FOLDER/$file in $DST_HOST"
done
exec_and_log "vifs $VI_PARAMS --force --rm [$DS_NAME]$DST_FOLDER" \
exec_and_log "vifs $VI_PARAMS --force --rm [$DS_ID]$DST_FOLDER" \
"Cannot delete $DST_FOLDER in $DST_HOST"
fi

View File

@ -409,3 +409,37 @@ function iqn_get_host {
VG_NAME=$(iqn_get_vg_name "$IQN")
echo ${TARGET%%.$VG_NAME.$LV_NAME}
}
function vmfs_create_remote_path {
DS_ID=$1
# Create DST in DST_HOST
if [ "$USE_SSH" == "yes" ]; then
exec_and_log "ssh_make_path $DST_HOST $DST" \
"Cannot create $DST in $DST_HOST"
else
exec_and_log "vifs $VI_PARAMS --mkdir [$DS_ID]$DST_FOLDER" \
"Cannot create [$DS_ID]$DST_FOLDER in $DST_HOST"
fi
}
function vmfs_set_up {
if [ "$USE_SSH" != "yes" ]; then
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
}
function vmfs_create_double_path {
DS_ID=$1
FIRST_FOLDER=$2
SECOND_FOLDER=$3
# Two calls needed since vifs cannot do a mkdir -p
vifs $VI_PARAMS --force --mkdir [$DS_ID]$FIRST_FOLDER &> /dev/null
vifs $VI_PARAMS --force --mkdir [$DS_ID]$FIRST_FOLDER/$SECOND_FOLDER &> /dev/null
}

View File

@ -53,19 +53,13 @@ DST_DIR=`dirname $DST_PATH`
DST_FOLDER=`basename $DST_PATH`
IMAGE_DS_NAME=`basename $(dirname $SRC_PATH)`
SYSTEM_DS_NAME=`basename $(dirname $(dirname $DST_PATH))`
USE_SSH=$(get_tm_use_ssh $IMAGE_DS_NAME)
if [ "$USE_SSH" != "yes" ]; then
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
#-------------------------------------------------------------------------------
# Set up datastore
#-------------------------------------------------------------------------------
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
vmfs_set_up
#-------------------------------------------------------------------------------
# Create remote folder
@ -74,9 +68,7 @@ fi
if [ "$USE_SSH" == "yes" ]; then
ssh_make_path $DST_HOST $DST_PATH
else
# Two calls needed since vifs cannot do a mkdir -p
vifs $VI_PARAMS --force --mkdir [$SYSTEM_DS_NAME]$VMID &> /dev/null
vifs $VI_PARAMS --force --mkdir [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER &> /dev/null
vmfs_create_double_path $SYSTEM_DS_NAME $VMID $DST_FOLDER
fi
#-------------------------------------------------------------------------------

View File

@ -48,18 +48,13 @@ DST_PATH=`arg_path $DST`
DST_HOST=`arg_host $DST`
DST_DIR=`dirname $DST_PATH`
DST_FOLDER=`basename $DST_PATH`
USE_SSH=$(get_tm_use_ssh $DS_ID)
if [ "$USE_SSH" != "yes" ]; then
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
#-------------------------------------------------------------------------------
# Set up datastore
#-------------------------------------------------------------------------------
vmfs_set_up
#-------------------------------------------------------------------------------
# Create remote folder
@ -68,8 +63,7 @@ fi
if [ "$USE_SSH" == "yes" ]; then
ssh_make_path $DST_HOST $DST_DIR
else
vifs $VI_PARAMS --mkdir [$DS_ID]$VM_ID
vifs $VI_PARAMS --mkdir [$DS_ID]$VM_ID/$DST_FOLDER
vmfs_create_double_path $DS_ID $VM_ID $DST_FOLDER
fi
#-------------------------------------------------------------------------------

View File

@ -47,6 +47,12 @@ source $(dirname $0)/tm_vmfs.conf
USE_SSH=$(get_tm_use_ssh $DSID)
#-------------------------------------------------------------------------------
# Set up datastore
#-------------------------------------------------------------------------------
vmfs_set_up
#-------------------------------------------------------------------------------
# Return if deleting a disk, we will delete them when removing the
# remote_system_ds directory for the VM (remotely)
@ -63,14 +69,6 @@ log "Deleting $DST_PATH"
if [ "$USE_SSH" == "yes" ]; then
ssh_exec_and_log $DST_HOST "rm -rf $DST_PATH" "Error deleting $DST_PATH"
else
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
DIRS_TO_ERASE=`vifs $VI_PARAMS --dir [$DSID]$VMID|grep -v "Content Listing"|grep -v "\-\-\-\-\-\-\-\-"|egrep -v "^[[:space:]]*$"`
for dir in $DIRS_TO_ERASE; do
FILES_TO_ERASE=`vifs $VI_PARAMS --dir [$DSID]$VMID/$dir|grep -v "Content Listing"|grep -v "\-\-\-\-\-\-\-\-"|egrep -v "^[[:space:]]*$"`
@ -83,7 +81,6 @@ else
done
exec_and_log "vifs $VI_PARAMS --force --rm [$DSID]$VMID" \
"Cannot delete [$DSID]$VMID in $DST_HOST"
fi
exit 0

View File

@ -51,17 +51,13 @@ DST_DIR=`dirname $DST_PATH`
DST_FOLDER=`basename $DST_PATH`
USE_SSH=$(get_tm_use_ssh $DSID)
SYSTEM_DS_NAME=`basename $(dirname $(dirname $DST_PATH))`
if [ "$USE_SSH" != "yes" ]; then
SYSTEM_DS_NAME=`basename $(dirname $(dirname $DST_PATH))`
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
#-------------------------------------------------------------------------------
# Set up datastore
#-------------------------------------------------------------------------------
vmfs_set_up
#-------------------------------------------------------------------------------
# Make the new image (file-based)
@ -82,9 +78,7 @@ EOF
ssh_exec_and_log $DST_HOST "$MKSCRIPT" "Could not create image $DST_PATH"
else
# Two calls needed since vifs cannot do a mkdir -p
vifs $VI_PARAMS --mkdir [$SYSTEM_DS_NAME]$VMID
vifs $VI_PARAMS --mkdir [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER
vmfs_create_double_path $SYSTEM_DS_NAME $VMID $DST_FOLDER
VMWARE_DISK_TYPE=`echo $FSTYPE|cut -d'_' -f 2`
$VMKFSTOOLS $VI_PARAMS -U [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER/disk.vmdk &> /dev/null

View File

@ -55,17 +55,14 @@ DST_FOLDER=`basename $DST_PATH`
USE_SSH=$(get_tm_use_ssh $DSID)
if [ "$USE_SSH" != "yes" ]; then
IMAGE_DS_NAME=`basename $(dirname $DST_PATH)`
SYSTEM_DS_NAME=`basename $(dirname $(dirname $SRC_PATH))`
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3|tr -d '"')`
if [ -z $PASSWORD ]; then
VI_PARAMS="--server $DST_HOST --username $USERNAME --password \"\""
else
VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD"
fi
fi
IMAGE_DS_NAME=`basename $(dirname $DST_PATH)`
SYSTEM_DS_NAME=`basename $(dirname $(dirname $SRC_PATH))`
#-------------------------------------------------------------------------------
# Set up datastore
#-------------------------------------------------------------------------------
vmfs_set_up
#-------------------------------------------------------------------------------
# Move the image back to the datastore