etcd R client
etcd is a key-value DB written in Go. It has an HTTP API, which this R package wraps.
Development follows closely the newest version of etcd released by the Coreos folks. As of
2016-09-07 that's etcd v3.0.7
See the etcd Github repo for help on installing etcd.
There are various ways to install it, and they depend on your operating sytsem.
You can install via homebrew, install from source, and via Docker.
at the command line
etcd
how to start etcd may differ depending on your setup
Install etseed
install.packages("etseed")
Development version
install.packages("devtools")
devtools::install_github("ropensci/etseed")
library("etseed")
First task when using this package is to initialize a client
with the etcd() function. it's a wrapper around an R6 class.
(client <- etcd())
#> <etcd client>
#> host: 127.0.0.1
#> port: 2379
#> api_version: v2
#> scheme: http
#> allow redirect: TRUE
Default settings in etcd() connect you to localhost, and port 2379,
using etcd API version 2, with an http scheme.
client$version()
#> $etcdserver
#> [1] "3.0.7"
#>
#> $etcdcluster
#> [1] "3.0.0"
client$create("/neighbor", dir = TRUE)
#> $action
#> [1] "set"
#>
#> $node
#> $node$key
#> [1] "/neighbor"
#>
#> $node$dir
#> [1] TRUE
#>
#> $node$modifiedIndex
#> [1] 156
#>
#> $node$createdIndex
#> [1] 156
client$create(key = "/mykey", value = "this is awesome")
#> $action
#> [1] "set"
#>
#> $node
#> $node$key
#> [1] "/mykey"
#>
#> $node$value
#> [1] "this is awesome"
#>
#> $node$modifiedIndex
#> [1] 158
#>
#> $node$createdIndex
#> [1] 158
Use ttl parameter to make it dissappear after x seconds
client$create(key = "/stuff", value = "tables", ttl = 5)
#> $action
#> [1] "set"
#>
#> $node
#> $node$key
#> [1] "/stuff"
#>
#> $node$value
#> [1] "tables"
#>
#> $node$expiration
#> [1] "2016-09-07T17:21:08.993528228Z"
#>
#> $node$ttl
#> [1] 5
#>
#> $node$modifiedIndex
#> [1] 159
#>
#> $node$createdIndex
#> [1] 159
And the key will be gone after 5 seconds, see:
client$key("/stuff")
#> Error in etcd_GET(sprintf("%s%s/%s/", etcdbase(), "keys", key), ...) :
#> client error: (404) Not Found
Create a key
client$create(key = "/foo", value = "bar")
#> $action
#> [1] "set"
#>
#> $node
#> $node$key
#> [1] "/foo"
#>
#> $node$value
#> [1] "bar"
#>
#> $node$modifiedIndex
#> [1] 161
#>
#> $node$createdIndex
#> [1] 161
Then update the key
client$update(key = "/foo", value = "bar stool")
#> $action
#> [1] "set"
#>
#> $node
#> $node$key
#> [1] "/foo"
#>
#> $node$value
#> [1] "bar stool"
#>
...
client$create_inorder("/queue", "thing1")
#> $action
#> [1] "create"
#>
#> $node
#> $node$key
#> [1] "/queue/00000000000000000163"
#>
#> $node$value
#> [1] "thing1"
#>
#> $node$modifiedIndex
#> [1] 163
#>
#> $node$createdIndex
#> [1] 163
client$create_inorder("/queue", "thing2")
#> $action
#> [1] "create"
#>
#> $node
#> $node$key
#> [1] "/queue/00000000000000000164"
#>
#> $node$value
#> [1] "thing2"
#>
#> $node$modifiedIndex
#> [1] 164
#>
#> $node$createdIndex
#> [1] 164
client$create_inorder("/queue", "thing3")
#> $action
#> [1] "create"
#>
#> $node
#> $node$key
#> [1] "/queue/00000000000000000165"
#>
#> $node$value
#> [1] "thing3"
#>
#> $node$modifiedIndex
#> [1] 165
#>
#> $node$createdIndex
#> [1] 165
client$keys()
#> $action
#> [1] "get"
#>
#> $node
#> $node$dir
#> [1] TRUE
#>
#> $node$nodes
#> $node$nodes[[1]]
#> $node$nodes[[1]]$key
...
client$key("/mykey")
#> $action
#> [1] "get"
#>
#> $node
#> $node$key
#> [1] "/mykey"
#>
#> $node$value
#> [1] "this is awesome"
#>
#> $node$modifiedIndex
#> [1] 158
#>
#> $node$createdIndex
#> [1] 158
citation(package = 'etseed')Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.