Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SYNOPSIS
- Consul Key/Value Storage Notes
- DESCRIPTION
- Structure and function of consul key-value storage. Easier to find and slightly less verbose
- than the resources on the Consul documentation and sources
- WIRE FORMAT
- Annotated json encoding (raw format differs)
- ```
- [
- {
- // Key is the key
- "Key": "some/path/to/somewhere",
- // Value is the key's value
- "Value": "dGVzdA==",
- // CreateIndex is a number that represents key creation
- "CreateIndex": 100,
- // ModifyIndex counts upward from CreateIndex every time key is modified
- "ModifyIndex": 200,
- // LockIndex counts the total n.o. times the key was acquired by a session
- "LockIndex": 200,
- // Flags are user-defined uint64 bit vectors
- "Flags": 0,
- // Session is a unique bitstring that identifies the resource currently holding
- // the lock on this key
- "Session": "adf4238a-882b-9ddc-4a9d-5b6758e4159e"
- }
- ]
- ```
- OPERATIONS
- 1.) Create & Update
- - PUT
- - Non-blocking
- - No consistency guarantees
- // This is not a real go struct; they're actually URL-encoded query parameters
- type Param struct{
- // key is the path to the key, which looks like a file-system path on UNIX
- // without the leading '/'. This value can be cleaned and operated on from
- // Go's "path" package
- key string
- // Dc (datacenter) is where the key is updated. Key-value stores aren't
- // replicated across datacenters.
- dc string // datacenter (optional)
- // Flags are user-defined flags; nothing special
- flags uint64
- // cas (Compare and Set)
- // If cas is zero, consul won't update an existing key
- // Otherwise, cas only updates the key if cas == ModifiedIndex
- // at the time of the request
- cas uint64
- // Acquire carries a session ID, a random bitstring generated by
- // consul. If set, consul will update the value if the key doesn't
- // exist, the key isn't locked, or the key is locked by the session
- // represented by the acquire bitstring. (likewise, consul will create
- // and acquire a key-value pair that doesn't exist yet)
- //
- // Acquire uses the locking "honor system". Writers that
- // set acquire respect the locking semantics, but other writers do not
- // meaning if you set it for one writer you have to set it for all of them
- // (unless you want them writing over your value for a specific reason)
- //
- // A counter in the key-value pair, known as LockIndex, is incremented
- // every time the lock is acquired by a session.
- acquire string
- }
- 2.) Read
- - GET
- - Blocking
- - Supports consistency
- type Param struct{
- key string
- dc string
- // Recurse reads a tree of keys by prefix. What this actually does depends
- // on the value of 'keys', see below for 'keys'
- recurse bool
- // Keys, if true, tells consul to return a list of keys matching a prefix but
- // not those keys' values. If false, a recursive read returns the values too.
- keys bool
- // Raw tells consul to return the key-value's raw data instead of encoding
- // it in a web-safe transport format "application/json". Metadata is not
- // included if this is set
- raw bool
- // Separator is the character to use as a seperator. Changing this is probably
- // not a good idea
- seperator string
- }
- 3.) Delete
- - DELETE
- - Non-blocking
- - No consistency guarantees
- type Param struct{
- key string
- // Recurse deletes a tree of keys by prefix, it assumes that key is a prefix
- recurse bool
- // cas has the same semantics as in Create/Update.
- cas uint64
- }
Add Comment
Please, Sign In to add comment