1
0
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:
Javi Fontan 2016-09-12 19:16:05 +02:00
commit aff67c2623
12 changed files with 114 additions and 6 deletions

@ -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

@ -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
}