Coder Social home page Coder Social logo

Support for etcd3 about rust-etcd HOT 16 OPEN

jimmycuadra avatar jimmycuadra commented on June 11, 2024
Support for etcd3

from rust-etcd.

Comments (16)

tmccombs avatar tmccombs commented on June 11, 2024 4

I would be happy to help implement this.

from rust-etcd.

tmccombs avatar tmccombs commented on June 11, 2024 3

https://github.com/jimmycuadra/rust-etcd/pull/25/files

done

from rust-etcd.

jimmycuadra avatar jimmycuadra commented on June 11, 2024 1

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.

from rust-etcd.

jimmycuadra avatar jimmycuadra commented on June 11, 2024

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.

from rust-etcd.

jmlMetaswitch avatar jmlMetaswitch commented on June 11, 2024

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!

from rust-etcd.

VoyTechnology avatar VoyTechnology commented on June 11, 2024

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.

from rust-etcd.

jimmycuadra avatar jimmycuadra commented on June 11, 2024

PRs most welcome! Which approach to gRPC in Rust do you all think is best these days?

from rust-etcd.

tmccombs avatar tmccombs commented on June 11, 2024

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.

from rust-etcd.

tmccombs avatar tmccombs commented on June 11, 2024

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.

from rust-etcd.

thedodd avatar thedodd commented on June 11, 2024

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.

  • We can just create a proto directory in this repo with all of the needed protos.
  • Introduce a build.rs which will generate the Rust code from the protos for us.
  • Then we just build out the interface on top of that, nest it under a v3 module or something like that (as proposed above).

I am definitely interested in being able to use the transaction system & leases.

from rust-etcd.

tmccombs avatar tmccombs commented on June 11, 2024

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

from rust-etcd.

thedodd avatar thedodd commented on June 11, 2024

Awesome. Happy to take a look. Are you planning on opening a PR for it against this repo??

from rust-etcd.

thehappycoder avatar thehappycoder commented on June 11, 2024

I am new to etcd. Can't we just call etcd-3 via HTTP requests?

from rust-etcd.

tmccombs avatar tmccombs commented on June 11, 2024

etcd-3 uses GRPC, which does use HTTP, but it uses HTTP/2 instead of HTTP/1.1 and protobufs instead of json.

from rust-etcd.

thehappycoder avatar thehappycoder commented on June 11, 2024

In case if it's going to help, I found some code:
https://github.com/angelrain1/grpc_etcd
https://github.com/ccc13/etcd-rs

from rust-etcd.

iwinux avatar iwinux commented on June 11, 2024

In additions to gRPC, etcd v3 also provides a JSON gRPC gateway.

from rust-etcd.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.