feat(providers): add managed S3 backend protocol + minIO support#144
feat(providers): add managed S3 backend protocol + minIO support#144bherila wants to merge 4 commits into
Conversation
(cherry picked from commit 59f78ec)
from_parameters used as_str() which silently fell back to the rustfs default when "backend" was present but not a string (e.g. a number or object). Reject present-but-non-string values explicitly while still treating absent/null as the default, so malformed backend selections surface an error instead of being reinterpreted. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> (cherry picked from commit 966899b)
29aa2d6 to
65e5bac
Compare
… exists Mirror of the fork-side fix: an S3/Blob service created with backend: garage (plus a provider_socket) passed validation but was still provisioned as RustFS, since create_service_instance maps both S3 and Blob to RustfsService and nothing dispatches to the out-of-process provider. Reject Garage at creation time until that path is wired up rather than silently misrepresenting what was provisioned. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Follow-up fix — reject managed Garage backend until provider dispatch exists
Test resultsRan on a self-hosted runner ( |
|
Thanks for the PR! MinIO also needs to be supported even though is deprecated, could you add it? |
|
Yeah I can add MinIO. Separate PR for that or want it in here? |
|
MinIO added here |
Motivation
rustfsas the default managed object-storage backend while allowing S3-compatible backend selectors forgarageandminio.Description
crates/temps-providers/src/externalsvc/managed_s3.rswithManagedS3BackendKind,ManagedS3BackendSelection, request/response DTOs, and theManagedS3Backendtrait.temps-providers.backendselector to manageds3parameters with out-of-box choicesrustfs(default),garage, andminio.s3services withbackend=miniothrough the existing MinIO-compatible service implementation while keeping the stored service type ass3.garageat service creation until out-of-process provider dispatch is wired, avoiding silently provisioning RustFS under a Garage label.backendvalues defaulting torustfs, while rejecting present-but-non-string backend values instead of silently treating malformed input as the default.Stack hygiene
mainand is independent of the existing MariaDB PR (Add opt-in MariaDB-compatible services #138).Testing
cargo fmt --checkcargo test --lib -p temps-providers managed_s3cargo check --lib -p temps-providersValidated on
tempsdev1(Amazon Linux 2023, cargo 1.95.0).