From a747d2761c97a3eb7de14e241eaab30697112eed Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Thu, 13 Sep 2012 16:01:24 +0200 Subject: [PATCH] feature #1437: Fix badTM actions --- src/datastore_mad/remotes/vmfs/mkfs | 2 +- src/tm_mad/vmware/clone | 3 ++- src/tm_mad/vmware/delete | 17 +++++++++++++++-- src/tm_mad/vmware/mkimage | 6 +++--- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/datastore_mad/remotes/vmfs/mkfs b/src/datastore_mad/remotes/vmfs/mkfs index 17062f6323..b21b925a42 100755 --- a/src/datastore_mad/remotes/vmfs/mkfs +++ b/src/datastore_mad/remotes/vmfs/mkfs @@ -105,4 +105,4 @@ else "Cannot create $IMAGE_DS_ID]$DST_FOLDER/disk.vmdk on $DST_HOST" fi -echo "/vmfs/volumes/$IMAGE_DS_ID/$DST_FOLDER/disk.vmdk" +echo "/vmfs/volumes/$IMAGE_DS_ID/$DST_FOLDER" diff --git a/src/tm_mad/vmware/clone b/src/tm_mad/vmware/clone index d8a458d9af..6612b61e54 100755 --- a/src/tm_mad/vmware/clone +++ b/src/tm_mad/vmware/clone @@ -47,7 +47,7 @@ source $(dirname $0)/tm_vmwarerc #------------------------------------------------------------------------------- SRC_PATH=`arg_path $SRC` SRC_PATH="../../${SRC_PATH##"$DS_DIR/"}" -SRC_FOLDER=`basename $SRC_PATH` +SRC_FOLDER=`basename $(dirname $SRC_PATH)` DST_PATH=`arg_path $DST` DST_HOST=`arg_host $DST` @@ -93,6 +93,7 @@ EOF ) ssh_exec_and_log $DST_HOST "$CLONESCRIPT" "Error cloning $SRC to $DST" else + $VMKFSTOOLS $VI_PARAMS -U [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER/disk.vmdk &> /dev/null exec_and_log "$VMKFSTOOLS $VI_PARAMS -i [$IMAGE_DS_NAME]$SRC_FOLDER/disk.vmdk -d thin [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER/disk.vmdk" \ "Error cloning $SRC to $DST" fi diff --git a/src/tm_mad/vmware/delete b/src/tm_mad/vmware/delete index 4ab03ced7f..78ec0bd785 100755 --- a/src/tm_mad/vmware/delete +++ b/src/tm_mad/vmware/delete @@ -57,8 +57,21 @@ if [ "$SSH" == "yes" ]; then 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 '"')` - exec_and_log "$VMKFSTOOLS --server $DST_HOST --username $USERNAME --password $PASSWORD -U $DST_PATH" \ - "Cannot delelete $DST" + VI_PARAMS="--server $DST_HOST --username $USERNAME --password $PASSWORD" + + 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:]]*$"` + for file in $FILES_TO_ERASE; do + exec_and_log "vifs $VI_PARAMS --force --rm [$DSID]$VMID/$dir/$file" \ + "Cannot delete [$DSID]$VMID/$dir/$file in $DST_HOST" + done + exec_and_log "vifs $VI_PARAMS --force --rm [$DSID]$VMID/$dir" \ + "Cannot delete [$DSID]$VMID in $DST_HOST" + 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/vmware/mkimage b/src/tm_mad/vmware/mkimage index a91cf68bb6..d824b8660f 100755 --- a/src/tm_mad/vmware/mkimage +++ b/src/tm_mad/vmware/mkimage @@ -78,12 +78,12 @@ EOF else # Two calls needed since vifs cannot do a mkdir -p vifs $VI_PARAMS --mkdir [$SYSTEM_DS_NAME]$VMID - exec_and_log "vifs $VI_PARAMS --mkdir [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER" + vifs $VI_PARAMS --mkdir [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER VMWARE_DISK_TYPE=`echo $FSTYPE|cut -d'_' -f 2` exec_and_log "$VMKFSTOOLS $VI_PARAMS -U $DST_PATH/disk.vmdk" - exec_and_log "$VMKFSTOOLS $VI_PARAMS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} $DST/disk.vmdk" \ - "Cannot create $DST/disk.vmdk on $DST_HOST" + exec_and_log "$VMKFSTOOLS $VI_PARAMS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER/disk.vmdk" \ + "Cannot create [$SYSTEM_DS_NAME]$VMID/$DST_FOLDER/disk.vmdk on $DST_HOST" fi exit 0