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/datastore_mad/remotes/iscsi/clone b/src/datastore_mad/remotes/iscsi/clone index 65e58a34f3..d1fc5b8a88 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,19 @@ 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++]}" +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 4e6147c8b0..dfaec846a6 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,23 @@ 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++]}" +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++]}" + +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 2bd077d788..3672a7df6a 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,19 @@ 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++]}" +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 3325f6251d..10c3929310 100755 --- a/src/datastore_mad/remotes/iscsi/monitor +++ b/src/datastore_mad/remotes/iscsi/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/VG_NAME) -HOST="${XPATH_ELEMENTS[0]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[1]-$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 ------------- diff --git a/src/datastore_mad/remotes/iscsi/rm b/src/datastore_mad/remotes/iscsi/rm index 9268c9eb38..1aa371283d 100755 --- a/src/datastore_mad/remotes/iscsi/rm +++ b/src/datastore_mad/remotes/iscsi/rm @@ -40,15 +40,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/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++]}" + +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi BASE_IQN=`echo $SRC|$CUT -d: -f1` TARGET=`echo $SRC|$CUT -d: -f2` diff --git a/src/datastore_mad/remotes/lvm/clone b/src/datastore_mad/remotes/lvm/clone index 3807fe8f31..7c99033e47 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,16 @@ 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++]}" +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="" diff --git a/src/datastore_mad/remotes/lvm/cp b/src/datastore_mad/remotes/lvm/cp index 4ec7f325f0..7c9d95b0dd 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,22 @@ 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++]}" +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++]}" + +if [ -z "$DST_HOST" ]; then + error_message "Datastore template missing 'HOST' attribute." + exit -1 +fi set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" 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 4f8f2c56ef..3f28dcef97 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,18 @@ 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++]}" +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" diff --git a/src/datastore_mad/remotes/lvm/monitor b/src/datastore_mad/remotes/lvm/monitor index ddbe61e7a5..f2f356ee24 100755 --- a/src/datastore_mad/remotes/lvm/monitor +++ b/src/datastore_mad/remotes/lvm/monitor @@ -41,16 +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/VG_NAME) -HOST="${XPATH_ELEMENTS[0]:-$HOST}" -VG_NAME="${XPATH_ELEMENTS[1]-$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 <