mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
And also redefine snapshot metadata also after the suspend/resume - not only stop/start. (cherry picked from commit 2af130c00a5d7cf0b51ab677c1cb755324accf12)
This commit is contained in:
parent
5d118e4c2d
commit
eaf878531c
@ -55,6 +55,7 @@ fi
|
||||
DS_ID=$(basename $(dirname $(dirname $FILE)))
|
||||
DS_LOCATION=$(dirname $(dirname $(dirname $FILE)))
|
||||
DS_LOCATION_NON_DOUBLE_SLASH=$(echo "$DS_LOCATION" | sed 's|//|/|g')
|
||||
VM_DIR=$(dirname $FILE)
|
||||
|
||||
RECALCULATE_CMD=$(cat <<EOF
|
||||
set -e -o pipefail
|
||||
@ -99,4 +100,17 @@ fi
|
||||
rm "$FILE"
|
||||
rm "$FILE_XML"
|
||||
|
||||
# redefine potential snapshots
|
||||
for SNAPSHOT_MD_XML in $(ls ${VM_DIR}/snap-*.xml 2>/dev/null); do
|
||||
|
||||
# query UUID, but only once
|
||||
UUID=${UUID:-$(virsh --connect $LIBVIRT_URI dominfo $DEPLOY_ID | grep UUID: | awk '{print $2}')}
|
||||
|
||||
# replace uuid in the snapshot metadata xml
|
||||
sed -i "s%<uuid>[[:alnum:]-]*</uuid>%<uuid>$UUID</uuid>%" $SNAPSHOT_MD_XML
|
||||
|
||||
# redefine the snapshot using the xml metadata file
|
||||
virsh --connect $LIBVIRT_URI snapshot-create $DEPLOY_ID $SNAPSHOT_MD_XML --redefine > /dev/null || true
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
@ -38,14 +38,32 @@ done < <(echo "$METADATA_XML" | $XPATH /vm/system_datastore/)
|
||||
unset i
|
||||
|
||||
DATASTORE_PATH="${XPATH_ELEMENTS[i++]}"
|
||||
|
||||
if [ -z "$DATASTORE_PATH" ]; then
|
||||
error_message "Cannot read 'system_datastore' from domain $DOMAIN"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ------ Delete snapshot metadata and the snapshot itself ----------
|
||||
|
||||
[ -n "$DATASTORE_PATH" ] && rm ${DATASTORE_PATH}/${NAME}.xml 2>/dev/null || true
|
||||
rm ${DATASTORE_PATH}/${NAME}.xml 2>/dev/null || true
|
||||
|
||||
exec_and_log \
|
||||
"virsh --connect $LIBVIRT_URI snapshot-delete $DOMAIN $NAME" \
|
||||
"Could not delete snapshot $NAME for domain $DOMAIN."
|
||||
|
||||
exit 0
|
||||
|
||||
# ------ Re-write the remaining snapshots metadata ----------
|
||||
SNAPSHOTS=$(virsh --connect $LIBVIRT_URI snapshot-list $DOMAIN \
|
||||
| grep snap- | awk '{print $1}')
|
||||
|
||||
for SNAP_NAME in $SNAPSHOTS; do
|
||||
SNAP_XML_PATH="${DATASTORE_PATH}/${SNAP_NAME}.xml"
|
||||
|
||||
virsh --connect $LIBVIRT_URI snapshot-dumpxml $DOMAIN $SNAP_NAME \
|
||||
> $SNAP_XML_PATH
|
||||
|
||||
if [ $? != 0 ]; then
|
||||
error_message "Could not dump $NAME snapshot metadata for $DOMAIN"
|
||||
fi
|
||||
|
||||
done
|
||||
|
Loading…
x
Reference in New Issue
Block a user