Class: Etzetera::Client
- Inherits:
-
Object
- Object
- Etzetera::Client
- Includes:
- Celluloid::IO, Celluloid::Logger
- Defined in:
- lib/etzetera/client.rb
Constant Summary collapse
- API_VERSION =
'v2'.freeze
- KEYS_PREFIX =
"/#{API_VERSION}/keys".freeze
- LOCK_PREFIX =
"/mod/#{API_VERSION}/lock/".freeze
- LEADER_PREFIX =
"/mod/#{API_VERSION}/leader/".freeze
- STATS_PREFIX =
"/#{API_VERSION}/stats/".freeze
Instance Attribute Summary collapse
-
#servers ⇒ Object
Returns the value of attribute servers.
Instance Method Summary collapse
- #acquire_lock(name, ttl) ⇒ Object
- #compareAndDelete(key, prevValue) ⇒ Object
- #compareAndSwap(key, prevValue, form) ⇒ Object
- #create(key, form, params = {}) ⇒ Object
- #delete(key, params = {}) ⇒ Object
- #delete_leader(clustername, name) ⇒ Object
- #dir(dir, params = {}) ⇒ Object
- #get(key, params = {}) ⇒ Object
- #get_leader(clustername, params = {}) ⇒ Object
-
#initialize(servers = ['http://127.0.0.1:4001'], default_options = {}) ⇒ Client
constructor
A new instance of Client.
- #mkdir(dir) ⇒ Object
- #release_lock(name, form) ⇒ Object
- #renew_lock(name, form) ⇒ Object
- #retrieve_lock(name, params) ⇒ Object
- #rmdir(dir, params = {}) ⇒ Object
- #set(key, form, params = {}) ⇒ Object
- #set_leader(clustername, name, ttl) ⇒ Object
- #stats(type) ⇒ Object
- #update(key, form, params = {}) ⇒ Object
- #wait(key, callback = nil, params = {}) ⇒ Object
Constructor Details
#initialize(servers = ['http://127.0.0.1:4001'], default_options = {}) ⇒ Client
Returns a new instance of Client.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/etzetera/client.rb', line 19 def initialize(servers = ['http://127.0.0.1:4001'], = {}) self.servers = servers.dup def_opts = .dup opts = {} opts[:headers] = {:accept => 'application/json'} opts[:response] = :object opts[:socket_class] = Celluloid::IO::TCPSocket opts[:ssl_socket_class] = Celluloid::IO::SSLSocket @etcd_opts = {} @etcd_opts[:election_timeout] = def_opts.delete(:election_timeout) {|key| 200} @etcd_opts[:heartbeat_interval] = def_opts.delete(:heartbeat_interval) {|key| 50} @default_options = ::HTTP::Options.new(opts.merge(def_opts)) end |
Instance Attribute Details
#servers ⇒ Object
Returns the value of attribute servers.
17 18 19 |
# File 'lib/etzetera/client.rb', line 17 def servers @servers end |
Instance Method Details
#acquire_lock(name, ttl) ⇒ Object
91 92 93 |
# File 'lib/etzetera/client.rb', line 91 def acquire_lock(name, ttl) request(:post, LOCK_PREFIX, name, :form => {:ttl => ttl}) end |
#compareAndDelete(key, prevValue) ⇒ Object
87 88 89 |
# File 'lib/etzetera/client.rb', line 87 def compareAndDelete(key, prevValue) request(:delete, KEYS_PREFIX, key, :params => {:prevValue => prevValue}) end |
#compareAndSwap(key, prevValue, form) ⇒ Object
83 84 85 |
# File 'lib/etzetera/client.rb', line 83 def compareAndSwap(key, prevValue, form) request(:put, KEYS_PREFIX, key, :form => form, :params => {:prevValue => prevValue}) end |
#create(key, form, params = {}) ⇒ Object
63 64 65 |
# File 'lib/etzetera/client.rb', line 63 def create(key, form, params = {}) request(:put, KEYS_PREFIX, key, :form => form, :params => params.merge({:prevExist => false})) end |
#delete(key, params = {}) ⇒ Object
46 47 48 |
# File 'lib/etzetera/client.rb', line 46 def delete(key, params = {}) request(:delete, KEYS_PREFIX, key, :params => params) end |
#delete_leader(clustername, name) ⇒ Object
115 116 117 |
# File 'lib/etzetera/client.rb', line 115 def delete_leader(clustername, name) request(:delete, LEADER_PREFIX, clustername, :form => {:name => name}) end |
#dir(dir, params = {}) ⇒ Object
75 76 77 |
# File 'lib/etzetera/client.rb', line 75 def dir(dir, params = {}) request(:get, KEYS_PREFIX, dir, :params => params.merge({:recursive => true})) end |
#get(key, params = {}) ⇒ Object
38 39 40 |
# File 'lib/etzetera/client.rb', line 38 def get(key, params = {}) request(:get, KEYS_PREFIX, key, :params => params) end |
#get_leader(clustername, params = {}) ⇒ Object
111 112 113 |
# File 'lib/etzetera/client.rb', line 111 def get_leader(clustername, params = {}) request(:get, LEADER_PREFIX, clustername, :params => params) end |
#mkdir(dir) ⇒ Object
71 72 73 |
# File 'lib/etzetera/client.rb', line 71 def mkdir(dir) request(:put, KEYS_PREFIX, dir, :params => {:dir => true}) end |
#release_lock(name, form) ⇒ Object
99 100 101 |
# File 'lib/etzetera/client.rb', line 99 def release_lock(name, form) request(:delete, LOCK_PREFIX, name, :form => form) end |
#renew_lock(name, form) ⇒ Object
95 96 97 |
# File 'lib/etzetera/client.rb', line 95 def renew_lock(name, form) request(:put, LOCK_PREFIX, name, :form => form) end |
#retrieve_lock(name, params) ⇒ Object
103 104 105 |
# File 'lib/etzetera/client.rb', line 103 def retrieve_lock(name, params) request(:get, LOCK_PREFIX, name, :params => params) end |
#rmdir(dir, params = {}) ⇒ Object
79 80 81 |
# File 'lib/etzetera/client.rb', line 79 def rmdir(dir, params = {}) request(:delete, KEYS_PREFIX, dir, :params => {:recursive => true}.merge(params)) end |
#set(key, form, params = {}) ⇒ Object
42 43 44 |
# File 'lib/etzetera/client.rb', line 42 def set(key, form, params = {}) request(:put, KEYS_PREFIX, key, form: form, :params => params) end |
#set_leader(clustername, name, ttl) ⇒ Object
107 108 109 |
# File 'lib/etzetera/client.rb', line 107 def set_leader(clustername, name, ttl) request(:put, LEADER_PREFIX, clustername, :form => {:name => name, :ttl => ttl}) end |
#stats(type) ⇒ Object
119 120 121 |
# File 'lib/etzetera/client.rb', line 119 def stats(type) request(:get, STATS_PREFIX, type) end |
#update(key, form, params = {}) ⇒ Object
67 68 69 |
# File 'lib/etzetera/client.rb', line 67 def update(key, form, params = {}) request(:put, KEYS_PREFIX, key, :form => form, :params => params.merge({:prevExist => true})) end |
#wait(key, callback = nil, params = {}) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/etzetera/client.rb', line 50 def wait(key, callback = nil, params = {}) response = request(:get, KEYS_PREFIX, key, :params => params.merge({:wait => true})) if block_given? yield response elsif callback #sleep (@etcd_opts[:heartbeat_interval] / 1000.0) callback.call(response) else response end end |