mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
Feature #4217: Add support to downloader.sh for the s3:// protocol
This commit is contained in:
parent
e5c1c549bb
commit
35035eceb7
@ -117,6 +117,27 @@ function unarchive
|
||||
fi
|
||||
}
|
||||
|
||||
function s3_request
|
||||
{
|
||||
FROM="$1"
|
||||
|
||||
OBJECT=$(basename $FROM)
|
||||
BUCKET=$(basename $(dirname $FROM))
|
||||
|
||||
DATE="`date +'%a, %d %b %Y %H:%M:%S %z'`"
|
||||
AUTH_STRING="GET\n\n\n${DATE}\n/${BUCKET}/${OBJECT}"
|
||||
|
||||
SIGNED_AUTH_STRING=`echo -en "$AUTH_STRING" | \
|
||||
openssl sha1 -hmac ${S3_SECRET_ACCESS_KEY} -binary | \
|
||||
base64`
|
||||
|
||||
echo " -H \"Date: ${DATE}\"" \
|
||||
" -H \"Authorization: AWS ${S3_ACCESS_KEY_ID}:${SIGNED_AUTH_STRING}\"" \
|
||||
" https://${BUCKET}.s3.amazonaws.com/${OBJECT}"
|
||||
}
|
||||
|
||||
|
||||
|
||||
TEMP=`getopt -o m:s:l:n -l md5:,sha1:,limit:,nodecomp -- "$@"`
|
||||
|
||||
if [ $? != 0 ] ; then
|
||||
@ -186,6 +207,15 @@ ssh://*)
|
||||
|
||||
command="ssh ${ssh_arg[0]} $rmt_cmd"
|
||||
;;
|
||||
s3://*)
|
||||
if [ -z "$S3_ACCESS_KEY_ID" -o -z "$S3_SECRET_ACCESS_KEY" ]; then
|
||||
echo "S3_ACCESS_KEY_ID and S3_SECRET_ACCESS_KEY are required" >&2
|
||||
exit -1
|
||||
fi
|
||||
|
||||
curl_args="$(s3_request $FROM)"
|
||||
command="curl $curl_args"
|
||||
;;
|
||||
*)
|
||||
if [ ! -r $FROM ]; then
|
||||
echo "Cannot read from $FROM" >&2
|
||||
@ -198,7 +228,7 @@ esac
|
||||
file_type=$(get_type "$command")
|
||||
decompressor=$(get_decompressor "$file_type")
|
||||
|
||||
$command | tee >( hasher $HASH_TYPE) | decompress "$decompressor" "$TO"
|
||||
eval "$command" | tee >( hasher $HASH_TYPE) | decompress "$decompressor" "$TO"
|
||||
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Error copying" >&2
|
||||
|
@ -57,7 +57,9 @@ 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/DATASTORE/TEMPLATE/NO_DECOMPRESS \
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/LIMIT_TRANSFER_BW)
|
||||
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/LIMIT_TRANSFER_BW \
|
||||
/DS_DRIVER_ACTION_DATA/MARKETPLACE/TEMPLATE/ACCESS_KEY_ID \
|
||||
/DS_DRIVER_ACTION_DATA/MARKETPLACE/TEMPLATE/SECRET_ACCESS_KEY)
|
||||
|
||||
unset i
|
||||
|
||||
@ -72,6 +74,12 @@ MD5="${XPATH_ELEMENTS[i++]}"
|
||||
SHA1="${XPATH_ELEMENTS[i++]}"
|
||||
NO_DECOMPRESS="${XPATH_ELEMENTS[i++]}"
|
||||
LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[i++]}"
|
||||
S3_ACCESS_KEY_ID="${XPATH_ELEMENTS[i++]}"
|
||||
S3_SECRET_ACCESS_KEY="${XPATH_ELEMENTS[i++]}"
|
||||
|
||||
# Must be made available to downloader.sh
|
||||
export S3_ACCESS_KEY_ID
|
||||
export S3_SECRET_ACCESS_KEY
|
||||
|
||||
DST=`generate_image_path`
|
||||
IMAGE_HASH=`basename $DST`
|
||||
|
Loading…
x
Reference in New Issue
Block a user