diff --git a/src/datastore_mad/remotes/downloader.sh b/src/datastore_mad/remotes/downloader.sh index 237e632b9b..bca92689b4 100755 --- a/src/datastore_mad/remotes/downloader.sh +++ b/src/datastore_mad/remotes/downloader.sh @@ -117,7 +117,7 @@ function unarchive fi } -TEMP=`getopt -o m:s:n -l md5:,sha1:,nodecomp -- "$@"` +TEMP=`getopt -o m:s:l:n -l md5:,sha1:,limit:,nodecomp -- "$@"` if [ $? != 0 ] ; then echo "Arguments error" @@ -142,6 +142,10 @@ while true; do export NO_DECOMPRESS="yes" shift ;; + -l|--limit) + export LIMIT_RATE="$2" + shift 2 + ;; --) shift break @@ -163,7 +167,14 @@ http://*|https://*) # -k so it does not check the certificate # -L to follow redirects # -sS to hide output except on failure - command="curl -sS -k -L $FROM" + # --limit_rate to limit the bw + curl_args="-sS -k -L $FROM" + + if [ -n "$LIMIT_RATE" ]; then + curl_args="--limit-rate $LIMIT_RATE $curl_args" + fi + + command="curl $curl_args" ;; *) command="cat $FROM" diff --git a/src/datastore_mad/remotes/fs/cp b/src/datastore_mad/remotes/fs/cp index 840ac28fd8..61a2f6bf5e 100755 --- a/src/datastore_mad/remotes/fs/cp +++ b/src/datastore_mad/remotes/fs/cp @@ -54,7 +54,8 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/MD5 \ /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/SHA1 \ - /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/NO_DECOMPRESS) + /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]}" @@ -64,6 +65,7 @@ SRC="${XPATH_ELEMENTS[4]}" MD5="${XPATH_ELEMENTS[5]}" SHA1="${XPATH_ELEMENTS[6]}" NO_DECOMPRESS="${XPATH_ELEMENTS[7]}" +LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[8]}" mkdir -p "$BASE_PATH" @@ -71,7 +73,7 @@ set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" DST=`generate_image_path` -DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$SRC" "$DST"` +DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$LIMIT_TRANSFER_BW" "$SRC" "$DST"` COPY_COMMAND="$UTILS_PATH/downloader.sh $DOWNLOADER_ARGS" diff --git a/src/datastore_mad/remotes/iscsi/cp b/src/datastore_mad/remotes/iscsi/cp index c99b970c16..ed5b02bbd6 100755 --- a/src/datastore_mad/remotes/iscsi/cp +++ b/src/datastore_mad/remotes/iscsi/cp @@ -59,7 +59,8 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \ /DS_DRIVER_ACTION_DATA/IMAGE/SIZE \ /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/MD5 \ /DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/SHA1 \ - /DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/NO_DECOMPRESS) + /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]}" @@ -73,6 +74,7 @@ SIZE="${XPATH_ELEMENTS[8]}" MD5="${XPATH_ELEMENTS[9]}" SHA1="${XPATH_ELEMENTS[10]}" NO_DECOMPRESS="${XPATH_ELEMENTS[11]}" +LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[12]}" set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK" @@ -95,7 +97,7 @@ REGISTER_CMD=$(cat <