From 41f4891dce5dc0599d6ec8bc574136f2c718ea8f Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Fri, 28 Sep 2012 15:38:52 +0200 Subject: [PATCH] =?UTF-8?q?feature=20=C2#1437:=20Lightrefactor=20TM=20VMFS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/datastore_mad/remotes/vmfs/mkfs | 2 +- src/mad/sh/scripts_common.sh | 12 +++++++++++- src/tm_mad/vmfs/clone | 18 +++++------------- src/tm_mad/vmfs/context | 18 ++++++------------ src/tm_mad/vmfs/delete | 15 ++++++--------- src/tm_mad/vmfs/mkimage | 20 +++++++------------- src/tm_mad/vmfs/mvds | 19 ++++++++----------- 7 files changed, 44 insertions(+), 60 deletions(-) diff --git a/src/datastore_mad/remotes/vmfs/mkfs b/src/datastore_mad/remotes/vmfs/mkfs index 2afba4dd8b..63a6784738 100755 --- a/src/datastore_mad/remotes/vmfs/mkfs +++ b/src/datastore_mad/remotes/vmfs/mkfs @@ -95,7 +95,7 @@ IMAGE_FORMAT=vmdk VMWARE_DISK_TYPE=`echo $FSTYPE|cut -d'_' -f 2` if [ "$USE_SSH" == "yes" ]; then - $SSH $DST_HOST $VMKFSTOOLS -U [$DS_ID]$DST_FOLDER/disk.vmdk + $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 diff --git a/src/mad/sh/scripts_common.sh b/src/mad/sh/scripts_common.sh index 28cbca0d4e..74ae5eb7e9 100644 --- a/src/mad/sh/scripts_common.sh +++ b/src/mad/sh/scripts_common.sh @@ -410,7 +410,7 @@ function iqn_get_host { echo ${TARGET%%.$VG_NAME.$LV_NAME} } -function vmfs_crate_remote_path { +function vmfs_create_remote_path { DS_ID=$1 # Create DST in DST_HOST if [ "$USE_SSH" == "yes" ]; then @@ -433,3 +433,13 @@ function vmfs_set_up { 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 + +} diff --git a/src/tm_mad/vmfs/clone b/src/tm_mad/vmfs/clone index e24000425e..c5ec706223 100755 --- a/src/tm_mad/vmfs/clone +++ b/src/tm_mad/vmfs/clone @@ -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 #------------------------------------------------------------------------------- diff --git a/src/tm_mad/vmfs/context b/src/tm_mad/vmfs/context index 7312189db6..48b8500218 100755 --- a/src/tm_mad/vmfs/context +++ b/src/tm_mad/vmfs/context @@ -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 #------------------------------------------------------------------------------- diff --git a/src/tm_mad/vmfs/delete b/src/tm_mad/vmfs/delete index b7565993ea..0a7293f27c 100755 --- a/src/tm_mad/vmfs/delete +++ b/src/tm_mad/vmfs/delete @@ -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 diff --git a/src/tm_mad/vmfs/mkimage b/src/tm_mad/vmfs/mkimage index 711f6b1fd2..339eec878e 100755 --- a/src/tm_mad/vmfs/mkimage +++ b/src/tm_mad/vmfs/mkimage @@ -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 diff --git a/src/tm_mad/vmfs/mvds b/src/tm_mad/vmfs/mvds index dc96f61c23..a89f8d606a 100755 --- a/src/tm_mad/vmfs/mvds +++ b/src/tm_mad/vmfs/mvds @@ -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