Class: Diplomat::Lock
- Inherits:
-
RestClient
- Object
- RestClient
- Diplomat::Lock
- Defined in:
- lib/diplomat/lock.rb
Overview
Methods for interacting with the Consul lock API endpoint
Instance Method Summary collapse
-
#acquire(key, session, value = nil, options = {}) ⇒ Boolean
Acquire a lock.
-
#release(key, session, options = {}) ⇒ nil
Release a lock rubocop:disable Metrics/AbcSize.
-
#wait_to_acquire(key, session, value = nil, check_interval = 10, options = {}) ⇒ Boolean
wait to aquire a lock.
Methods inherited from RestClient
access_method?, #concat_url, #configuration, #initialize, method_missing, respond_to?, respond_to_missing?, #use_named_parameter
Constructor Details
This class inherits a constructor from Diplomat::RestClient
Instance Method Details
#acquire(key, session, value = nil, options = {}) ⇒ Boolean
Acquire a lock
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/diplomat/lock.rb', line 14 def acquire(key, session, value = nil, = {}) key = normalize_key_for_uri(key) custom_params = [] custom_params << use_named_parameter('acquire', session) custom_params << use_named_parameter('dc', [:dc]) if [:dc] custom_params << use_named_parameter('flags', [:flags]) if && [:flags] data = value unless value.nil? raw = send_put_request(@conn, ["/v1/kv/#{key}"], , data, custom_params) raw.body.chomp == 'true' end |
#release(key, session, options = {}) ⇒ nil
Release a lock rubocop:disable Metrics/AbcSize
47 48 49 50 51 52 53 54 55 |
# File 'lib/diplomat/lock.rb', line 47 def release(key, session, = {}) key = normalize_key_for_uri(key) custom_params = [] custom_params << use_named_parameter('release', session) custom_params << use_named_parameter('dc', [:dc]) if [:dc] custom_params << use_named_parameter('flags', [:flags]) if && [:flags] raw = send_put_request(@conn, ["/v1/kv/#{key}"], , nil, custom_params) raw.body end |
#wait_to_acquire(key, session, value = nil, check_interval = 10, options = {}) ⇒ Boolean
wait to aquire a lock
32 33 34 35 36 37 38 39 |
# File 'lib/diplomat/lock.rb', line 32 def wait_to_acquire(key, session, value = nil, check_interval = 10, = {}) acquired = false until acquired acquired = acquire(key, session, value, ) sleep(check_interval) unless acquired return true if acquired end end |