For what it's worth, I am writing a python client for etcd3 (soon to be
released in pre-alpha shape) and I used the following proto files to
autogenerate the grpc wire protocol python classes:
etcdserver/etcdserverpb/rpc.proto
auth/authpb/auth.proto
mvcc/mvccpb/kv.proto
starting from those and the dependencies therein you can have grpc
autogenerate the basic classes for you.
I am still having some issues with getting auth working in python (I can
authenticate and get a token, but I can't seem to authenticate
subsequent requests) but more on that in a later email.
What we should stress more is that there is a lot of behaviour of the
etcd version 3 api that I have either to figure out by trial and error
or by reading the client/server go code; I don't think production
software can be so sparse in information about the details of its API.
(Take as an example leases or transaction: read the existing docs and
tell me if you would have an idea of how to use either correctly without
further investigation).
Also, error returns are completely undocumented, and that is a nightmare
as one has to reverse-engineer the failure states for each kind of
event. Using gRPC in the middle just fuzzies things up more as it's a
huge black box you're relying onto.
I think there is a *lot* of work to do in order to have casual
third-party developers feel at ease with this API, and I am trying to
abstract a little on top of it in the Python library to make user's
lifes easier.
I am planning to write an email with a few questions to etcd devs
whenever I have time (I am doing this on my free time) asking for more
details.
Thanks,
joe