diff --git a/src/mad/sh/scripts_common.sh b/src/mad/sh/scripts_common.sh index 1296f3c65a..7e6bb04ce8 100755 --- a/src/mad/sh/scripts_common.sh +++ b/src/mad/sh/scripts_common.sh @@ -27,6 +27,7 @@ ISCSIADM=iscsiadm LVCREATE=lvcreate LVREMOVE=lvremove LVS=lvs +LN=ln MD5SUM=md5sum MKFS=mkfs MKISOFS=mkisofs diff --git a/src/tm_mad/common/context b/src/tm_mad/common/context index a36c2e5699..d519110140 100755 --- a/src/tm_mad/common/context +++ b/src/tm_mad/common/context @@ -73,6 +73,9 @@ exec_and_log "$MKISOFS -o $ISO_FILE -J -R $ISO_DIR" "Error creating iso fs" exec_and_log "$SCP $ISO_FILE $DST" "Error copying context ISO to $DST" +# Creates symbolic link to add a .iso suffix, needed for VMware CDROMs +ssh_exec_and_log $DST_HOST "$LN -s $DST_PATH $DST_PATH.iso" "Error creating ISO symbolic link" + rm -rf $ISO_DIR > /dev/null 2>&1 exit 0 diff --git a/src/tm_mad/shared/ln b/src/tm_mad/shared/ln index 4ecb76e42b..2a9395d484 100755 --- a/src/tm_mad/shared/ln +++ b/src/tm_mad/shared/ln @@ -16,7 +16,7 @@ # limitations under the License. # #--------------------------------------------------------------------------- # -# ln fe:SOURCE host:remote_system_ds/disk.i size +# ln fe:SOURCE host:remote_system_ds/disk.i # - fe is the front-end hostname # - SOURCE is the path of the disk image in the form DS_BASE_PATH/disk # - host is the target host to deploy the VM @@ -43,16 +43,41 @@ DST_PATH=`arg_path $DST` DST_HOST=`arg_host $DST` DST_DIR=`dirname $DST_PATH` -ssh_make_path $DST_HOST $DST_DIR - #------------------------------------------------------------------------------- # Link (ln) SRC into DST #------------------------------------------------------------------------------- -log "Linking $SRC_PATH in $DST" +# Is it a file or a folder (VMware)? +if [ -d `arg_path $SRC` ]; then + ssh_make_path $DST_HOST $DST_PATH + + # It's a folder, make links for all elements + SRC_FOLDER_NAME=`basename $SRC_PATH` + SRC_WITH_NO_FOLDER=`dirname $SRC_PATH` + SRC_DS_NAME=`basename $SRC_WITH_NO_FOLDER` + REL_SRC_PATH="../../../$SRC_DS_NAME/$SRC_FOLDER_NAME" + + log "Link all files in $SRC_PATH to $DST_PATH" + +LINK_SCRIPT=$(cat <" << endl; file << "\t\t\tget_oid() - << "/images/disk." << i << "'/>" << endl; + << "/disk." << i << "'/>" << endl; } else if ( type == "CDROM" ) { file << "\t\t" << endl; file << "\t\t\tget_oid() - << "/images/disk." << i << ".iso'/>" << endl; + << "/disk." << i << ".iso'/>" << endl; } else { file << "\t\t" << endl << "\t\t\t" << endl; + << "/disk." << i << "/disk.vmdk'/>" << endl; } file << "\t\t\t e OpenNebula.log_error("Cannot open checkpoint #{e.message}") exit -1