summaryrefslogtreecommitdiff
path: root/swift/common/middleware/s3api/s3request.py
diff options
context:
space:
mode:
authorindianwhocodes <nairashwin952013@gmail.com>2022-11-16 12:03:07 -0800
committerTim Burke <tim.burke@gmail.com>2022-12-01 13:21:01 -0800
commitd363236a245ed9112c19fdd5df5fff31fa24b865 (patch)
tree6162ecbf249f534d95847a56ff718740322a4a63 /swift/common/middleware/s3api/s3request.py
parent38124221d7bbce8459fd544a15fb5e57dfc7213e (diff)
downloadswift-d363236a245ed9112c19fdd5df5fff31fa24b865.tar.gz
s3api errors for unsupported headers x-delete-at, x-delete-after
We need to support the aforementioned headers in our s3 apis and raise an InvalidArgumentError if a s3 client makes a request Change-Id: I2c5b18e52da7f33b31ba386cdbd042f90b69ef97
Diffstat (limited to 'swift/common/middleware/s3api/s3request.py')
-rw-r--r--swift/common/middleware/s3api/s3request.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/swift/common/middleware/s3api/s3request.py b/swift/common/middleware/s3api/s3request.py
index 6f8963b5f..19a8304e1 100644
--- a/swift/common/middleware/s3api/s3request.py
+++ b/swift/common/middleware/s3api/s3request.py
@@ -57,8 +57,7 @@ from swift.common.middleware.s3api.s3response import AccessDenied, \
MalformedXML, InvalidRequest, RequestTimeout, InvalidBucketName, \
BadDigest, AuthorizationHeaderMalformed, SlowDown, \
AuthorizationQueryParametersError, ServiceUnavailable, BrokenMPU
-from swift.common.middleware.s3api.exception import NotS3Request, \
- BadSwiftRequest
+from swift.common.middleware.s3api.exception import NotS3Request
from swift.common.middleware.s3api.utils import utf8encode, \
S3Timestamp, mktime, MULTIUPLOAD_SUFFIX
from swift.common.middleware.s3api.subresource import decode_acl, encode_acl
@@ -642,7 +641,7 @@ class S3Request(swob.Request):
bucket, self.conf.dns_compliant_bucket_names):
# Ignore GET service case
raise InvalidBucketName(bucket)
- return (bucket, obj)
+ return bucket, obj
def _parse_query_authentication(self):
"""
@@ -779,7 +778,6 @@ class S3Request(swob.Request):
raise InvalidArgument('x-amz-copy-source',
self.headers['X-Amz-Copy-Source'],
msg)
-
if 'x-amz-metadata-directive' in self.headers:
value = self.headers['x-amz-metadata-directive']
if value not in ('COPY', 'REPLACE'):
@@ -1399,7 +1397,17 @@ class S3Request(swob.Request):
raise err_resp()
if status == HTTP_BAD_REQUEST:
- raise BadSwiftRequest(err_msg.decode('utf8'))
+ err_str = err_msg.decode('utf8')
+ if 'X-Delete-At' in err_str:
+ raise InvalidArgument('X-Delete-At',
+ self.headers['X-Delete-At'],
+ err_str)
+ if 'X-Delete-After' in err_msg.decode('utf8'):
+ raise InvalidArgument('X-Delete-After',
+ self.headers['X-Delete-After'],
+ err_str)
+ else:
+ raise InvalidRequest(msg=err_str)
if status == HTTP_UNAUTHORIZED:
raise SignatureDoesNotMatch(
**self.signature_does_not_match_kwargs())