-
Notifications
You must be signed in to change notification settings - Fork 499
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
Plugin architecture for storages #1110
Comments
Another alternative would be is to provide an HTTP interface to storages, almost an extension of the download protocol. And also we can look at how K8s does plugin extensions |
I've implemented an My intention is to open an proposal issue and then a PR, though I've been held up somewhat (internal review by my employer). However that's nearly resolved—barring any surprises I expect to do that this week. |
@tylerchr so awesome! Looking forward to this I'm +1 on this over the Go plugin interface, so that folks can build storage interfaces and have flexibility to run them either on |
I opened #1130 (issue describing my needs) and #1131 (prototype implementation of an HTTP storage type). Would be interested to hear your thoughts (@marpio, @marwan-at-work) especially since you're coming from the "storage plugins" angle which I hadn't initially considered. |
Missed this when it was first discussed, but there's an option to use https://github.com/hashicorp/go-plugin and define a gRPC service as the interface. Then, storage plugins can be created and maintained in a separate repo, so long as they fulfill the service definition. |
@Kunde21 the readme says:
Is that outdated? |
@marwan-at-work the readme kind of buries the gRPC option:
|
Is everyone ok with sticking with HTTP for now? It's less specification work for us because we can use the module download protocol we all know and love already. More conversation at #1131 (comment) and #1110 (comment) |
Is your feature request related to a problem? Please describe.
There are still interesting storage options which we do not support i.e. B2. We cannot possibly support all storages in our code base but we can make it possible for the user to provide one i.e. through https://golang.org/pkg/plugin/
Describe alternatives you've considered
Implementing them like we do now but it will make the maintenance difficult.
cc: @marwan-at-work since you mentioned that on slack
The text was updated successfully, but these errors were encountered: