diff --git a/README.md b/README.md index baad81b4..ff2cc446 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ Calls like `WatchTree` may return different events (or number of events) dependi Only `Consul` and `etcd` have support for TLS and you should build and provide your own `config.TLS` object to feed the client. Support is planned for `zookeeper`. -##Roadmap +## Roadmap - Make the API nicer to use (using `options`) - Provide more options (`consistency` for example) @@ -98,10 +98,10 @@ Only `Consul` and `etcd` have support for TLS and you should build and provide y - Better key formatting - New backends? -##Contributing +## Contributing Want to hack on libkv? [Docker's contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) apply. -##Copyright and license +## Copyright and license Copyright © 2014-2016 Docker, Inc. All rights reserved, except as follows. Code is released under the Apache 2.0 license. The README.md file, and files in the "docs" folder are licensed under the Creative Commons Attribution 4.0 International License under the terms and conditions set forth in the file "LICENSE.docs". You may obtain a duplicate copy of the same license, titled CC-BY-SA-4.0, at http://creativecommons.org/licenses/by/4.0/. diff --git a/docs/compatibility.md b/docs/compatibility.md index c4f27e9c..ae38f0e8 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -1,4 +1,4 @@ -#Cross-Backend Compatibility +# Cross-Backend Compatibility The value of `libkv` is not to duplicate the code for programs that should support multiple distributed K/V stores like the classic `Consul`/`etcd`/`zookeeper` trio. @@ -6,7 +6,7 @@ This document provides with general guidelines for users willing to support thos Please note that most of those workarounds are going to disappear in the future with `etcd` APIv3. -##Etcd directory/key distinction +## Etcd directory/key distinction `etcd` with APIv2 makes the distinction between keys and directories. The result with `libkv` is that when using the etcd driver: @@ -17,7 +17,7 @@ This is fundamentaly different than `Consul` and `zookeeper` which are more perm Apiv3 is in the work for `etcd`, which removes this key/directory distinction, but until then you should follow these workarounds to make your `libkv` code work across backends. -###Put +### Put `etcd` cannot put values on directories, so this puts a major restriction compared to `Consul` and `zookeeper`. @@ -32,7 +32,7 @@ _ := kv.Put("path/to/key", []byte("bar"), nil) Will work on `Consul` and `zookeeper` but fail for `etcd`. This is because the first `Put` in the case of `etcd` will recursively create the directory hierarchy and `path/to/key` is now considered as a directory. Thus, values should always be stored on leaves if the support for the three backends is planned. -###WatchTree +### WatchTree When initializing the `WatchTree`, the natural way to do so is through the following code: @@ -63,7 +63,7 @@ events, err := kv.WatchTree(key, nil) The code above will work for the three backends but make sure to not try to store any value at that path as the call to `Put` will fail for `etcd` (you can only put at `path/to/key/foo`, `path/to/key/bar` for example). -##Etcd distributed locking +## Etcd distributed locking There is `Lock` mechanisms baked in the `coreos/etcd/client` for now. Instead, `libkv` has its own implementation of a `Lock` on top of `etcd`. diff --git a/docs/examples.md b/docs/examples.md index 09752db1..c851a9a6 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -1,8 +1,8 @@ -#Examples +# Examples This document contains useful example of usage for `libkv`. It might not be complete but provides with general informations on how to use the client. -##Create a store and use Put/Get/Delete +## Create a store and use Put/Get/Delete ```go package main @@ -62,7 +62,7 @@ func main() { } ``` -##List keys +## List keys ```go // List will list all the keys under `key` if it contains a set of child keys/values @@ -73,7 +73,7 @@ for _, pair := range entries { ``` -##Watching for events on a single key (Watch) +## Watching for events on a single key (Watch) You can use watches to watch modifications on a key. First you need to check if the key exists. If this is not the case, we need to create it using the `Put` function. @@ -97,7 +97,7 @@ select { ``` -##Watching for events happening on child keys (WatchTree) +## Watching for events happening on child keys (WatchTree) You can use watches to watch modifications on a key. First you need to check if the key exists. If this is not the case, we need to create it using the `Put` function. There is a special step here though if you want your code to work across backends. Because `etcd` is a special case and it makes the distinction between directories and keys, we need to make sure that the created key is considered as a directory by enforcing `IsDir` at `true`.