Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix to markdown parsing issues mentioned in tic… #163

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,18 +90,18 @@ 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)
- Improve performance (remove extras `Get`/`List` operations)
- 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/.
10 changes: 5 additions & 5 deletions docs/compatibility.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#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.

This document provides with general guidelines for users willing to support those backends with the same code using `libkv`.

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:

Expand All @@ -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`.

Expand All @@ -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:

Expand Down Expand Up @@ -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`.

Expand Down
10 changes: 5 additions & 5 deletions docs/examples.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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.

Expand All @@ -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`.

Expand Down