diff --git a/src/datastore_mad/remotes/libfs.sh b/src/datastore_mad/remotes/libfs.sh index a0c4cbb0d4..e9fc025873 100644 --- a/src/datastore_mad/remotes/libfs.sh +++ b/src/datastore_mad/remotes/libfs.sh @@ -160,13 +160,7 @@ function check_restricted { # @return host to be used as bridge #------------------------------------------------------------------------------- function get_destination_host { - CONF_FILE_PATH="$1/bridgelist" - - BRIDGE_HOST=`head -1 $CONF_FILE_PATH` - - sed -i -e "1d" $CONF_FILE_PATH - - echo $BRIDGE_HOST >> $CONF_FILE_PATH - - echo $BRIDGE_HOST + HOSTS_ARRAY=($BRIDGE_LIST) + ARRAY_INDEX=`expr $1 % ${#HOSTS_ARRAY[@]}` + echo ${HOSTS_ARRAY[$ARRAY_INDEX]} } diff --git a/src/datastore_mad/remotes/vmfs/bridgelist b/src/datastore_mad/remotes/vmfs/bridgelist deleted file mode 100644 index f5e366f20f..0000000000 --- a/src/datastore_mad/remotes/vmfs/bridgelist +++ /dev/null @@ -1,3 +0,0 @@ -bridge-esx-1.mydomain -bridge-esx-2.mydomain -bridge-esx-3.mydomain diff --git a/src/datastore_mad/remotes/vmfs/clone b/src/datastore_mad/remotes/vmfs/clone index fffdd6e157..0efbe96a18 100755 --- a/src/datastore_mad/remotes/vmfs/clone +++ b/src/datastore_mad/remotes/vmfs/clone @@ -50,20 +50,25 @@ while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/UMASK \ + /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \ /DS_DRIVER_ACTION_DATA/DATASTORE/ID \ - /DS_DRIVER_ACTION_DATA/IMAGE/PATH) + /DS_DRIVER_ACTION_DATA/IMAGE/PATH \ + /DS_DRIVER_ACTION_DATA/IMAGE/ID) BASE_PATH="${XPATH_ELEMENTS[0]}" UMASK="${XPATH_ELEMENTS[1]}" -DS_ID="${XPATH_ELEMENTS[2]}" -SRC="${XPATH_ELEMENTS[3]}" +BRIDGE_LIST="${XPATH_ELEMENTS[2]}" +DS_ID="${XPATH_ELEMENTS[3]}" +SRC="${XPATH_ELEMENTS[4]}" +IMAGE_ID="${XPATH_ELEMENTS[5]}" + SRC_FOLDER=`basename $SRC` set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" DST=`generate_image_path` DST_FOLDER=`basename $DST` -DST_HOST=`get_destination_host $(dirname $0)` +DST_HOST=`get_destination_host $IMAGE_ID` if [ "$USE_SSH" != "yes" ]; then USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')` diff --git a/src/datastore_mad/remotes/vmfs/cp b/src/datastore_mad/remotes/vmfs/cp index 2e5ec32b3f..5a01beb49f 100755 --- a/src/datastore_mad/remotes/vmfs/cp +++ b/src/datastore_mad/remotes/vmfs/cp @@ -54,19 +54,23 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/DATASTORE/ID \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/RESTRICTED_DIRS \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/SAFE_DIRS \ + /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/UMASK \ /DS_DRIVER_ACTION_DATA/IMAGE/PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/MD5 \ - /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/SHA1) + /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/SHA1 \ + /DS_DRIVER_ACTION_DATA/IMAGE/ID) BASE_PATH="${XPATH_ELEMENTS[0]}" DS_ID="${XPATH_ELEMENTS[1]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[2]}" SAFE_DIRS="${XPATH_ELEMENTS[3]}" -UMASK="${XPATH_ELEMENTS[4]}" -SRC="${XPATH_ELEMENTS[5]}" -MD5="${XPATH_ELEMENTS[6]}" -SHA1="${XPATH_ELEMENTS[7]}" +BRIDGE_LIST="${XPATH_ELEMENTS[4]}" +UMASK="${XPATH_ELEMENTS[5]}" +SRC="${XPATH_ELEMENTS[6]}" +MD5="${XPATH_ELEMENTS[7]}" +SHA1="${XPATH_ELEMENTS[8]}" +IMAGE_ID="${XPATH_ELEMENTS[9]}" # Set up the datastore set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" @@ -74,7 +78,7 @@ set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" FE_DST=`generate_image_path` DST_FOLDER=`basename $FE_DST` DST="/vmfs/volumes/$DS_ID/$DST_FOLDER" -DST_HOST=`get_destination_host $(dirname $0)` +DST_HOST=`get_destination_host $IMAGE_ID` if [ "$USE_SSH" != "yes" ]; then USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')` diff --git a/src/datastore_mad/remotes/vmfs/mkfs b/src/datastore_mad/remotes/vmfs/mkfs index 86890a2f5b..e4c460be17 100755 --- a/src/datastore_mad/remotes/vmfs/mkfs +++ b/src/datastore_mad/remotes/vmfs/mkfs @@ -54,7 +54,8 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/UMASK \ /DS_DRIVER_ACTION_DATA/DATASTORE/ID \ /DS_DRIVER_ACTION_DATA/IMAGE/FSTYPE \ - /DS_DRIVER_ACTION_DATA/IMAGE/SIZE) + /DS_DRIVER_ACTION_DATA/IMAGE/SIZE \ + /DS_DRIVER_ACTION_DATA/IMAGE/ID) BASE_PATH="${XPATH_ELEMENTS[0]}" RESTRICTED_DIRS="${XPATH_ELEMENTS[1]}" @@ -63,13 +64,14 @@ UMASK="${XPATH_ELEMENTS[3]}" IMAGE_DS_ID="${XPATH_ELEMENTS[4]}" FSTYPE="${XPATH_ELEMENTS[5]}" SIZE="${XPATH_ELEMENTS[6]}" +IMAGE_ID="${XPATH_ELEMENTS[7]}" set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" DST=`generate_image_path` DST_DIR=`dirname $DST` DST_FOLDER=`basename $DST` -DST_HOST=`get_destination_host $(dirname $0)` +DST_HOST=`get_destination_host $IMAGE_ID` if [ "$USE_SSH" != "yes" ]; then USERNAME=`echo $(cat $VMWARERC |grep ":username:"|cut -d":" -f 3|tr -d '"')` diff --git a/src/datastore_mad/remotes/vmfs/rm b/src/datastore_mad/remotes/vmfs/rm index dbaa8827b4..9f5da78d6b 100755 --- a/src/datastore_mad/remotes/vmfs/rm +++ b/src/datastore_mad/remotes/vmfs/rm @@ -49,12 +49,13 @@ while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \ /DS_DRIVER_ACTION_DATA/DATASTORE/ID \ - ) + /DS_DRIVER_ACTION_DATA/IMAGE/ID) SRC="${XPATH_ELEMENTS[0]}" DS_NAME="${XPATH_ELEMENTS[1]}" +IMAGE_ID="${XPATH_ELEMENTS[2]}" -DST_HOST=`get_destination_host $(dirname $0)` +DST_HOST=`get_destination_host $IMAGE_ID` DST_FOLDER=`basename $SRC` if [ "$USE_SSH" != "yes" ]; then