Merge "Support x-amz-meta-* for Initiate Multipart Upload"
This commit is contained in:
@@ -64,17 +64,22 @@ DEFAULT_MAX_UPLOADS = 1000
|
||||
MAX_COMPLETE_UPLOAD_BODY_SIZE = 2048 * 1024
|
||||
|
||||
|
||||
def _check_upload_info(req, app, upload_id):
|
||||
def _get_upload_info(req, app, upload_id):
|
||||
|
||||
container = req.container_name + MULTIUPLOAD_SUFFIX
|
||||
obj = '%s/%s' % (req.object_name, upload_id)
|
||||
|
||||
try:
|
||||
req.get_response(app, 'HEAD', container=container, obj=obj)
|
||||
return req.get_response(app, 'HEAD', container=container, obj=obj)
|
||||
except NoSuchKey:
|
||||
raise NoSuchUpload(upload_id=upload_id)
|
||||
|
||||
|
||||
def _check_upload_info(req, app, upload_id):
|
||||
|
||||
_get_upload_info(req, app, upload_id)
|
||||
|
||||
|
||||
class PartController(Controller):
|
||||
"""
|
||||
Handles the following APIs:
|
||||
@@ -402,7 +407,12 @@ class UploadController(Controller):
|
||||
Handles Complete Multipart Upload.
|
||||
"""
|
||||
upload_id = req.params['uploadId']
|
||||
_check_upload_info(req, self.app, upload_id)
|
||||
resp = _get_upload_info(req, self.app, upload_id)
|
||||
headers = {}
|
||||
for key, val in resp.headers.iteritems():
|
||||
_key = key.lower()
|
||||
if _key.startswith('x-amz-meta-'):
|
||||
headers['x-object-meta-' + _key[11:]] = val
|
||||
|
||||
# Query for the objects in the segments area to make sure it completed
|
||||
query = {
|
||||
@@ -454,7 +464,8 @@ class UploadController(Controller):
|
||||
try:
|
||||
# TODO: add support for versioning
|
||||
resp = req.get_response(self.app, 'PUT', body=dumps(manifest),
|
||||
query={'multipart-manifest': 'put'})
|
||||
query={'multipart-manifest': 'put'},
|
||||
headers=headers)
|
||||
except BadSwiftRequest as e:
|
||||
msg = str(e)
|
||||
if msg.startswith('Each segment, except the last, '
|
||||
|
||||
Reference in New Issue
Block a user