mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-23 22:50:09 +03:00
Feature #1254: datastore_mad part of the full iscsi support.
This commit has adapted from the contribution provided by SZTAKI LPDS.
This commit is contained in:
parent
a708ffb5f5
commit
b91bb29284
@ -56,6 +56,7 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BASE_IQN \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BASE_TID \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/TARGET_CONF \
|
||||
/DS_DRIVER_ACTION_DATA/IMAGE/PATH \
|
||||
/DS_DRIVER_ACTION_DATA/IMAGE/SIZE \
|
||||
/DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/MD5 \
|
||||
@ -69,10 +70,11 @@ DST_HOST="${XPATH_ELEMENTS[4]:-$HOST}"
|
||||
VG_NAME="${XPATH_ELEMENTS[5]:-$VG_NAME}"
|
||||
BASE_IQN="${XPATH_ELEMENTS[6]:-$BASE_IQN}"
|
||||
BASE_TID="${XPATH_ELEMENTS[7]:-$BASE_TID}"
|
||||
SRC="${XPATH_ELEMENTS[8]}"
|
||||
SIZE="${XPATH_ELEMENTS[9]}"
|
||||
MD5="${XPATH_ELEMENTS[10]}"
|
||||
SHA1="${XPATH_ELEMENTS[11]}"
|
||||
TARGET_CONF="${XPATH_ELEMENTS[8]:-$TARGET_CONF}"
|
||||
SRC="${XPATH_ELEMENTS[9]}"
|
||||
SIZE="${XPATH_ELEMENTS[10]}"
|
||||
MD5="${XPATH_ELEMENTS[11]}"
|
||||
SHA1="${XPATH_ELEMENTS[12]}"
|
||||
|
||||
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
|
||||
|
||||
@ -80,14 +82,18 @@ LV_NAME="lv-one-${ID}"
|
||||
IQN="$BASE_IQN:$DST_HOST.$VG_NAME.$LV_NAME"
|
||||
DEV="/dev/$VG_NAME/$LV_NAME"
|
||||
|
||||
let TID=ID+BASE_TID
|
||||
|
||||
REGISTER_CMD=$(cat <<EOF
|
||||
set -e
|
||||
$SUDO $LVCREATE -L${SIZE}M ${VG_NAME} -n ${LV_NAME}
|
||||
$SUDO $(tgtadm_target_new "$TID" "$IQN")
|
||||
$SUDO $(tgtadm_target_bind_all "$TID")
|
||||
$SUDO $(tgtadm_logicalunit_new "$TID" "$DEV")
|
||||
|
||||
TID=\$($SUDO $(tgtadm_next_tid))
|
||||
|
||||
[ -z "\$TID" ] && TID=$BASE_TID
|
||||
|
||||
$SUDO $(tgtadm_target_new "\$TID" "$IQN")
|
||||
$SUDO $(tgtadm_target_bind_all "\$TID")
|
||||
$SUDO $(tgtadm_logicalunit_new "\$TID" "$DEV")
|
||||
$SUDO $(tgt_admin_dump_config "$TARGET_CONF")
|
||||
EOF
|
||||
)
|
||||
|
||||
|
@ -29,3 +29,7 @@ BASE_TID=1
|
||||
# Lists of hosts (separated by spaces) for which no iscsiadm login or logout
|
||||
# is performed.
|
||||
NO_ISCSI="$HOSTNAME"
|
||||
|
||||
# File where the iSCSI configured is dumped to (tgt-admin --dump)
|
||||
# If it poings to /dev/null, iSCSI targets will not be persistent
|
||||
TARGET_CONF=/etc/tgt/targets.conf
|
||||
|
@ -54,10 +54,10 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BASE_IQN \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BASE_TID \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/TARGET_CONF \
|
||||
/DS_DRIVER_ACTION_DATA/IMAGE/FSTYPE \
|
||||
/DS_DRIVER_ACTION_DATA/IMAGE/SIZE)
|
||||
|
||||
|
||||
BASE_PATH="${XPATH_ELEMENTS[0]}"
|
||||
RESTRICTED_DIRS="${XPATH_ELEMENTS[1]}"
|
||||
SAFE_DIRS="${XPATH_ELEMENTS[2]}"
|
||||
@ -66,8 +66,9 @@ DST_HOST="${XPATH_ELEMENTS[4]:-$HOST}"
|
||||
VG_NAME="${XPATH_ELEMENTS[5]:-$VG_NAME}"
|
||||
BASE_IQN="${XPATH_ELEMENTS[6]:-$BASE_IQN}"
|
||||
BASE_TID="${XPATH_ELEMENTS[7]:-$BASE_TID}"
|
||||
FSTYPE="${XPATH_ELEMENTS[8]}"
|
||||
SIZE="${XPATH_ELEMENTS[9]:-0}"
|
||||
TARGET_CONF="${XPATH_ELEMENTS[8]:-$TARGET_CONF}"
|
||||
FSTYPE="${XPATH_ELEMENTS[9]}"
|
||||
SIZE="${XPATH_ELEMENTS[10]:-0}"
|
||||
|
||||
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
|
||||
|
||||
@ -75,28 +76,25 @@ LV_NAME="lv-one-${ID}"
|
||||
IQN="$BASE_IQN:$DST_HOST.$VG_NAME.$LV_NAME"
|
||||
DEV="/dev/$VG_NAME/$LV_NAME"
|
||||
|
||||
let TID=ID+BASE_TID
|
||||
# ------------ Image to save_as disk, no need to create a FS ------------
|
||||
|
||||
REGISTER_CMD=$(cat <<EOF
|
||||
set -e
|
||||
$SUDO $LVCREATE -L${SIZE}M ${VG_NAME} -n ${LV_NAME}
|
||||
$SUDO $(tgtadm_target_new "$TID" "$IQN")
|
||||
$SUDO $(tgtadm_target_bind_all "$TID")
|
||||
$SUDO $(tgtadm_logicalunit_new "$TID" "$DEV")
|
||||
$SUDO $(mkfs_command "$DEV" "$FSTYPE")
|
||||
|
||||
TID=\$($SUDO $(tgtadm_next_tid))
|
||||
[ -z "\$TID" ] && TID=$BASE_TID
|
||||
|
||||
$SUDO $(tgtadm_target_new "\$TID" "$IQN")
|
||||
$SUDO $(tgtadm_target_bind_all "\$TID")
|
||||
$SUDO $(tgtadm_logicalunit_new "\$TID" "$DEV")
|
||||
$SUDO $(tgt_admin_dump_config "$TARGET_CONF")
|
||||
|
||||
[ "$FSTYPE" != "save_as" ] && $SUDO $(mkfs_command "$DEV" "$FSTYPE")
|
||||
EOF
|
||||
)
|
||||
|
||||
# ------------ Image to save_as disk, no need to create a FS ------------
|
||||
|
||||
if [ "$FSTYPE" = "save_as" ]; then
|
||||
echo "$DST"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ------------ Create the image to the repository ------------
|
||||
|
||||
ssh_exec_and_log "$DST_HOST" "$REGISTER_CMD" \
|
||||
"Error registering $DST_HOST:$DEV"
|
||||
"Error registering $DST_HOST:$DEV"
|
||||
|
||||
echo "$IQN"
|
||||
|
@ -58,10 +58,12 @@ LV_NAME=`echo $TARGET|$AWK -F. '{print $(NF)}'`
|
||||
VG_NAME=`echo $TARGET|$AWK -F. '{print $(NF-1)}'`
|
||||
DEV="/dev/$VG_NAME/$LV_NAME"
|
||||
|
||||
let TID=ID+BASE_TID
|
||||
IQN="$BASE_IQN:$DST_HOST.$VG_NAME.$LV_NAME"
|
||||
|
||||
RM_COMMAND=$(cat <<EOF
|
||||
$SUDO $(tgtadm_target_delete "$TID")
|
||||
TID=\$($SUDO $(tgtadm_get_tid_for_iqn "$IQN"))
|
||||
|
||||
$SUDO $(tgtadm_target_delete "\$TID")
|
||||
$SUDO $SYNC
|
||||
$SUDO $LVREMOVE -f $VG_NAME/$LV_NAME
|
||||
EOF
|
||||
|
@ -43,6 +43,7 @@ SUDO=sudo
|
||||
SYNC=sync
|
||||
TAR=tar
|
||||
TGTADM=tgtadm
|
||||
TGTADMIN=tgt-admin
|
||||
VMKFSTOOLS=/usr/sbin/vmkfstools
|
||||
WGET=wget
|
||||
|
||||
@ -342,6 +343,23 @@ function tgtadm_target_delete {
|
||||
echo "$TGTADM --lld iscsi --op delete --mode target --tid $ID"
|
||||
}
|
||||
|
||||
function tgtadm_get_tid_for_iqn {
|
||||
IQN="$1"
|
||||
echo "$TGTADM --lld iscsi --op show --mode target | \
|
||||
grep \"$IQN\" | awk '{split(\$2,tmp,\":\"); print(tmp[1]);}'"
|
||||
}
|
||||
|
||||
function tgtadm_next_tid {
|
||||
echo "$TGTADM --lld iscsi --op show --mode target | \
|
||||
$GREP \"Target\" | tail -n 1 | \
|
||||
$AWK '{split(\$2,tmp,\":\"); print tmp[1]+1;}'"
|
||||
}
|
||||
|
||||
function tgt_admin_dump_config {
|
||||
FILE_PATH="$1"
|
||||
echo "$TGTADMIN --dump |sudo tee $FILE_PATH >& /dev/null"
|
||||
}
|
||||
|
||||
###
|
||||
|
||||
function iscsiadm_discovery {
|
||||
|
Loading…
x
Reference in New Issue
Block a user