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:
parent
7e7e30cbc8
commit
5fc420b5f3
@ -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}
|
||||
|
||||
|
@ -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}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user