Overview
This issue tracks the remaining work needed to fully implement the object_store trait in OpenDAL's integration layer. While the core functionality is working, several methods return NotSupported errors and some implementations could be enhanced.
Current Status
✅ Implemented
put_opts with full PutMode support (Overwrite, Create, Update)
put_multipart (basic implementation)
get_opts with GetOptions support (range, conditionals, version)
delete
list, list_with_offset, list_with_delimiter
MultipartUpload trait
- Error mapping between OpenDAL and object_store
- Amazon S3 builder support
❌ Not Implemented
The following methods currently return NotSupported errors:
-
put_multipart_opts (store.rs:165)
- Required for advanced multipart upload options
- Currently returns: "put_multipart_opts is not implemented so far"
-
copy (store.rs:248)
- Server-side copy operation
- Currently returns: "copy is not implemented so far"
-
rename (store.rs:255)
- Server-side rename operation
- Currently returns: "rename is not implemented so far"
-
copy_if_not_exists (store.rs:262)
- Conditional server-side copy
- Currently returns: "copy_if_not_exists is not implemented so far"
⚠️ Incomplete Implementations
-
PutResult metadata
- Always returns
e_tag: None, version: None
- Should return actual ETag and version when available from backend
-
GetResult attributes
- Always returns
Default::default() for attributes
- Should include object metadata/attributes from backend
-
Test coverage
- Missing behavior tests for list operations
- No tests for
list_with_delimiter and list_with_offset
Tasks
High Priority
Medium Priority
Low Priority
Implementation Notes
-
Copy/Rename Operations: Check if OpenDAL's backend supports native copy/rename. If not, consider fallback to client-side implementation with appropriate warnings.
-
ETag/Version Support: Different backends have varying support for ETags and versioning. Implementation should gracefully handle backends that don't support these features.
-
Attributes Mapping: Need to define how OpenDAL's metadata maps to object_store's attributes.
References
Acceptance Criteria
- All object_store trait methods return meaningful results instead of
NotSupported
- Metadata (ETag, version, attributes) is properly populated when available
- Comprehensive test coverage for all implemented methods
- Documentation clearly states any limitations or backend-specific behavior
Overview
This issue tracks the remaining work needed to fully implement the
object_storetrait in OpenDAL's integration layer. While the core functionality is working, several methods returnNotSupportederrors and some implementations could be enhanced.Current Status
✅ Implemented
put_optswith full PutMode support (Overwrite, Create, Update)put_multipart(basic implementation)get_optswith GetOptions support (range, conditionals, version)deletelist,list_with_offset,list_with_delimiterMultipartUploadtrait❌ Not Implemented
The following methods currently return
NotSupportederrors:put_multipart_opts(store.rs:165)copy(store.rs:248)rename(store.rs:255)copy_if_not_exists(store.rs:262)PutResult metadata
e_tag: None, version: NoneGetResult attributes
Default::default()for attributesTest coverage
list_with_delimiterandlist_with_offsetTasks
High Priority
copymethod using OpenDAL's copy operationrenamemethod using OpenDAL's rename operationPutResultwhen availablePutResultwhen backend supports versioningMedium Priority
put_multipart_optswith proper options handlingcopy_if_not_existswith conditional logicGetResult.attributeswith object metadataLow Priority
Implementation Notes
Copy/Rename Operations: Check if OpenDAL's backend supports native copy/rename. If not, consider fallback to client-side implementation with appropriate warnings.
ETag/Version Support: Different backends have varying support for ETags and versioning. Implementation should gracefully handle backends that don't support these features.
Attributes Mapping: Need to define how OpenDAL's metadata maps to object_store's attributes.
References
Acceptance Criteria
NotSupported