mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
Merge branch 'bug-4640'
This commit is contained in:
commit
aff67c2623
src/tm_mad
@ -53,6 +53,8 @@ fi
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
migrate_other "$@"
|
||||
|
||||
exec_and_log "$SSH $SRC_HOST rm -rf $DST_PATH"
|
||||
|
||||
exit 0
|
||||
|
@ -68,4 +68,6 @@ TAR_COPY="$TAR_COPY | $SSH $DST_HOST '$TAR -C $DST_PATH_DIRNAME --sparse -xf -'"
|
||||
|
||||
exec_and_log "eval $TAR_COPY" "Error copying disk directory to target host"
|
||||
|
||||
migrate_other "$@"
|
||||
|
||||
exit 0
|
||||
|
55
src/tm_mad/common/prepostmigrate
Executable file
55
src/tm_mad/common/prepostmigrate
Executable file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2016, 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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
# PREMIGRATE SOURCE DST remote_system_dir vmid dsid template system_ds_mad
|
||||
# POSTMIGRATE SOURCE DST remote_system_dir vmid dsid template system_ds_mad
|
||||
# - SOURCE is the host where the VM is running
|
||||
# - DST is the host where the VM is to be migrated
|
||||
# - remote_system_dir is the path for the VM home in the system datastore
|
||||
# - vmid is the id of the VM
|
||||
# - dsid is the target datastore
|
||||
# - template is the template of the VM in XML and base64 encoded
|
||||
# - system_ds_mad flag if called by other SYSTEM_DS TM_MAD
|
||||
|
||||
SRC="$1"
|
||||
DST="$2"
|
||||
DST_PATH="$3"
|
||||
VM_ID="$4"
|
||||
DS_ID="$5"
|
||||
TEMPLATE_64="$6"
|
||||
SYSTEM_MAD="$7"
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
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
|
||||
|
||||
source $TMCOMMON
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
if [ "$SRC_HOST" == "$DST_HOST" ]; then
|
||||
log "Not moving $SRC_HOST to $DST_HOST, they are the same host"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
migrate_other "$@"
|
@ -59,3 +59,5 @@ EOF
|
||||
|
||||
ssh_exec_and_log $SRC_HOST "$CMD" \
|
||||
"Error running fs_lvm postmigrate"
|
||||
|
||||
migrate_other "$@"
|
||||
|
@ -59,3 +59,5 @@ EOF
|
||||
|
||||
ssh_exec_and_log $DST_HOST "$CMD" \
|
||||
"Error running fs_lvm premigrate"
|
||||
|
||||
migrate_other "$@"
|
||||
|
@ -1 +1 @@
|
||||
../common/postmigrate
|
||||
../common/prepostmigrate
|
@ -1 +1 @@
|
||||
../common/premigrate
|
||||
../common/prepostmigrate
|
@ -1 +1 @@
|
||||
../common/postmigrate
|
||||
../common/prepostmigrate
|
@ -1 +1 @@
|
||||
../common/premigrate
|
||||
../common/prepostmigrate
|
@ -1 +1 @@
|
||||
../common/postmigrate
|
||||
../common/prepostmigrate
|
@ -1 +1 @@
|
||||
../common/premigrate
|
||||
../common/prepostmigrate
|
@ -112,3 +112,48 @@ function lcm_state
|
||||
|
||||
echo $LCM_STATE
|
||||
}
|
||||
|
||||
function migrate_other
|
||||
{
|
||||
DRIVER_PATH=$(dirname $0)
|
||||
MAD=${DRIVER_PATH##*/}
|
||||
|
||||
XPATH="$DRIVER_PATH/../../datastore/xpath.rb"
|
||||
|
||||
unset i
|
||||
while IFS= read -r -d '' element; do
|
||||
XPATH_ELEMENTS[i++]="$element"
|
||||
done< <("$XPATH" -b "$6" \
|
||||
/VM/TEMPLATE/CONTEXT/DISK_ID \
|
||||
%m%/VM/TEMPLATE/DISK/DISK_ID \
|
||||
%m%/VM/TEMPLATE/DISK/CLONE \
|
||||
%m%/VM/TEMPLATE/DISK/TM_MAD)
|
||||
|
||||
unset i
|
||||
CONTEXT_DISK_ID="${XPATH_ELEMENTS[i++]}"
|
||||
DISK_IDS="${XPATH_ELEMENTS[i++]}"
|
||||
CLONES="${XPATH_ELEMENTS[i++]}"
|
||||
TM_MADS="${XPATH_ELEMENTS[i++]}"
|
||||
DISK_ID_ARRAY=($DISK_IDS)
|
||||
CLONE_ARRAY=($CLONES)
|
||||
TM_MAD_ARRAY=($TM_MADS)
|
||||
|
||||
if [ -n "$7" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
for i in ${!TM_MAD_ARRAY[@]}; do
|
||||
TM="${TM_MAD_ARRAY[i]}"
|
||||
|
||||
if [ "$TM" = "$MAD" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ "${PROCESSED/ $TM /}" = "$PROCESSED" ]; then
|
||||
# call the other TM_MADs with same arguments
|
||||
# but mark that it is not SYSTEM_DS
|
||||
log "Call $TM/${0##*/}"
|
||||
"${DRIVER_PATH}/../$TM/${0##*/}" "$@" "$MAD"
|
||||
PROCESSED+=" $TM "
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user