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

Add a pure VMFS TM VMware, with ssh or remote API mode

This commit is contained in:
Tino Vazquez 2012-09-04 19:15:50 +02:00
parent a76982070a
commit 82eb4db593
3 changed files with 48 additions and 4 deletions

View File

@ -876,7 +876,8 @@ TM_VMWARE_FILES="src/tm_mad/vmware/clone \
src/tm_mad/vmware/mkimage \
src/tm_mad/vmware/mv \
src/tm_mad/vmware/context \
src/tm_mad/vmware/mvds"
src/tm_mad/vmware/mvds \
src/tm_mad/vmware/tm_vmwarerc"
TM_ISCSI_FILES="src/tm_mad/iscsi/clone \
src/tm_mad/iscsi/ln \

View File

@ -32,12 +32,16 @@ DSID=$4
if [ -z "${ONE_LOCATION}" ]; then
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
VMWARERC=/etc/one/vmwarerc
else
TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $TMCOMMON
source $(dirname $0)/tm_vmwarerc
#-------------------------------------------------------------------------------
# Set dst path and dir
#-------------------------------------------------------------------------------
@ -49,13 +53,30 @@ DST_HOST=`arg_host $DST`
DST_DIR=`dirname $DST_PATH`
ssh_make_path $DST_HOST $DST_PATH
IMAGE_DS_NAME=`basename $(dirname $SRC_PATH)`
SYSTEM_DS_NAME=`basename $(dirname $(dirname $DST_PATH))`
USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3)`
PASSWORD=`echo $(cat $VMWARERC |grep ":password:"|cut -d":" -f 3)`
DST_DIR_WITHOUT_DS_PATH="[$SYSTEM_DS_NAME] ${DST_PATH##"$DS_DIR/$SYSTEM_DS_NAME/"}"
if [ "$SSH" == "yes" ]; then
ssh_make_path $DST_HOST $DST_PATH
else
# Two calls needed since vifs cannot do a mkdir -p
vifs --server $DST_HOST --username $USERNAME --password $PASSWORD --mkdir "[$SYSTEM_DS_NAME] $VMID"
vifs --server $DST_HOST --username $USERNAME --password $PASSWORD --mkdir "$DST_DIR_WITHOUT_DS_PATH"
fi
#-------------------------------------------------------------------------------
# Clone (cp) SRC into DST
#-------------------------------------------------------------------------------
log "Cloning $SRC_PATH in $DST"
if [ "$SSH" == "yes" ]; then
CLONESCRIPT=$(cat <<EOF
cd $DST_DIR
@ -69,7 +90,9 @@ fi
\$SUDO_CMD $VMKFSTOOLS -i $SRC_PATH/disk.vmdk -d thin $DST_PATH/disk.vmdk
EOF
)
ssh_exec_and_log $DST_HOST "$CLONESCRIPT" "Error cloning $SRC to $DST"
ssh_exec_and_log $DST_HOST "$CLONESCRIPT" "Error cloning $SRC to $DST"
else
$VMKFSTOOLS --server $DST_HOST --username $USERNAME --password $PASSWORD -i "$SRC_DIR_WITHOUT_DS_PATH/disk.vmdk" -d thin "$DST_DIR_WITHOUT_DS_PATH/disk.vmdk"
fi
exit 0

View File

@ -0,0 +1,20 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# Whether the TM VMware driver should use to invoke the VMFS native commands
# * remote API calls (value set to "no")
# * ssh connection (value set to "yes")
SSH=no