Fix List Multipart Uploads to get multipart uploads contain slash in key
Fix filter_max_uploads to get multipart uploads contain slash(/) in key(object name), such as X/Y/Z. Change-Id: I478d8a001708eed50114156c4b0ca06d45798fd7
This commit is contained in:
parent
557c3348fa
commit
771453c60d
@ -43,8 +43,9 @@ upload information:
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
from swift.common.utils import split_path, json
|
||||
from swift.common.utils import json
|
||||
|
||||
from swift3.controllers.base import Controller, bucket_operation, \
|
||||
object_operation
|
||||
@ -140,9 +141,13 @@ class UploadsController(Controller):
|
||||
"""
|
||||
Handles List Multipart Uploads
|
||||
"""
|
||||
pattern = re.compile('/[0-9]+$')
|
||||
|
||||
def filter_max_uploads(o):
|
||||
name = o.get('name', '')
|
||||
return name.count('/') == 1
|
||||
if 'name' not in o:
|
||||
return False
|
||||
else:
|
||||
return pattern.search(o['name']) is None
|
||||
|
||||
encoding_type = req.params.get('encoding-type')
|
||||
if encoding_type is not None and encoding_type != 'url':
|
||||
@ -183,7 +188,7 @@ class UploadsController(Controller):
|
||||
uploads = []
|
||||
prefixes = []
|
||||
for o in objects:
|
||||
obj, upid = split_path('/' + o['name'], 1, 2)
|
||||
obj, upid = o['name'].rsplit('/', 1)
|
||||
uploads.append(
|
||||
{'key': obj,
|
||||
'upload_id': upid,
|
||||
|
@ -53,7 +53,10 @@ multiparts_template = \
|
||||
('object/Y/2', '2014-05-07T19:47:55.592270', 'HASH', 22),
|
||||
('object/Z', '2014-05-07T19:47:56.592270', 'HASH', 3),
|
||||
('object/Z/1', '2014-05-07T19:47:57.592270', 'HASH', 13),
|
||||
('object/Z/2', '2014-05-07T19:47:58.592270', 'HASH', 23))
|
||||
('object/Z/2', '2014-05-07T19:47:58.592270', 'HASH', 23),
|
||||
('subdir/object/Z', '2014-05-07T19:47:58.592270', 'HASH', 4),
|
||||
('subdir/object/Z/1', '2014-05-07T19:47:58.592270', 'HASH', 41),
|
||||
('subdir/object/Z/2', '2014-05-07T19:47:58.592270', 'HASH', 41))
|
||||
|
||||
|
||||
class TestSwift3MultiUpload(Swift3TestCase):
|
||||
@ -192,7 +195,7 @@ class TestSwift3MultiUpload(Swift3TestCase):
|
||||
self.assertEquals(elem.find('NextUploadIdMarker').text, 'Z')
|
||||
self.assertEquals(elem.find('MaxUploads').text, '1000')
|
||||
self.assertEquals(elem.find('IsTruncated').text, 'false')
|
||||
self.assertEquals(len(elem.findall('Upload')), 3)
|
||||
self.assertEquals(len(elem.findall('Upload')), 4)
|
||||
objects = [(o[0], o[1][:-3] + 'Z') for o in multiparts_template]
|
||||
for u in elem.findall('Upload'):
|
||||
name = u.find('Key').text + '/' + u.find('UploadId').text
|
||||
|
Loading…
x
Reference in New Issue
Block a user