Status
The first implementation has landed. It added a shared CapabilityOverrideLayer, wired OPENDAL_TEST_CAPABILITY_OVERRIDES into the behavior test harnesses, and migrated S3 test setups for versioning, append, and write-if-match coverage.
The current service migration pass has landed for S3, OSS, COS, TOS, OneDrive, OBS, Azblob, WebDAV, HDFS, and HDFS Native. A follow-up repo-wide scan found one remaining capability-only config candidate: SFTP enable_copy only gates Capability::copy, while the copy implementation itself does not read the flag.
Implementation tasks
Service migration candidates
S3
OSS
COS
TOS
OneDrive
OBS
Azblob
WebDAV
HDFS and HDFS Native
SFTP
Not migration targets from this scan
These fields affect real request construction, credential loading, auth mode, or protocol strategy rather than only capability-based test selection, so they should not be migrated as part of RFC-6707 without a separate design:
- S3/COS/TOS/GCS credential/config loading switches such as
disable_config_load and metadata-service switches.
- S3
disable_list_objects_v2, because it changes the list API version used by requests.
- S3
enable_virtual_host_style and enable_request_payer, because they affect request addressing and headers.
- Azblob
sas_token based presign capabilities, because they derive from the selected auth mode.
- HF token-gated write/delete capabilities, because they derive from whether write credentials are configured.
- HTTP anonymous presign capabilities, because they derive from whether auth is configured.
- WebDAV
disable_create_dir, because it changes write behavior by skipping automatic parent directory creation.
- WebHDFS
disable_list_batch, because it changes the listing strategy.
- WebHDFS
atomic_write_dir, because it enables multi-write by changing the temporary write path strategy.
- WebDAV metadata namespace options, because they affect PROPFIND/PROPPATCH request payloads.
Follow-ups
origin/mainata21e9b85fbStatus
The first implementation has landed. It added a shared
CapabilityOverrideLayer, wiredOPENDAL_TEST_CAPABILITY_OVERRIDESinto the behavior test harnesses, and migrated S3 test setups for versioning, append, and write-if-match coverage.The current service migration pass has landed for S3, OSS, COS, TOS, OneDrive, OBS, Azblob, WebDAV, HDFS, and HDFS Native. A follow-up repo-wide scan found one remaining capability-only config candidate: SFTP
enable_copyonly gatesCapability::copy, while the copy implementation itself does not read the flag.Implementation tasks
CapabilityOverrideLayerand expose it from Rustopendal::layers(feat(core): add capability override layer #7520)stat_with_version=false,delete_max_size=700(feat(core): add capability override layer #7520)OPENDAL_TEST_CAPABILITY_OVERRIDESinto Rust behavior tests via testkit (feat(core): add capability override layer #7520)Service migration candidates
S3
OPENDAL_TEST_CAPABILITY_OVERRIDES(feat(core): add capability override layer #7520)OPENDAL_TEST_CAPABILITY_OVERRIDES(feat(core): add capability override layer #7520)OPENDAL_TEST_CAPABILITY_OVERRIDES(feat(core): add capability override layer #7520)disable_stat_with_override, which only gates stat override capabilities. (refactor(services/s3): complete capability override migration #7546)delete_max_sizeand the deprecatedbatch_max_operationsalias, which only tuneCapability::delete_max_size. (refactor(services/s3): complete capability override migration #7546)OSS
enable_versioning, which gates versioned stat/read/delete/list capabilities and the relatedwrite_with_if_not_existscapability. (refactor(services/oss): complete capability override migration #7549)delete_max_sizeand the deprecatedbatch_max_operationsalias, which only tuneCapability::delete_max_size. (refactor(services/oss): complete capability override migration #7549)COS
enable_versioning, which gates versioned stat/read/delete/list capabilities and related if-not-exists capabilities. (refactor(services/cos): complete capability override migration #7554)TOS
enable_versioning, which gates read/delete version capabilities andwrite_with_if_not_exists. (refactor(services/tos): remove versioning option #7555)OneDrive
enable_versioning, which gates stat/list version capabilities. (refactor(services/onedrive): deprecate versioning option #7558)OBS
enable_versioning: it existed in config/builder, but current capability declaration did not use it, so it is now a no-op compatibility shim. (refactor(services/obs): deprecate versioning option #7560)Azblob
batch_max_operations: current capability declaration uses the fixedAZBLOB_BATCH_LIMITfordelete_max_size, so the option is now a no-op compatibility shim. (refactor(services/azblob): deprecate batch option #7561)WebDAV
disable_copy, which only gates thecopycapability. (refactor(services/webdav): deprecate capability toggles #7562)enable_user_metadata, which only gateswrite_with_user_metadata; namespace/prefix configuration remains separate because those values affect request construction. (refactor(services/webdav): deprecate capability toggles #7562)write_with_user_metadatain Nextcloud and OwnCloud behavior fixtures because those endpoints do not preserve custom metadata. (fix(ci): disable WebDAV metadata test for Nextcloud and OwnCloud #7565)HDFS and HDFS Native
enable_append, which gateswrite_can_append; HDFS Native write-path behavior now follows capability instead of a private config flag. (refactor(services/hdfs): deprecate append option #7563)SFTP
enable_copy, which only gatesCapability::copy; SFTP copy implementation streams data through the client and does not read this flag. The local SFTP fixture passesbehavior::test_copy_file_with_ascii_namewithoutOPENDAL_SFTP_ENABLE_COPYafter enabling copy by default. (refactor(services/sftp): deprecate copy option #7568).Not migration targets from this scan
These fields affect real request construction, credential loading, auth mode, or protocol strategy rather than only capability-based test selection, so they should not be migrated as part of RFC-6707 without a separate design:
disable_config_loadand metadata-service switches.disable_list_objects_v2, because it changes the list API version used by requests.enable_virtual_host_styleandenable_request_payer, because they affect request addressing and headers.sas_tokenbased presign capabilities, because they derive from the selected auth mode.disable_create_dir, because it changes write behavior by skipping automatic parent directory creation.disable_list_batch, because it changes the listing strategy.atomic_write_dir, because it enables multi-write by changing the temporary write path strategy.Follow-ups
enable_copymigration. (refactor(services/sftp): deprecate copy option #7568)