1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-23 22:50:09 +03:00

bug #1649: Add option LIMIT_TRANSFER_BW to datastores, to limit the transfer rate when downloading

http/https images.
This commit is contained in:
Ruben S. Montero 2012-11-10 00:36:15 +01:00
parent db88543c59
commit 94689fae98
7 changed files with 41 additions and 15 deletions

View File

@ -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"

View File

@ -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"

View File

@ -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 <<EOF
EOF
)
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$SRC" -`
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$LIMIT_TRANSFER_BW" "$SRC" -`
COPY_COMMAND="$UTILS_PATH/downloader.sh $DOWNLOADER_ARGS"

View File

@ -88,8 +88,9 @@ EOF
# @param $1 - MD5 string
# @param $2 - SHA1 string
# @param $3 - NO_DECOMPRESS
# @param $4 - SRC
# @param $5 - DST
# @param $4 - BW LIMIT
# @param $5 - SRC
# @param $6 - DST
# @return downloader.sh util arguments
#-------------------------------------------------------------------------------
function set_downloader_args {
@ -107,7 +108,11 @@ function set_downloader_args {
HASHES="$HASHES --nodecomp"
fi
echo "$HASHES $4 $5"
if [ -n "$4" ]; then
HASHES="$HASHES --limit $4"
fi
echo "$HASHES $5 $6"
}
#-------------------------------------------------------------------------------

View File

@ -58,7 +58,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]}"
@ -71,6 +72,7 @@ SIZE="${XPATH_ELEMENTS[7]}"
MD5="${XPATH_ELEMENTS[8]}"
SHA1="${XPATH_ELEMENTS[9]}"
NO_DECOMPRESS="${XPATH_ELEMENTS[10]}"
LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[11]}"
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS" "$UMASK"
@ -84,7 +86,7 @@ REGISTER_CMD=$(cat <<EOF
EOF
)
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$SRC" -`
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$LIMIT_TRANSFER_BW" "$SRC" -`
COPY_COMMAND="$UTILS_PATH/downloader.sh $DOWNLOADER_ARGS"

View File

@ -62,7 +62,8 @@ done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
/DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/MD5 \
/DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/SHA1 \
/DS_DRIVER_ACTION_DATA/IMAGE/ID \
/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]}"
DS_ID="${XPATH_ELEMENTS[1]}"
@ -77,6 +78,7 @@ MD5="${XPATH_ELEMENTS[9]}"
SHA1="${XPATH_ELEMENTS[10]}"
IMAGE_ID="${XPATH_ELEMENTS[11]}"
NO_DECOMPRESS="${XPATH_ELEMENTS[12]}"
LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[13]}"
FE_DST=`generate_image_path`
DST_FOLDER=`basename $FE_DST`
@ -98,7 +100,7 @@ if [ ! -d $TMP_DIR ]; then
mkdir -p $TMP_DIR
fi
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$SRC" "$TMP_DIR/$DST_FOLDER"`
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$LIMIT_TRANSFER_BW" "$SRC" "$TMP_DIR/$DST_FOLDER"`
COPY_COMMAND="$UTILS_PATH/downloader.sh $DOWNLOADER_ARGS"

View File

@ -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,13 +65,14 @@ 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"
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"