Open jmlMetaswitch opened 7 years ago
Of course I'd like to support v3, though I hadn't spent any time thinking about it yet. I'm not sure what the state of gRPC in Rust is right now. Last I looked it was in early development, but it's been a while.
I've not done too much investigation yet either, and I'm not sure whether I'll need this, but I'll get back in touch if I think that extending your work is the best bet. Thanks for the swift response!
Adding etcd v3 support would be very nice. Using gRPC with Rust is not too bad. There are a couple of quirks, protobuf manipulation in Rust is not as nice as in Go, but overall its doable.
I would be happy to help implement this.
PRs most welcome! Which approach to gRPC in Rust do you all think is best these days?
would it be better to create a new version that only supports v3, or implement it in a way that supports both v2 and v3? Looking at clients in other languages, it looks like most only support one version of the API for a single version of the library. But that is just from a cursory search.
I'd prefer to leave the existing support for v2. This could be done by nesting API-version-specific items in top level modules called v2
and v3
.
Which approach to gRPC in Rust do you all think is best these days?
I don't know, the grpcio crate seems to be more popular on crates.io, and more active on github, but depends on the grpc-core c library (which could be good since that is standard implemenation, or bad because it requires building a c library and a fair amount of unsafe code). The grpc crate on the other hand is implemented in pure rust using tokio and futures. Another possiblity is using the protobuf crate for serializing/deserializing messages, but then use hyper/h2 directly for the transport. I don't know what the best approach for this is.
@VoyTechnology what are your thoughts? Since it sounds like you might have some experience with grpc in rust.
Hey all, I've used the grpc
create quite a lot, it should definitely work. I was hoping to see tower grpc stabilize by now, but it looks like it has not yet. Which is unfortunate because it has a significantly more simple interface.
I would be happy to help will getting things rolling on this front.
proto
directory in this repo with all of the needed protos.build.rs
which will generate the Rust code from the protos for us.v3
module or something like that (as proposed above).I am definitely interested in being able to use the transaction system & leases.
I created a branch that has the protobuf files in a proto directory (and a script to pull down new versions if/when necessary) at https://github.com/tmccombs/rust-etcd/tree/etcdv3
Awesome. Happy to take a look. Are you planning on opening a PR for it against this repo??
I am new to etcd. Can't we just call etcd-3 via HTTP requests?
etcd-3 uses GRPC, which does use HTTP, but it uses HTTP/2 instead of HTTP/1.1 and protobufs instead of json.
In case if it's going to help, I found some code: https://github.com/angelrain1/grpc_etcd https://github.com/ccc13/etcd-rs
In additions to gRPC, etcd v3 also provides a JSON gRPC gateway.
Do you have plans to support etcd v3, and in particular transactions?