s3api: Implement object versioning API
Translate AWS S3 Object Versioning API requests to native Swift Object Versioning API, speficially: * bucket versioning status * bucket versioned objects listing params * object GETorHEAD & DELETE versionId * multi_delete versionId Change-Id: I8296681b61996e073b3ba12ad46f99042dc15c37 Co-Authored-By: Tim Burke <tim.burke@gmail.com> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
This commit is contained in:
27 changed files with 2737 additions and 415 deletions
@@ -91,23 +91,16 @@ ceph_s3:
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_and_remove:{status:KNOWN}
s3tests.functional.test_s3.test_versioned_concurrent_object_create_concurrent_remove:{status:KNOWN}
s3tests.functional.test_s3.test_versioned_object_acl:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_bucket_create_suspend:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_copy_obj_version:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_multi_object_delete:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_multi_object_delete_with_marker:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_multi_object_delete_with_marker_create:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_create_overwrite_multipart:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_create_read_remove:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_create_read_remove_head:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_create_versions_remove_all:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_create_versions_remove_special_names:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_list_marker:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_plain_null_version_overwrite:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_plain_null_version_overwrite_suspended:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_plain_null_version_removal:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_suspend_versions:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_suspend_versions_simple:{status:KNOWN}
s3tests.functional.test_s3_website.check_can_test_website:{status:KNOWN}
@@ -177,9 +170,6 @@ ceph_s3:
s3tests.functional.test_s3.test_lifecycle_set_multipart:{status:KNOWN}
s3tests.functional.test_s3.test_lifecycle_set_noncurrent:{status:KNOWN}
s3tests.functional.test_s3.test_multipart_copy_invalid_range:{status:KNOWN}
s3tests.functional.test_s3.test_multipart_copy_versioned:{status:KNOWN}
s3tests.functional.test_s3.test_object_copy_versioned_bucket:{status:KNOWN}
s3tests.functional.test_s3.test_object_copy_versioning_multipart_upload:{status:KNOWN}
s3tests.functional.test_s3.test_post_object_empty_conditions:{status:KNOWN}
s3tests.functional.test_s3.test_post_object_tags_anonymous_request:{status:KNOWN}
s3tests.functional.test_s3.test_post_object_tags_authenticated_request:{status:KNOWN}
@@ -1,5 +1,6 @@
ceph_s3:
<nose.suite.ContextSuite context=s3tests.functional>:teardown:{status:KNOWN}
<nose.suite.ContextSuite context=s3tests_boto3.functional>:teardown:{status:KNOWN}
<nose.suite.ContextSuite context=test_routing_generator>:setup:{status:KNOWN}
s3tests.functional.test_headers.test_bucket_create_bad_authorization_invalid_aws2:{status:KNOWN}
s3tests.functional.test_headers.test_bucket_create_bad_authorization_none:{status:KNOWN}
@@ -45,7 +46,6 @@ ceph_s3:
s3tests.functional.test_s3.test_append_object_position_wrong:{status:KNOWN}
s3tests.functional.test_s3.test_append_normal_object:{status:KNOWN}
s3tests.functional.test_s3.test_append_object:{status:KNOWN}
s3tests.functional.test_s3.test_versioning_obj_read_not_exist_null:{status:KNOWN}
s3tests_boto3.functional.test_headers.test_bucket_create_bad_authorization_empty:{status:KNOWN}
s3tests_boto3.functional.test_headers.test_bucket_create_bad_authorization_invalid_aws2:{status:KNOWN}
s3tests_boto3.functional.test_headers.test_bucket_create_bad_authorization_none:{status:KNOWN}
@@ -151,16 +151,12 @@ ceph_s3:
s3tests_boto3.functional.test_s3.test_list_buckets_invalid_auth:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_logging_toggle:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_multipart_copy_invalid_range:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_multipart_copy_versioned:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_multipart_resend_first_finishes_last:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_multipart_upload:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_multipart_upload_empty:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_acl_canned_bucketownerread:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_anon_put:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_anon_put_write_access:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_copy_versioned_bucket:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_copy_versioned_url_encoding:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_copy_versioning_multipart_upload:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_delete_key_bucket_gone:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_header_acl_grants:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_object_lock_delete_object_with_legal_hold_off:{status:KNOWN}
@@ -265,24 +261,6 @@ ceph_s3:
s3tests_boto3.functional.test_s3.test_sse_kms_transfer_1MB:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_sse_kms_transfer_1b:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_sse_kms_transfer_1kb:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioned_concurrent_object_create_and_remove:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioned_concurrent_object_create_concurrent_remove:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioned_object_acl:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioned_object_acl_no_version_specified:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_bucket_atomic_upload_return_version_id:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_bucket_create_suspend:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_bucket_multipart_upload_return_version_id:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_copy_obj_version:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_multi_object_delete:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_multi_object_delete_with_marker:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_multi_object_delete_with_marker_create:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_create_overwrite_multipart:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_create_read_remove:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_create_read_remove_head:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_create_versions_remove_all:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_create_versions_remove_special_names:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_list_marker:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_plain_null_version_overwrite:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_plain_null_version_overwrite_suspended:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_plain_null_version_removal:{status:KNOWN}
s3tests_boto3.functional.test_s3.test_versioning_obj_suspend_versions:{status:KNOWN}
@@ -62,7 +62,7 @@ Amazon S3 operations
+------------------------------------------------+------------------+--------------+
| `Object tagging`_ | Core-API | Yes |
+------------------------------------------------+------------------+--------------+
| `Versioning`_ | Versioning | No |
| `Versioning`_ | Versioning | Yes |
+------------------------------------------------+------------------+--------------+
| `Bucket notification`_ | Notifications | No |
+------------------------------------------------+------------------+--------------+
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.