diff --git a/src/tm_mad/fs_lvm/mkimage b/src/tm_mad/fs_lvm/mkimage deleted file mode 120000 index abfcd36c18..0000000000 --- a/src/tm_mad/fs_lvm/mkimage +++ /dev/null @@ -1 +0,0 @@ -../shared/mkimage \ No newline at end of file diff --git a/src/tm_mad/fs_lvm/mkimage b/src/tm_mad/fs_lvm/mkimage new file mode 100755 index 0000000000..5061d1f044 --- /dev/null +++ b/src/tm_mad/fs_lvm/mkimage @@ -0,0 +1,97 @@ +#!/bin/bash + +# -------------------------------------------------------------------------- # +# Copyright 2002-2019, OpenNebula Project, OpenNebula Systems # +# # +# 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. # +#--------------------------------------------------------------------------- # + +# mkimage size format host:remote_system_ds/disk.i vmid dsid +# - size in MB of the image +# - format for the image +# - remote_system_ds is the path for the system datastore in the host +# - vmid is the id of the VM +# - dsid is the target datastore (0 is the system datastore) + +SIZE=$1 +FSTYPE=$2 +DST=$3 +VM_ID=$4 + +if [ -z "${ONE_LOCATION}" ]; then + TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh +else + TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh +fi + +DRIVER_PATH=$(dirname $0) + +source $TMCOMMON +source ${DRIVER_PATH}/../../datastore/libfs.sh +source ${DRIVER_PATH}/../../etc/tm/fs_lvm/fs_lvm.conf + +#------------------------------------------------------------------------------- +# Set dst path and dir +#------------------------------------------------------------------------------- + +DST_PATH=`arg_path $DST` +DST_HOST=`arg_host $DST` +DST_DIR=`dirname $DST_PATH` + +DS_SYS_ID=$(basename $(dirname $DST_DIR)) +DST_DS_PATH="$(dirname $(dirname $(dirname $DST_PATH)))" +DISK_ID=$(basename ${DST_PATH} | cut -d. -f2) + + +#------------------------------------------------------------------------------- +# Create the logical volume and link it +#------------------------------------------------------------------------------- + +LV_NAME="lv-one-$VM_ID-$DISK_ID" +VG_NAME="vg-one-$DS_SYS_ID" +DEV="/dev/${VG_NAME}/${LV_NAME}" + +# Execute lvcreate with a lock in the frontend +CREATE_CMD=$(cat <"${DST_DIR}/.host" || : + + # zero the volume + if [ "${ZERO_LVM_ON_CREATE}" = "yes" ]; then + ${DD} if=/dev/zero of="${DEV}" bs=64k || : + fi + + [ "$FSTYPE" = "swap" ] && mkswap ${DEV} + + rm -f "$DST_PATH" + ln -s "$DEV" "$DST_PATH" +EOF +) + +ssh_exec_and_log "$DST_HOST" "$MKIMAGE_CMD" \ + "Could not create image $DST_PATH" +exit 0