-
Notifications
You must be signed in to change notification settings - Fork 517
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Add wasabi service implementation #2004
Conversation
Hi, this PR seems include some not related changes which makes it hard to review. Can you rebase with main branch first? |
|
Done. |
Well, either I can help split |
I prefer not to add new APIs. |
Ok, then perhaps I'll reuse |
Not needed, we already have |
hmm...the Let me update PR for better explanation. |
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This's true, service may have different ways to implement current
However, this way violates our VISION which makes users have to know whether a service supports We just need to choose a method for implementing the |
Well, if we don't need support I pushed new changes, feel free to take a look, make sure I'm on the correct direction :P |
Thank you very much for your understanding and patience! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot! This PR LGTM now! The only thing left is to make our CI happy.
We can create a separate pull request to update our documentation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your great work!
This PR is for #1837
Changes include:
append
inOperator
struct. And accordingly, we added a stub inAccessor
trait. This new interface caused cascading update for allLayeredAccessor
, so changed all of them at one time.OpAppend
andRpAppend
struct for request setting and response result, respectively.wasabi
module, and since wasabi is a S3 compatible service, so I borrowed most of logic directly from S3 implementation, with two more functionality added:rename
&append
, which means:WasabiError
resemblesS3Error
WasabiPager
resemblesS3Pager
WasabiBuilder
resemblesS3Builder
WasabiBackend
resemblesS3Backend
except thatAccessor::rename
andAccessor::append
interfacesWasabiCore
resemblesS3Core
except thatrename_object
to integrate wasabi rename API (doc here). As discussed, we only consider file renaming for now.append_object
to integrate wasabi append API (doc here).initiate_multipart_upload
does, we've got error. So current append implementation is one single step operation.WasabiWriter
resemblesS3Writer
except thatOpAppend
as struct field alsowrite
method, we differentiateappend
frommultipart upload
byOpAppend.enabled
flag. Based on this flag,write
will apply different methods fromWasabiCore
.