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.