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

Feature #1254: Fix bugs in full iSCSI support

This commit is contained in:
Jaime Melis 2012-06-29 09:36:09 +02:00
parent 7bdc2ab16c
commit 432ad0ab7f
4 changed files with 30 additions and 11 deletions

View File

@ -84,7 +84,9 @@ REGISTER_CMD=$(cat <<EOF
$SUDO $(tgtadm_logicalunit_new "\$TID" "$DEV")
$SUDO $(tgt_admin_dump_config "$TARGET_CONF")
[ "$FSTYPE" != "save_as" ] && $SUDO $(mkfs_command "$DEV" "$FSTYPE")
if [ "$FSTYPE" != "save_as" ]; then
$SUDO $(mkfs_command "$DEV" "$FSTYPE")
fi
EOF
)

View File

@ -65,12 +65,20 @@ done < <(onevm show -x $VMID| $XPATH \
IQN="${XPATH_ELEMENTS[0]}"
PERSISTENT="${XPATH_ELEMENTS[1]}"
if [ -z "$PERSISTENT" ]; then
NEW_IQN=$IQN-$VMID
else
NEW_IQN=$IQN
fi
TARGET=`arg_path $IQN`
VG_NAME=`echo $TARGET|$AWK -F. '{print $(NF-1)}'`
LV_NAME=`echo $TARGET|$AWK -F. '{print $(NF)}'`
DEV="/dev/$VG_NAME/$LV_NAME"
TARGET_HOST="${TARGET%.$VG_NAME.$LV_NAME}"
TARGET_LV_NAME=`echo $NEW_IQN|$AWK -F. '{print $(NF)}'`
#-------------------------------------------------------------------------------
# Remove directory if dst_path is a directory
#-------------------------------------------------------------------------------
@ -88,12 +96,12 @@ fi
LOGOUT_CMD=$(cat <<EOF
set -e
$SUDO $(iscsiadm_logout "$IQN")
$SUDO $(iscsiadm_logout $NEW_IQN)
EOF
)
ssh_exec_and_log "$DST_HOST" "$LOGOUT_CMD" \
"Error logging out $IQN"
"Error logging out $NEW_IQN"
if [ "$PERSISTENT" = "YES" ]; then
exit 0
@ -106,7 +114,7 @@ fi
DELETE_CMD=$(cat <<EOF
set -e
# get tid for IQN
TID=\$($SUDO $(tgtadm_get_tid_for_iqn "$IQN"))
TID=\$($SUDO $(tgtadm_get_tid_for_iqn "$NEW_IQN"))
# remove iscsi target
$SUDO $(tgtadm_target_delete "\$TID")
@ -115,11 +123,11 @@ DELETE_CMD=$(cat <<EOF
$SUDO $(tgt_admin_dump_config "$TARGET_CONF")
# remove lv
$SUDO $LVREMOVE -f $VG_NAME/$LV_NAME
$SUDO $LVREMOVE -f $VG_NAME/$TARGET_LV_NAME
EOF
)
ssh_exec_and_log "$DST_HOST" "$LOGOUT_CMD" \
ssh_exec_and_log "$TARGET_HOST" "$DELETE_CMD" \
"Error logging out $IQN"
exit 0

View File

@ -70,7 +70,6 @@ if [ "$SRC" == "$DST" ]; then
log "Not moving $SRC to $DST, they are the same path"
exit 0
fi
#-------------------------------------------------------------------------------
# Get image information
#-------------------------------------------------------------------------------
@ -79,12 +78,16 @@ XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin"
unset i XPATH_ELEMENTS
DISK_ID=$(echo "$SRC_PATH" | $AWK -F. '{print $NF}')
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <(onevm show -x $VMID| $XPATH \
/VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/SOURCE \
/VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/PERSISTENT)
PERSISTENT="${XPATH_ELEMENTS[0]}"
IQN="${XPATH_ELEMENTS[0]}"
PERSISTENT="${XPATH_ELEMENTS[1]}"
if [ -z "$PERSISTENT" ]; then
IQN=$IQN-$VMID
@ -122,8 +125,8 @@ if is_iscsi "$DST_HOST"; then
EOF
)
ssh_exec_and_log "$DST_HOST" "$LOGIN_CMD" \
"Error logging in $IQN"
ssh_exec_and_log "$DST_HOST" "$LOGIN_CMD" \
"Error logging in $IQN"
fi
exit 0

View File

@ -66,6 +66,10 @@ IQN="${XPATH_ELEMENTS[0]}"
SAVE_AS="${XPATH_ELEMENTS[1]}"
PERSISTENT="${XPATH_ELEMENTS[2]}"
if [ -z "$PERSISTENT" ]; then
IQN=$IQN-$VMID
fi
log "Logging out $IQN"
LOGOUT_CMD=$(cat <<EOF
@ -88,8 +92,10 @@ LV_NAME=`echo $IQN|$AWK -F. '{print $(NF)}'`
VG_NAME=`echo $IQN|$AWK -F. '{print $(NF-1)}'`
SOURCE_DEV="/dev/$VG_NAME/$LV_NAME"
TARGET=`arg_path $IQN`
TARGET_LV_NAME=`echo $NEW_IQN|$AWK -F. '{print $(NF)}'`
TARGET_DEV="/dev/$VG_NAME/$TARGET_LV_NAME"
TARGET_HOST="${TARGET%.$VG_NAME.$LV_NAME}"
CLONE_CMD=$(cat <<EOF
set -e
@ -98,7 +104,7 @@ CLONE_CMD=$(cat <<EOF
$SUDO $DD if=$SOURCE_DEV of=$TARGET_DEV bs=64k
# remove if source_dev is not persistent
if [ "$PERSISTENT" != "YES" ]; then
if [ -z "$PERSISTENT" ]; then
TID=\$($SUDO $(tgtadm_get_tid_for_iqn "$IQN"))
$SUDO $(tgtadm_target_delete "\$TID")