From b9dc86c9bd9f1e95de356119d32482f3e90e75ea Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Fri, 9 Aug 2013 12:22:18 -0400 Subject: [PATCH 1/6] feature-2262: Make lvm drivers use incremental xpath --- src/datastore_mad/remotes/lvm/clone | 12 ++++++------ src/datastore_mad/remotes/lvm/cp | 24 ++++++++++++------------ src/datastore_mad/remotes/lvm/mkfs | 16 ++++++++-------- src/datastore_mad/remotes/lvm/monitor | 6 +++--- src/datastore_mad/remotes/lvm/rm | 12 ++++-------- 5 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/datastore_mad/remotes/lvm/clone b/src/datastore_mad/remotes/lvm/clone index 3807fe8f31..1bd1ded118 100755 --- a/src/datastore_mad/remotes/lvm/clone +++ b/src/datastore_mad/remotes/lvm/clone @@ -40,7 +40,7 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -50,11 +50,11 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/SIZE) -BASE_PATH="${XPATH_ELEMENTS[0]}" -DST_HOST="${XPATH_ELEMENTS[1]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[2]:-$VG_NAME}" -SRC="${XPATH_ELEMENTS[3]}" -SIZE="${XPATH_ELEMENTS[4]}" +BASE_PATH="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" +SRC="${XPATH_ELEMENTS[j++]}" +SIZE="${XPATH_ELEMENTS[j++]}" SAFE_DIRS="" diff --git a/src/datastore_mad/remotes/lvm/cp b/src/datastore_mad/remotes/lvm/cp index 4ec7f325f0..f699c7367c 100755 --- a/src/datastore_mad/remotes/lvm/cp +++ b/src/datastore_mad/remotes/lvm/cp @@ -44,7 +44,7 @@ UTILS_PATH="${DRIVER_PATH}/.." XPATH="$UTILS_PATH/xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -60,17 +60,17 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/NO_DECOMPRESS \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/LIMIT_TRANSFER_BW) -BASE_PATH="${XPATH_ELEMENTS[0]}" -RESTRICTED_DIRS="${XPATH_ELEMENTS[1]}" -SAFE_DIRS="${XPATH_ELEMENTS[2]}" -DST_HOST="${XPATH_ELEMENTS[3]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[4]:-$VG_NAME}" -SRC="${XPATH_ELEMENTS[5]}" -SIZE="${XPATH_ELEMENTS[6]}" -MD5="${XPATH_ELEMENTS[7]}" -SHA1="${XPATH_ELEMENTS[8]}" -NO_DECOMPRESS="${XPATH_ELEMENTS[9]}" -LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[10]}" +BASE_PATH="${XPATH_ELEMENTS[j++]}" +RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" +SAFE_DIRS="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" +SRC="${XPATH_ELEMENTS[j++]}" +SIZE="${XPATH_ELEMENTS[j++]}" +MD5="${XPATH_ELEMENTS[j++]}" +SHA1="${XPATH_ELEMENTS[j++]}" +NO_DECOMPRESS="${XPATH_ELEMENTS[j++]}" +LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[j++]}" set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" diff --git a/src/datastore_mad/remotes/lvm/mkfs b/src/datastore_mad/remotes/lvm/mkfs index 4f8f2c56ef..b568887387 100755 --- a/src/datastore_mad/remotes/lvm/mkfs +++ b/src/datastore_mad/remotes/lvm/mkfs @@ -42,7 +42,7 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -54,13 +54,13 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /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]}" -DST_HOST="${XPATH_ELEMENTS[3]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[4]:-$VG_NAME}" -FSTYPE="${XPATH_ELEMENTS[5]}" -SIZE="${XPATH_ELEMENTS[6]}" +BASE_PATH="${XPATH_ELEMENTS[j++]}" +RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" +SAFE_DIRS="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" +FSTYPE="${XPATH_ELEMENTS[j++]}" +SIZE="${XPATH_ELEMENTS[j++]}" set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" diff --git a/src/datastore_mad/remotes/lvm/monitor b/src/datastore_mad/remotes/lvm/monitor index ddbe61e7a5..f11fe7ac9c 100755 --- a/src/datastore_mad/remotes/lvm/monitor +++ b/src/datastore_mad/remotes/lvm/monitor @@ -41,15 +41,15 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME) -HOST="${XPATH_ELEMENTS[0]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[1]-$VG_NAME}" +HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" # ------------ Compute datastore usage ------------- diff --git a/src/datastore_mad/remotes/lvm/rm b/src/datastore_mad/remotes/lvm/rm index ba629cd015..d4f5f2f6c8 100755 --- a/src/datastore_mad/remotes/lvm/rm +++ b/src/datastore_mad/remotes/lvm/rm @@ -40,25 +40,21 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \ - /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ - /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BASE_TID) + /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST) -SRC="${XPATH_ELEMENTS[0]}" -DST_HOST="${XPATH_ELEMENTS[1]:-$HOST}" -BASE_TID="${XPATH_ELEMENTS[2]:-$BASE_TID}" +SRC="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" TARGET=`echo $SRC|$CUT -d: -f2` 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 - RM_COMMAND=$(cat < Date: Fri, 9 Aug 2013 12:23:05 -0400 Subject: [PATCH 2/6] feature-2262: Remove HOST default attribute from lvm.conf --- src/datastore_mad/remotes/lvm/clone | 7 ++++++- src/datastore_mad/remotes/lvm/cp | 7 ++++++- src/datastore_mad/remotes/lvm/lvm.conf | 3 --- src/datastore_mad/remotes/lvm/mkfs | 7 ++++++- src/datastore_mad/remotes/lvm/monitor | 8 ++++++-- src/datastore_mad/remotes/lvm/rm | 7 ++++++- 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/datastore_mad/remotes/lvm/clone b/src/datastore_mad/remotes/lvm/clone index 1bd1ded118..7c99033e47 100755 --- a/src/datastore_mad/remotes/lvm/clone +++ b/src/datastore_mad/remotes/lvm/clone @@ -51,11 +51,16 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/SIZE) BASE_PATH="${XPATH_ELEMENTS[j++]}" -DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[j++]}" VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" SRC="${XPATH_ELEMENTS[j++]}" SIZE="${XPATH_ELEMENTS[j++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + SAFE_DIRS="" SRC_HOST=`echo $SRC|cut -d. -f1` diff --git a/src/datastore_mad/remotes/lvm/cp b/src/datastore_mad/remotes/lvm/cp index f699c7367c..7c9d95b0dd 100755 --- a/src/datastore_mad/remotes/lvm/cp +++ b/src/datastore_mad/remotes/lvm/cp @@ -63,7 +63,7 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ BASE_PATH="${XPATH_ELEMENTS[j++]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" SAFE_DIRS="${XPATH_ELEMENTS[j++]}" -DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[j++]}" VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" SRC="${XPATH_ELEMENTS[j++]}" SIZE="${XPATH_ELEMENTS[j++]}" @@ -72,6 +72,11 @@ SHA1="${XPATH_ELEMENTS[j++]}" NO_DECOMPRESS="${XPATH_ELEMENTS[j++]}" LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[j++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" LV_NAME="lv-one-${ID}" diff --git a/src/datastore_mad/remotes/lvm/lvm.conf b/src/datastore_mad/remotes/lvm/lvm.conf index c063085ade..9e2874ead6 100644 --- a/src/datastore_mad/remotes/lvm/lvm.conf +++ b/src/datastore_mad/remotes/lvm/lvm.conf @@ -17,8 +17,5 @@ # Default volume group VG_NAME=vg-one -# Default LVM server host -HOST=localhost - # Default LV snapshot SIZE DEFAULT_SIZE=512 diff --git a/src/datastore_mad/remotes/lvm/mkfs b/src/datastore_mad/remotes/lvm/mkfs index b568887387..3f28dcef97 100755 --- a/src/datastore_mad/remotes/lvm/mkfs +++ b/src/datastore_mad/remotes/lvm/mkfs @@ -57,11 +57,16 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ BASE_PATH="${XPATH_ELEMENTS[j++]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" SAFE_DIRS="${XPATH_ELEMENTS[j++]}" -DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[j++]}" VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" FSTYPE="${XPATH_ELEMENTS[j++]}" SIZE="${XPATH_ELEMENTS[j++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" LV_NAME="lv-one-${ID}" diff --git a/src/datastore_mad/remotes/lvm/monitor b/src/datastore_mad/remotes/lvm/monitor index f11fe7ac9c..006a24bb45 100755 --- a/src/datastore_mad/remotes/lvm/monitor +++ b/src/datastore_mad/remotes/lvm/monitor @@ -48,9 +48,13 @@ while IFS= read -r -d '' element; do done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME) -HOST="${XPATH_ELEMENTS[j++]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" +HOST="${XPATH_ELEMENTS[j++]}" +VG_NAME="${XPATH_ELEMENTS[j++]-$VG_NAME}" +if [ -z "$HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi # ------------ Compute datastore usage ------------- MONITOR_SCRIPT=$(cat < Date: Fri, 9 Aug 2013 11:53:37 -0400 Subject: [PATCH 3/6] feature-2262: Remove HOST default attribute from ceph.conf and ceph drivers --- src/datastore_mad/remotes/ceph/ceph.conf | 3 --- src/datastore_mad/remotes/ceph/clone | 7 ++++++- src/datastore_mad/remotes/ceph/cp | 7 ++++++- src/datastore_mad/remotes/ceph/mkfs | 7 ++++++- src/datastore_mad/remotes/ceph/monitor | 11 ++++++++--- src/datastore_mad/remotes/ceph/rm | 7 ++++++- src/tm_mad/ceph/clone | 5 +++++ 7 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/datastore_mad/remotes/ceph/ceph.conf b/src/datastore_mad/remotes/ceph/ceph.conf index 36d4df0058..729d45c550 100644 --- a/src/datastore_mad/remotes/ceph/ceph.conf +++ b/src/datastore_mad/remotes/ceph/ceph.conf @@ -17,9 +17,6 @@ # Default POOL_NAME POOL_NAME=one -# Default Ceph server host. Storage operations will be performed in this host. -HOST=localhost - # Staging directory # A directory in the Ceph server host where image will be transferred to # temporarily during the create/mkfs processes. This directoy MUST exist, diff --git a/src/datastore_mad/remotes/ceph/clone b/src/datastore_mad/remotes/ceph/clone index a1d6b729f3..112f32cd24 100755 --- a/src/datastore_mad/remotes/ceph/clone +++ b/src/datastore_mad/remotes/ceph/clone @@ -53,11 +53,16 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ unset i BASE_PATH="${XPATH_ELEMENTS[i++]}" -DST_HOST="${XPATH_ELEMENTS[i++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[i++]}" POOL_NAME="${XPATH_ELEMENTS[i++]:-$POOL_NAME}" SRC="${XPATH_ELEMENTS[i++]}" SIZE="${XPATH_ELEMENTS[i++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + SAFE_DIRS="" IMAGE_NAME="one-${ID}" diff --git a/src/datastore_mad/remotes/ceph/cp b/src/datastore_mad/remotes/ceph/cp index 82a295138f..08afb8dae4 100755 --- a/src/datastore_mad/remotes/ceph/cp +++ b/src/datastore_mad/remotes/ceph/cp @@ -66,7 +66,7 @@ unset i BASE_PATH="${XPATH_ELEMENTS[i++]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[i++]}" SAFE_DIRS="${XPATH_ELEMENTS[i++]}" -DST_HOST="${XPATH_ELEMENTS[i++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[i++]}" POOL_NAME="${XPATH_ELEMENTS[i++]:-$POOL_NAME}" STAGING_DIR="${XPATH_ELEMENTS[i++]:-$STAGING_DIR}" SRC="${XPATH_ELEMENTS[i++]}" @@ -76,6 +76,11 @@ SHA1="${XPATH_ELEMENTS[i++]}" NO_DECOMPRESS="${XPATH_ELEMENTS[i++]}" LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[i++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" IMAGE_HASH=`generate_image_hash` diff --git a/src/datastore_mad/remotes/ceph/mkfs b/src/datastore_mad/remotes/ceph/mkfs index e14404bf77..d86c563eb5 100755 --- a/src/datastore_mad/remotes/ceph/mkfs +++ b/src/datastore_mad/remotes/ceph/mkfs @@ -60,12 +60,17 @@ unset i BASE_PATH="${XPATH_ELEMENTS[i++]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[i++]}" SAFE_DIRS="${XPATH_ELEMENTS[i++]}" -DST_HOST="${XPATH_ELEMENTS[i++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[i++]}" POOL_NAME="${XPATH_ELEMENTS[i++]:-$POOL_NAME}" STAGING_DIR="${XPATH_ELEMENTS[i++]:-$STAGING_DIR}" FSTYPE="${XPATH_ELEMENTS[i++]}" SIZE="${XPATH_ELEMENTS[i++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" IMAGE_HASH=`generate_image_hash` diff --git a/src/datastore_mad/remotes/ceph/monitor b/src/datastore_mad/remotes/ceph/monitor index 6ba8e9daad..9af2359033 100755 --- a/src/datastore_mad/remotes/ceph/monitor +++ b/src/datastore_mad/remotes/ceph/monitor @@ -41,15 +41,20 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/POOL_NAME) -HOST="${XPATH_ELEMENTS[0]:-$HOST}" -POOL_NAME="${XPATH_ELEMENTS[1]:-$POOL_NAME}" +HOST="${XPATH_ELEMENTS[j++]}" +POOL_NAME="${XPATH_ELEMENTS[j++]:-$POOL_NAME}" + +if [ -z "$HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi # ------------ Compute datastore usage ------------- diff --git a/src/datastore_mad/remotes/ceph/rm b/src/datastore_mad/remotes/ceph/rm index dbdd5cdc97..f52c06868b 100755 --- a/src/datastore_mad/remotes/ceph/rm +++ b/src/datastore_mad/remotes/ceph/rm @@ -50,7 +50,12 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \ unset i SRC="${XPATH_ELEMENTS[i++]}" -DST_HOST="${XPATH_ELEMENTS[i++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[i++]}" + +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi log "Removing $SRC from the rbd image repository in $DST_HOST" diff --git a/src/tm_mad/ceph/clone b/src/tm_mad/ceph/clone index 25a8d96401..995f541744 100755 --- a/src/tm_mad/ceph/clone +++ b/src/tm_mad/ceph/clone @@ -57,6 +57,11 @@ unset i CEPH_HOST="${XPATH_ELEMENTS[i++]}" +if [ -z "$CEPH_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + #------------------------------------------------------------------------------- # Compute the destination image name #------------------------------------------------------------------------------- From c66d605fe80a71a45f208c2a15f3b55618941391 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Fri, 9 Aug 2013 12:00:48 -0400 Subject: [PATCH 4/6] feature-2262: Make iscsi drivers use incremental xpath structure --- src/datastore_mad/remotes/iscsi/clone | 18 ++++++++--------- src/datastore_mad/remotes/iscsi/cp | 26 ++++++++++++------------- src/datastore_mad/remotes/iscsi/mkfs | 18 ++++++++--------- src/datastore_mad/remotes/iscsi/monitor | 6 +++--- src/datastore_mad/remotes/iscsi/rm | 6 +++--- src/tm_mad/iscsi/cpds | 8 ++++---- src/tm_mad/iscsi/delete | 6 +++--- src/tm_mad/iscsi/mv | 6 +++--- src/tm_mad/iscsi/mvds | 8 ++++---- 9 files changed, 51 insertions(+), 51 deletions(-) diff --git a/src/datastore_mad/remotes/iscsi/clone b/src/datastore_mad/remotes/iscsi/clone index 65e58a34f3..331f4b23ec 100755 --- a/src/datastore_mad/remotes/iscsi/clone +++ b/src/datastore_mad/remotes/iscsi/clone @@ -40,7 +40,7 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -53,14 +53,14 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/SIZE) -BASE_PATH="${XPATH_ELEMENTS[0]}" -RESTRICTED_DIRS="${XPATH_ELEMENTS[1]}" -SAFE_DIRS="${XPATH_ELEMENTS[2]}" -DST_HOST="${XPATH_ELEMENTS[3]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[4]:-$VG_NAME}" -BASE_IQN="${XPATH_ELEMENTS[5]:-$BASE_IQN}" -SRC="${XPATH_ELEMENTS[6]}" -SIZE="${XPATH_ELEMENTS[7]}" +BASE_PATH="${XPATH_ELEMENTS[j++]}" +RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" +SAFE_DIRS="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" +BASE_IQN="${XPATH_ELEMENTS[j++]:-$BASE_IQN}" +SRC="${XPATH_ELEMENTS[j++]}" +SIZE="${XPATH_ELEMENTS[j++]}" # Check if 'TGTSETUPLUN' is installed tgt_setup_lun_install "$DST_HOST" "$BASE_PATH" diff --git a/src/datastore_mad/remotes/iscsi/cp b/src/datastore_mad/remotes/iscsi/cp index 4e6147c8b0..a2b55a817b 100755 --- a/src/datastore_mad/remotes/iscsi/cp +++ b/src/datastore_mad/remotes/iscsi/cp @@ -44,7 +44,7 @@ UTILS_PATH="${DRIVER_PATH}/.." XPATH="$UTILS_PATH/xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -61,18 +61,18 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/NO_DECOMPRESS \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/LIMIT_TRANSFER_BW) -BASE_PATH="${XPATH_ELEMENTS[0]}" -RESTRICTED_DIRS="${XPATH_ELEMENTS[1]}" -SAFE_DIRS="${XPATH_ELEMENTS[2]}" -DST_HOST="${XPATH_ELEMENTS[3]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[4]:-$VG_NAME}" -BASE_IQN="${XPATH_ELEMENTS[5]:-$BASE_IQN}" -SRC="${XPATH_ELEMENTS[6]}" -SIZE="${XPATH_ELEMENTS[7]}" -MD5="${XPATH_ELEMENTS[8]}" -SHA1="${XPATH_ELEMENTS[9]}" -NO_DECOMPRESS="${XPATH_ELEMENTS[10]}" -LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[11]}" +BASE_PATH="${XPATH_ELEMENTS[j++]}" +RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" +SAFE_DIRS="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" +BASE_IQN="${XPATH_ELEMENTS[j++]:-$BASE_IQN}" +SRC="${XPATH_ELEMENTS[j++]}" +SIZE="${XPATH_ELEMENTS[j++]}" +MD5="${XPATH_ELEMENTS[j++]}" +SHA1="${XPATH_ELEMENTS[j++]}" +NO_DECOMPRESS="${XPATH_ELEMENTS[j++]}" +LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[j++]}" # Check if 'TGTSETUPLUN' is installed tgt_setup_lun_install "$DST_HOST" "$BASE_PATH" diff --git a/src/datastore_mad/remotes/iscsi/mkfs b/src/datastore_mad/remotes/iscsi/mkfs index 2bd077d788..6349525ef3 100755 --- a/src/datastore_mad/remotes/iscsi/mkfs +++ b/src/datastore_mad/remotes/iscsi/mkfs @@ -42,7 +42,7 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -55,14 +55,14 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /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]}" -DST_HOST="${XPATH_ELEMENTS[3]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[4]:-$VG_NAME}" -BASE_IQN="${XPATH_ELEMENTS[5]:-$BASE_IQN}" -FSTYPE="${XPATH_ELEMENTS[6]}" -SIZE="${XPATH_ELEMENTS[7]:-0}" +BASE_PATH="${XPATH_ELEMENTS[j++]}" +RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" +SAFE_DIRS="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" +BASE_IQN="${XPATH_ELEMENTS[j++]:-$BASE_IQN}" +FSTYPE="${XPATH_ELEMENTS[j++]}" +SIZE="${XPATH_ELEMENTS[j++]:-0}" # Check if 'TGTSETUPLUN' is installed tgt_setup_lun_install "$DST_HOST" "$BASE_PATH" diff --git a/src/datastore_mad/remotes/iscsi/monitor b/src/datastore_mad/remotes/iscsi/monitor index 3325f6251d..a7410da329 100755 --- a/src/datastore_mad/remotes/iscsi/monitor +++ b/src/datastore_mad/remotes/iscsi/monitor @@ -41,15 +41,15 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME) -HOST="${XPATH_ELEMENTS[0]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[1]-$VG_NAME}" +HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +VG_NAME="${XPATH_ELEMENTS[j++]-$VG_NAME}" # ------------ Compute datastore usage ------------- diff --git a/src/datastore_mad/remotes/iscsi/rm b/src/datastore_mad/remotes/iscsi/rm index 9268c9eb38..4c0af62385 100755 --- a/src/datastore_mad/remotes/iscsi/rm +++ b/src/datastore_mad/remotes/iscsi/rm @@ -40,15 +40,15 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST) -SRC="${XPATH_ELEMENTS[0]}" -DST_HOST="${XPATH_ELEMENTS[1]:-$HOST}" +SRC="${XPATH_ELEMENTS[j++]}" +DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" BASE_IQN=`echo $SRC|$CUT -d: -f1` TARGET=`echo $SRC|$CUT -d: -f2` diff --git a/src/tm_mad/iscsi/cpds b/src/tm_mad/iscsi/cpds index 15706507a1..7402ad67dd 100755 --- a/src/tm_mad/iscsi/cpds +++ b/src/tm_mad/iscsi/cpds @@ -53,7 +53,7 @@ DISK_ID=$(echo $SRC|awk -F. '{print $NF}') XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -62,9 +62,9 @@ done < <(onevm show -x $VMID| $XPATH \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/SAVE_AS \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/PERSISTENT) -IQN="${XPATH_ELEMENTS[0]}" -SAVE_AS="${XPATH_ELEMENTS[1]}" -PERSISTENT="${XPATH_ELEMENTS[2]}" +IQN="${XPATH_ELEMENTS[j++]}" +SAVE_AS="${XPATH_ELEMENTS[j++]}" +PERSISTENT="${XPATH_ELEMENTS[j++]}" if [ -z "$PERSISTENT" ]; then IQN=$IQN-$VMID diff --git a/src/tm_mad/iscsi/delete b/src/tm_mad/iscsi/delete index b8184494ba..c95070c232 100755 --- a/src/tm_mad/iscsi/delete +++ b/src/tm_mad/iscsi/delete @@ -54,7 +54,7 @@ DISK_ID=$(echo "$DST_PATH" | $AWK -F. '{print $NF}') XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -62,8 +62,8 @@ done < <(onevm show -x $VMID| $XPATH \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/SOURCE \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/PERSISTENT) -IQN="${XPATH_ELEMENTS[0]}" -PERSISTENT="${XPATH_ELEMENTS[1]}" +IQN="${XPATH_ELEMENTS[j++]}" +PERSISTENT="${XPATH_ELEMENTS[j++]}" if [ -z "$PERSISTENT" ]; then NEW_IQN=$IQN-$VMID diff --git a/src/tm_mad/iscsi/mv b/src/tm_mad/iscsi/mv index 7e33033d13..007086ab27 100755 --- a/src/tm_mad/iscsi/mv +++ b/src/tm_mad/iscsi/mv @@ -76,7 +76,7 @@ fi XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS DISK_ID=$(echo "$SRC_PATH" | $AWK -F. '{print $NF}') @@ -86,8 +86,8 @@ done < <(onevm show -x $VMID| $XPATH \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/SOURCE \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/PERSISTENT) -IQN="${XPATH_ELEMENTS[0]}" -PERSISTENT="${XPATH_ELEMENTS[1]}" +IQN="${XPATH_ELEMENTS[j++]}" +PERSISTENT="${XPATH_ELEMENTS[j++]}" if [ -z "$PERSISTENT" ]; then IQN=$IQN-$VMID diff --git a/src/tm_mad/iscsi/mvds b/src/tm_mad/iscsi/mvds index 80ac6ef24f..8c70a0d686 100755 --- a/src/tm_mad/iscsi/mvds +++ b/src/tm_mad/iscsi/mvds @@ -53,7 +53,7 @@ DISK_ID=$(echo $SRC|awk -F. '{print $NF}') XPATH="${DRIVER_PATH}/../../datastore/xpath.rb --stdin" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" @@ -62,9 +62,9 @@ done < <(onevm show -x $VMID| $XPATH \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/SAVE_AS \ /VM/TEMPLATE/DISK[DISK_ID=$DISK_ID]/PERSISTENT) -IQN="${XPATH_ELEMENTS[0]}" -SAVE_AS="${XPATH_ELEMENTS[1]}" -PERSISTENT="${XPATH_ELEMENTS[2]}" +IQN="${XPATH_ELEMENTS[j++]}" +SAVE_AS="${XPATH_ELEMENTS[j++]}" +PERSISTENT="${XPATH_ELEMENTS[j++]}" if [ -z "$PERSISTENT" ]; then IQN=$IQN-$VMID From 15d28c11bc85d9deafeec5ab6e5aa67a90d5a79b Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Fri, 9 Aug 2013 12:06:59 -0400 Subject: [PATCH 5/6] feature-2262: Remove HOST default attribute from iscsi.conf and iscsi drivers --- src/datastore_mad/remotes/iscsi/clone | 7 ++++++- src/datastore_mad/remotes/iscsi/cp | 7 ++++++- src/datastore_mad/remotes/iscsi/iscsi.conf | 3 --- src/datastore_mad/remotes/iscsi/mkfs | 7 ++++++- src/datastore_mad/remotes/iscsi/monitor | 7 ++++++- src/datastore_mad/remotes/iscsi/rm | 7 ++++++- 6 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/datastore_mad/remotes/iscsi/clone b/src/datastore_mad/remotes/iscsi/clone index 331f4b23ec..d1fc5b8a88 100755 --- a/src/datastore_mad/remotes/iscsi/clone +++ b/src/datastore_mad/remotes/iscsi/clone @@ -56,12 +56,17 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ BASE_PATH="${XPATH_ELEMENTS[j++]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" SAFE_DIRS="${XPATH_ELEMENTS[j++]}" -DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[j++]}" VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" BASE_IQN="${XPATH_ELEMENTS[j++]:-$BASE_IQN}" SRC="${XPATH_ELEMENTS[j++]}" SIZE="${XPATH_ELEMENTS[j++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + # Check if 'TGTSETUPLUN' is installed tgt_setup_lun_install "$DST_HOST" "$BASE_PATH" diff --git a/src/datastore_mad/remotes/iscsi/cp b/src/datastore_mad/remotes/iscsi/cp index a2b55a817b..dfaec846a6 100755 --- a/src/datastore_mad/remotes/iscsi/cp +++ b/src/datastore_mad/remotes/iscsi/cp @@ -64,7 +64,7 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ BASE_PATH="${XPATH_ELEMENTS[j++]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" SAFE_DIRS="${XPATH_ELEMENTS[j++]}" -DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[j++]}" VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" BASE_IQN="${XPATH_ELEMENTS[j++]:-$BASE_IQN}" SRC="${XPATH_ELEMENTS[j++]}" @@ -74,6 +74,11 @@ SHA1="${XPATH_ELEMENTS[j++]}" NO_DECOMPRESS="${XPATH_ELEMENTS[j++]}" LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[j++]}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + # Check if 'TGTSETUPLUN' is installed tgt_setup_lun_install "$DST_HOST" "$BASE_PATH" diff --git a/src/datastore_mad/remotes/iscsi/iscsi.conf b/src/datastore_mad/remotes/iscsi/iscsi.conf index 2b56cde7e1..48130536f1 100644 --- a/src/datastore_mad/remotes/iscsi/iscsi.conf +++ b/src/datastore_mad/remotes/iscsi/iscsi.conf @@ -14,9 +14,6 @@ # limitations under the License. # #--------------------------------------------------------------------------- # -# Default iSCSI target host -HOST=localhost - # Default IQN path BASE_IQN=iqn.2012-02.org.opennebula diff --git a/src/datastore_mad/remotes/iscsi/mkfs b/src/datastore_mad/remotes/iscsi/mkfs index 6349525ef3..3672a7df6a 100755 --- a/src/datastore_mad/remotes/iscsi/mkfs +++ b/src/datastore_mad/remotes/iscsi/mkfs @@ -58,12 +58,17 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ BASE_PATH="${XPATH_ELEMENTS[j++]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}" SAFE_DIRS="${XPATH_ELEMENTS[j++]}" -DST_HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +DST_HOST="${XPATH_ELEMENTS[j++]}" VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" BASE_IQN="${XPATH_ELEMENTS[j++]:-$BASE_IQN}" FSTYPE="${XPATH_ELEMENTS[j++]}" SIZE="${XPATH_ELEMENTS[j++]:-0}" +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + # Check if 'TGTSETUPLUN' is installed tgt_setup_lun_install "$DST_HOST" "$BASE_PATH" diff --git a/src/datastore_mad/remotes/iscsi/monitor b/src/datastore_mad/remotes/iscsi/monitor index a7410da329..b274511616 100755 --- a/src/datastore_mad/remotes/iscsi/monitor +++ b/src/datastore_mad/remotes/iscsi/monitor @@ -48,9 +48,14 @@ while IFS= read -r -d '' element; do done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME) -HOST="${XPATH_ELEMENTS[j++]:-$HOST}" +HOST="${XPATH_ELEMENTS[j++]}" VG_NAME="${XPATH_ELEMENTS[j++]-$VG_NAME}" +if [ -z "$HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi + # ------------ Compute datastore usage ------------- MONITOR_SCRIPT=$(cat < Date: Sat, 17 Aug 2013 21:47:57 +0200 Subject: [PATCH 6/6] feature #2262: fix default substitution --- src/datastore_mad/remotes/iscsi/monitor | 2 +- src/datastore_mad/remotes/lvm/monitor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/datastore_mad/remotes/iscsi/monitor b/src/datastore_mad/remotes/iscsi/monitor index b274511616..10c3929310 100755 --- a/src/datastore_mad/remotes/iscsi/monitor +++ b/src/datastore_mad/remotes/iscsi/monitor @@ -49,7 +49,7 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME) HOST="${XPATH_ELEMENTS[j++]}" -VG_NAME="${XPATH_ELEMENTS[j++]-$VG_NAME}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" if [ -z "$HOST" ]; then error_message "Datastore template missing 'HOST' attribute." diff --git a/src/datastore_mad/remotes/lvm/monitor b/src/datastore_mad/remotes/lvm/monitor index 006a24bb45..f2f356ee24 100755 --- a/src/datastore_mad/remotes/lvm/monitor +++ b/src/datastore_mad/remotes/lvm/monitor @@ -49,7 +49,7 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/HOST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/VG_NAME) HOST="${XPATH_ELEMENTS[j++]}" -VG_NAME="${XPATH_ELEMENTS[j++]-$VG_NAME}" +VG_NAME="${XPATH_ELEMENTS[j++]:-$VG_NAME}" if [ -z "$HOST" ]; then error_message "Datastore template missing 'HOST' attribute."