open-consul/api
James Bardin 96ae8c1231 accept recv-only channels for cancellations (#3271)
Cancellation channels are often derived from a Context, which
returns a directional `<-chan struct{}` from Done(). In order to use
this with parts of of the consul API, one is required to create a new
channel and dispatch a separate goroutine to watch for context
cancellation and close the new channel.

Changing the signature for the methods that take cancellation channels
will allow easier integration with existing uses of Context. Since the
cancellation pattern only reads from these channels, there should be no
backwards incompatibility with existing codebases, and most of the
methods already accept only the correct type.
2017-07-14 16:31:44 -07:00
..
acl.go Tweaks ACL replication struct name. 2017-04-25 16:32:09 -07:00
acl_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
agent.go accept recv-only channels for cancellations (#3271) 2017-07-14 16:31:44 -07:00
agent_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
api.go Fix socket file handle leaks from old blocking queries upon consul reload. This fixes issue #3018 2017-06-26 15:52:03 -05:00
api_test.go api: refactor: prefix all API tests with API_ 2017-07-07 09:22:34 +02:00
catalog.go Add datacenter to catalog node API (#2917) 2017-04-18 05:02:24 -07:00
catalog_test.go api: fix TestAPI_CatalogNodes test 2017-07-07 09:22:34 +02:00
coordinate.go Adds router into RPC paths with work in progress on coordinates. 2017-03-16 16:42:18 -07:00
coordinate_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
event.go Revert "fixed: body not closed for non HTTP 200 responses" 2015-01-19 11:51:51 +09:00
event_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
health.go api: Add ServiceTags to Health state endpoint (#153) 2017-04-28 15:00:08 -07:00
health_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
kv.go Issue #2905: Add check-not-exists to TXN endpoint 2017-04-20 17:50:52 -07:00
kv_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
lock.go golint: Untangle if blocks with return in else 2017-04-25 09:26:13 -07:00
lock_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
operator.go Moves operator sub-functions into their own files. 2017-03-30 12:35:50 -07:00
operator_area.go Adds missing area API. 2017-03-21 23:11:15 -07:00
operator_autopilot.go Moves operator sub-functions into their own files. 2017-03-30 12:35:50 -07:00
operator_autopilot_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
operator_keyring.go Moves operator sub-functions into their own files. 2017-03-30 12:35:50 -07:00
operator_keyring_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
operator_raft.go Moves operator sub-functions into their own files. 2017-03-30 12:35:50 -07:00
operator_raft_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
prepared_query.go Add tests for node meta in prepared queries and update docs 2017-01-23 19:17:30 -05:00
prepared_query_test.go api: refactor: prefix all API tests with API_ 2017-07-07 09:22:34 +02:00
raw.go api: Refactoring into shared write logic 2015-02-18 15:15:02 -08:00
README.md Use HTTPS + www. where appropriate 2016-01-13 17:44:01 -05:00
semaphore.go golint: Untangle if blocks with return in else 2017-04-25 09:26:13 -07:00
semaphore_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
session.go accept recv-only channels for cancellations (#3271) 2017-07-14 16:31:44 -07:00
session_test.go api: refactor: unify naming of API tests 2017-07-07 09:22:34 +02:00
snapshot.go Adds support for snapshots and restores. (#2396) 2016-10-25 19:20:24 -07:00
snapshot_test.go api: refactor: prefix all API tests with API_ 2017-07-07 09:22:34 +02:00
status.go Revert "fixed: body not closed for non HTTP 200 responses" 2015-01-19 11:51:51 +09:00
status_test.go api: refactor: prefix all API tests with API_ 2017-07-07 09:22:34 +02:00

Consul API client

This package provides the api package which attempts to provide programmatic access to the full Consul API.

Currently, all of the Consul APIs included in version 0.6.0 are supported.

Documentation

The full documentation is available on Godoc

Usage

Below is an example of using the Consul client:

// Get a new client
client, err := api.NewClient(api.DefaultConfig())
if err != nil {
    panic(err)
}

// Get a handle to the KV API
kv := client.KV()

// PUT a new KV pair
p := &api.KVPair{Key: "foo", Value: []byte("test")}
_, err = kv.Put(p, nil)
if err != nil {
    panic(err)
}

// Lookup the pair
pair, _, err := kv.Get("foo", nil)
if err != nil {
    panic(err)
}
fmt.Printf("KV: %v", pair)