s3api: Allow PUT with if-none-match: *

Swift already supports that much, at least. AWS used to not support any
conditional PUTs, but that's changed somewhat recently; see

- https://aws.amazon.com/about-aws/whats-new/2024/08/amazon-s3-conditional-writes/
- https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-s3-functionality-conditional-writes/

Drive-By: Fix retry of a CompleteMultipartUpload with changed parts; it
should 404 rather than succeed in writing the new manifest.

Change-Id: I2e57dacb342b5758f16b502bb91372a2443d0182
This commit is contained in:
Tim Burke
2025-05-13 13:00:26 -07:00
parent 6212869399
commit edd5eb29d7
8 changed files with 246 additions and 33 deletions

View File

@@ -87,8 +87,6 @@ ceph_s3:
s3tests.functional.test_s3.test_put_object_ifmatch_overwrite_existed_good: {status: KNOWN}
s3tests.functional.test_s3.test_put_object_ifnonmatch_failed: {status: KNOWN}
s3tests.functional.test_s3.test_put_object_ifnonmatch_good: {status: KNOWN}
s3tests.functional.test_s3.test_put_object_ifnonmatch_nonexisted_good: {status: KNOWN}
s3tests.functional.test_s3.test_put_object_ifnonmatch_overwrite_existed_failed: {status: KNOWN}
s3tests.functional.test_s3.test_set_cors: {status: KNOWN}
s3tests.functional.test_s3.test_stress_bucket_acls_changes: {status: KNOWN}
s3tests.functional.test_s3.test_versioned_concurrent_object_create_concurrent_remove: {status: KNOWN}

View File

@@ -234,8 +234,6 @@ ceph_s3:
s3tests_boto3.functional.test_s3.test_put_object_ifmatch_overwrite_existed_good: {status: KNOWN}
s3tests_boto3.functional.test_s3.test_put_object_ifnonmatch_failed: {status: KNOWN}
s3tests_boto3.functional.test_s3.test_put_object_ifnonmatch_good: {status: KNOWN}
s3tests_boto3.functional.test_s3.test_put_object_ifnonmatch_nonexisted_good: {status: KNOWN}
s3tests_boto3.functional.test_s3.test_put_object_ifnonmatch_overwrite_existed_failed: {status: KNOWN}
s3tests_boto3.functional.test_s3.test_put_tags_acl_public: {status: KNOWN}
s3tests_boto3.functional.test_s3.test_set_cors: {status: KNOWN}
s3tests_boto3.functional.test_s3.test_set_tagging: {status: KNOWN}