Etcd activities for worksmith
This package contains the following activities/tasks:
name | description |
---|---|
createClient | Creates an etcd client |
lock | Creates a distributed lock using etcd |
unlock | Releases a distributed lock created with the lock activity |
Creates an etcd client
name | type | description |
---|---|---|
hosts | array | Array of hosts |
var worksmith = require('worksmith')
worksmith.use('etcd', require('worksmith_etcd'))
var workflow = worksmith({task:"sequence", items : [{
task:'etcd/createClient',
hosts: ['localhost:4001']
resultTo: 'etcd'
}])
Creates a distributed lock using etcd
name | type | description |
---|---|---|
etcd | etcd client | The etcd client (if not specified expected to be in the context 'etcd' property) |
key | string | The etcd key to be used in the lock |
value | string | Optional value for the lock, defaults to a uuid |
ttl | integer | Optional time in secords before the lock automatically expires |
var worksmith = require('worksmith')
worksmith.use('etcd', require('worksmith_etcd'))
var workflow = worksmith({task:"sequence", items : [{
task:'etcd/createClient',
hosts: ['localhost:4001']
resultTo: 'etcd'
}, {
task:"etcd/lock",
key:"record_12345"
resultTo: "lock.value"
}])
Releases a distributed lock created with the lock activity
name | type | description |
---|---|---|
etcd | etcd client | The etcd client (if not specified expected to be in the context 'etcd' property) |
key | string | The etcd key to be used in the lock |
value | string | Optional value for the lock. If specified both the key and lock must match |
var worksmith = require('worksmith')
worksmith.use('etcd', require('worksmith_etcd'))
var workflow = worksmith({task:"sequence", items : [{
task:'etcd/createClient',
hosts: ['localhost:4001']
resultTo: 'etcd'
}, {
task:"etcd/unlock",
key:"record_12345"
}])
You need an etcd server running on localhost:4001 for the tests to pass. If you have docker and docker-compose installed simply run docker-compose up
in the route of this project, however watch out for this bug.