gaul / s3proxy

Access other storage backends via the S3 API
Apache License 2.0
1.76k stars 229 forks source link

Object versioning #74

Open gaul opened 9 years ago

gaul commented 9 years ago

S3Proxy does not currently support object versioning, triggering many s3-tests failures:

ERROR: s3tests.functional.test_s3.test_versioning_bucket_create_suspend
ERROR: s3tests.functional.test_s3.test_versioning_obj_create_read_remove
ERROR: s3tests.functional.test_s3.test_versioning_obj_create_read_remove_head
ERROR: s3tests.functional.test_s3.test_versioning_obj_suspend_versions
ERROR: s3tests.functional.test_s3.test_versioning_obj_suspend_versions_simple
ERROR: s3tests.functional.test_s3.test_versioning_obj_create_versions_remove_all
ERROR: s3tests.functional.test_s3.test_versioning_obj_create_overwrite_multipart
ERROR: s3tests.functional.test_s3.test_versioning_obj_list_marker
ERROR: s3tests.functional.test_s3.test_versioning_copy_obj_version
ERROR: s3tests.functional.test_s3.test_versioning_multi_object_delete
ERROR: s3tests.functional.test_s3.test_versioning_multi_object_delete_with_marker
ERROR: s3tests.functional.test_s3.test_versioning_multi_object_delete_with_marker_create
ERROR: s3tests.functional.test_s3.test_versioned_object_acl
ERROR: s3tests.functional.test_s3.test_versioned_concurrent_object_create_concurrent_remove
ERROR: s3tests.functional.test_s3.test_versioned_concurrent_object_create_and_remove

Implementing this requires upstream jclouds work tracked by JCLOUDS-895.

jeffcollaboro commented 6 months ago

Hi Andrew, just bumping this. I see you have done quite a bit of work in the JCLouds upstream but it seems to have lost momentum over a few years of being blocked by issues. Wondering your thoughts on dusting this off.

gaul commented 6 months ago

This is a large task and I have no plans to work on this. I don't think jclouds is a good base for the future, instead S3Proxy should use vendor SDKs as suggested in #606 which implements the jclouds BlobStore interface. Then S3Proxy can create and implement an ExtendedBlobStore interface that calls into the versioned APIs when available. Versioning specifically creates some issues since we need the version number in the object metadata.