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:
parent
7bdc2ab16c
commit
432ad0ab7f
@ -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
|
||||
)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
Loading…
x
Reference in New Issue
Block a user