From e9b85264ab8d5646bc3fd033e3c0e83d0cf57a93 Mon Sep 17 00:00:00 2001 From: Giuseppe Lavagetto Date: Sun, 5 Jan 2014 11:30:11 +0100 Subject: [PATCH] docs(clients-matrix.md): Introducing the library features matrix. As support for etcd features is very uneven between different clients, a feature matrix can help application developers to understand what a client library can offer them, and also help client libraries developers to understand what they should work on. I assessed the features of all client libraries by looking at their master branch on github, to the best of my knowledge. --- Documentation/clients-matrix.md | 46 ++++++++++++++++++++++++++++ Documentation/libraries-and-tools.md | 4 +-- 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 Documentation/clients-matrix.md diff --git a/Documentation/clients-matrix.md b/Documentation/clients-matrix.md new file mode 100644 index 000000000..c59f033ff --- /dev/null +++ b/Documentation/clients-matrix.md @@ -0,0 +1,46 @@ +# Client libraries support matrix for etcd + +As etcd features support is really uneven between client libraries, a compatibility matrix can be important. +We will consider in detail only the features of clients supporting the v2 API. Clients still supporting the v1 API *only* are listed below. + +## v1-only clients + +Clients supporting only the API version 1 + +- [justinsb/jetcd](https://github.com/justinsb/jetcd) Java +- [transitorykris/etcd-py](https://github.com/transitorykris/etcd-py) Python +- [russellhaering/txetcd](https://github.com/russellhaering/txetcd) Python +- [iconara/etcd-rb](https://github.com/iconara/etcd-rb) Ruby +- [jpfuentes2/etcd-ruby](https://github.com/jpfuentes2/etcd-ruby) Ruby +- [aterreno/etcd-clojure](https://github.com/aterreno/etcd-clojure) Clojure +- [marshall-lee/etcd.erl](https://github.com/marshall-lee/etcd.erl) Erlang + + +## v2 clients + +The v2 API has a lot of features, we will categorize them in a few categories: + +- **HTTPS Auth**: Support for SSL-certificate based authentication +- **Reconnect**: If the client is able to reconnect automatically to another server if one fails. +- **Mod/Lock**: Support for the locking module +- **Mod/Leader**: Support for the leader election module +- **GET,PUT,POST,DEL Features**: Support for all the modifiers when calling the etcd server with said HTTP method. + + +### Supported features matrix + +| Client| [go-etcd](https://github.com/coreos/go-etcd) | [jetcd](https://github.com/diwakergupta/jetcd) | [python-etcd](https://github.com/jplana/python-etcd) | [node-etcd](https://github.com/stianeikeland/node-etcd) | [nodejs-etcd](https://github.com/lavagetto/nodejs-etcd) | [etcd-ruby](https://github.com/ranjib/etcd-ruby) | [etcd-api](https://github.com/jdarcy/etcd-api) | [cetcd](https://github.com/dwwoelfel/cetcd) | [clj-etcd](https://github.com/rthomas/clj-etcd) | +| --- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | +| **HTTPS Auth** | Y | Y | Y | Y | Y | - | - | - | - | +| **Reconnect** | Y | - | Y | - | - | - | Y | - | - | +| **Mod/Lock** | Y | - | Y | - | - | - | - | - | - | +| **Mod/Leader** | Y | - | - | - | - | - | - | - | - | +| **GET Features** | F | B | F | F | F | F | B | F | G | +| **PUT Features** | F | B | F | F | F | F | G | F | G | +| **POST Features** | F | - | F | - | F | F | - | - | - | +| **DEL Features** | F | B | F | F | F | F | B | G | B | + +**Legend** + +**F**: Full support **G**: Good support **B**: Basic support +**Y**: Feature supported **-**: Feature not supported diff --git a/Documentation/libraries-and-tools.md b/Documentation/libraries-and-tools.md index 83799bd41..5f82a7dd3 100644 --- a/Documentation/libraries-and-tools.md +++ b/Documentation/libraries-and-tools.md @@ -44,6 +44,8 @@ - [marshall-lee/etcd.erl](https://github.com/marshall-lee/etcd.erl) +A detailed recap of client functionalities can be found in the [clients compatibility matrix][clients-matrix.md]. + **Chef Integration** - [coderanger/etcd-chef](https://github.com/coderanger/etcd-chef) @@ -69,5 +71,3 @@ - [mattn/etcdenv](https://github.com/mattn/etcdenv) - "env" shebang with etcd integration - [kelseyhightower/confd](https://github.com/kelseyhightower/confd) - Manage local app config files using templates and data from etcd - [configdb](https://git.autistici.org/ai/configdb/tree/master) - A REST relational abstraction on top of arbitrary database backends, aimed at storing configs and inventories. - -