class Etcdv3::Namespace::KV
Public Class Methods
new(hostname, credentials, timeout, namespace, metadata={})
click to toggle source
# File lib/etcdv3/namespace/kv.rb, line 7 def initialize(hostname, credentials, timeout, namespace, metadata={}) @stub = Etcdserverpb::KV::Stub.new(hostname, credentials) @timeout = timeout @namespace = namespace @metadata = metadata end
Public Instance Methods
del(key, range_end: '', timeout: nil)
click to toggle source
# File lib/etcdv3/namespace/kv.rb, line 20 def del(key, range_end: '', timeout: nil) resp = @stub.delete_range(del_request(key, range_end), metadata: @metadata, deadline: deadline(timeout)) strip_prefix(@namespace, resp) end
get(key, opts={})
click to toggle source
# File lib/etcdv3/namespace/kv.rb, line 14 def get(key, opts={}) timeout = opts.delete(:timeout) resp = @stub.range(get_request(key, opts), metadata: @metadata, deadline: deadline(timeout)) strip_prefix(@namespace, resp) end
put(key, value, lease: nil, timeout: nil)
click to toggle source
# File lib/etcdv3/namespace/kv.rb, line 25 def put(key, value, lease: nil, timeout: nil) resp = @stub.put(put_request(key, value, lease), metadata: @metadata, deadline: deadline(timeout)) strip_prefix(@namespace, resp) end
transaction(block, timeout: nil)
click to toggle source
# File lib/etcdv3/namespace/kv.rb, line 30 def transaction(block, timeout: nil) txn = Etcdv3::Namespace::KV::Transaction.new(@namespace) block.call(txn) request = Etcdserverpb::TxnRequest.new( compare: txn.compare, success: generate_request_ops(txn.success), failure: generate_request_ops(txn.failure), ) resp = @stub.txn(request, metadata: @metadata, deadline: deadline(timeout)) strip_prefix(@namespace, resp) end
Private Instance Methods
deadline(timeout)
click to toggle source
# File lib/etcdv3/namespace/kv.rb, line 44 def deadline(timeout) from_relative_time(timeout || @timeout) end
generate_request_ops(requests)
click to toggle source
# File lib/etcdv3/namespace/kv.rb, line 48 def generate_request_ops(requests) requests.map do |request| if request.is_a?(Etcdserverpb::RangeRequest) Etcdserverpb::RequestOp.new(request_range: request) elsif request.is_a?(Etcdserverpb::PutRequest) Etcdserverpb::RequestOp.new(request_put: request) elsif request.is_a?(Etcdserverpb::DeleteRangeRequest) Etcdserverpb::RequestOp.new(request_delete_range: request) else raise "Invalid command. Not sure how you got here!" end end end