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

Feature #3782: fs ds drivers now handle qcow2 and

raw in the snap_* actions
This commit is contained in:
Jaime Melis 2015-08-11 16:48:25 +02:00
parent 7e7e30cbc8
commit 5fc420b5f3
3 changed files with 38 additions and 42 deletions

View File

@ -1,4 +1,4 @@
#!/bin/bash -x
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project (OpenNebula.org), C12G Labs #
@ -38,29 +38,22 @@ ID=$2
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
unset i XPATH_ELEMENTS
unset i j XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \
/DS_DRIVER_ACTION_DATA/IMAGE/TARGET_SNAPSHOT )
unset i
DISK_SRC="${XPATH_ELEMENTS[i++]}"
SNAP_ID="${XPATH_ELEMENTS[i++]}"
/DS_DRIVER_ACTION_DATA/IMAGE/TARGET_SNAPSHOT)
DISK_SRC="${XPATH_ELEMENTS[j++]}"
SNAP_ID="${XPATH_ELEMENTS[j++]}"
SRC_PATH=`arg_path $SRC`
SYSTEM_DS_PATH=$(dirname ${SRC_PATH})
DISK_ID=$(basename ${SRC} | cut -d. -f2)
DISK_PATH="${DISK_SRC}"
SNAP_DIR="${DISK_PATH}.snap"
SNAP_DIR="${DISK_SRC}.snap"
SNAP_PATH="${SNAP_DIR}/${SNAP_ID}"
SNAP_PATH_RELATIVE=$(basename ${SNAP_PATH})
CURRENT_PATH=${DISK_PATH}
rm ${SNAP_PATH}

View File

@ -1,4 +1,4 @@
#!/bin/bash -ex
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project (OpenNebula.org), C12G Labs #
@ -38,18 +38,17 @@ ID=$2
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
unset i XPATH_ELEMENTS
unset i j XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \
/DS_DRIVER_ACTION_DATA/IMAGE/TARGET_SNAPSHOT )
unset i
DISK_SRC="${XPATH_ELEMENTS[i++]}"
SNAP_ID="${XPATH_ELEMENTS[i++]}"
/DS_DRIVER_ACTION_DATA/IMAGE/TARGET_SNAPSHOT \
/DS_DRIVER_ACTION_DATA/DATASTORE/TM_MAD )
DISK_SRC="${XPATH_ELEMENTS[j++]}"
SNAP_ID="${XPATH_ELEMENTS[j++]}"
TM_MAD="${XPATH_ELEMENTS[j++]}"
SRC_PATH=`arg_path $SRC`
@ -57,12 +56,15 @@ SYSTEM_DS_PATH=$(dirname ${SRC_PATH})
DISK_ID=$(basename ${SRC} | cut -d. -f2)
DISK_PATH="${DISK_SRC}"
SNAP_DIR="${DISK_PATH}.snap"
SNAP_PATH="${SNAP_DIR}/${SNAP_ID}"
SNAP_PATH_RELATIVE=$(basename ${SNAP_PATH})
CURRENT_PATH=${DISK_PATH}
qemu-img convert -O qcow2 ${SNAP_PATH} ${CURRENT_PATH}.tmp
mv "${CURRENT_PATH}.tmp" "${CURRENT_PATH}"
if [ "$TM_MAD" = "qcow2" ]; then
qemu-img convert -O qcow2 ${SNAP_PATH} ${DISK_PATH}.tmp
mv "${DISK_PATH}.tmp" "${DISK_PATH}"
else
mv ${SNAP_PATH} ${DISK_PATH}
fi
rm -rf ${SNAP_DIR}

View File

@ -1,4 +1,4 @@
#!/bin/bash -x
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project (OpenNebula.org), C12G Labs #
@ -38,31 +38,32 @@ ID=$2
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
unset i XPATH_ELEMENTS
unset i j XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \
/DS_DRIVER_ACTION_DATA/IMAGE/TARGET_SNAPSHOT )
unset i
DISK_SRC="${XPATH_ELEMENTS[i++]}"
SNAP_ID="${XPATH_ELEMENTS[i++]}"
/DS_DRIVER_ACTION_DATA/IMAGE/TARGET_SNAPSHOT \
/DS_DRIVER_ACTION_DATA/DATASTORE/TM_MAD )
DISK_SRC="${XPATH_ELEMENTS[j++]}"
SNAP_ID="${XPATH_ELEMENTS[j++]}"
TM_MAD="${XPATH_ELEMENTS[j++]}"
SRC_PATH=`arg_path $SRC`
SYSTEM_DS_PATH=$(dirname ${SRC_PATH})
DISK_ID=$(basename ${SRC} | cut -d. -f2)
#DISK_PATH="${SYSTEM_DS_PATH}/disk.${DISK_ID}"
DISK_PATH="${DISK_SRC}"
SNAP_DIR="${DISK_PATH}.snap"
SNAP_DIR="${DISK_SRC}.snap"
SNAP_PATH="${SNAP_DIR}/${SNAP_ID}"
SNAP_PATH_RELATIVE=$(basename ${SNAP_PATH})
CURRENT_PATH=${DISK_PATH}
rm ${CURRENT_PATH}
qemu-img create -f qcow2 -b ${SNAP_PATH} ${CURRENT_PATH}
if [ "$TM_MAD" = "qcow2" ]; then
ACTIVE_SNAP_ID=$(ls ${SNAP_DIR} | sort -n | tail -n 1)
ACTIVE_SNAP_PATH="${SNAP_DIR}/${ACTIVE_SNAP_ID}"
rm ${ACTIVE_SNAP_PATH}
qemu-img create -f qcow2 -b ${SNAP_PATH} ${ACTIVE_SNAP_PATH}
else
mv ${SNAP_PATH} ${DISK_SRC}
fi