etcd is a highly-available key value store for shared configuration and service discovery written in the Go language. Together with fleet, it forms the core of the cloud-specific linux distribution called CoreOS . A Tcl implementation of the API is available on github. It was originally a component of the biot project, but being self-contained, was forked out as a separate project.
EF 2015-01-21 An earlier version of this API used ::etcd::set and ::etcd::get to set and get keys, which interfered with the regular set. The new version uses a different naming convention, in line with the python API implementation . The new version also uses more complex semantics for ::etcd::read, ::etcd::write and ::etcd::delete, procedures that are used by most of the remaining procedures.
# Create a new connection context (defaults to default port on localhost) set c [::etcd::new] # Create a directory, and a sub-directory ::etcd::mkdir $c /onedir ::etcd::mkdir $c /onedir/asubdir # Create and set a key: ::etcd::write $c /onedir/asubdir/test "Hello World" # Get back the key set k [::etcd::read $c /onedir/asubdir/test] # Remove the key ::etcd::delete $c /onedir/asubdir/test # Remove the directories, recursively ::etcd::rmdir $c /onedir 1
For a more detailed documentation, consult the online manual .
While most operations can be performed using curl, etcd comes with a simple CLI client called etcdctl. I have made available a (re)implementation of this client , in Tcl. This is more meant as a testbed for the library above, but it also implements a functionality that is missing from the standard client, i.e. the ability to easily push the content of one or several files to the etcd key-space, using the same name as the file. Thus implementing a simplistic file mirroring facility.