class Etcdv3::KV

Public Class Methods

new(hostname, credentials, timeout, metadata={}) click to toggle source
# File lib/etcdv3/kv.rb, line 7
def initialize(hostname, credentials, timeout, metadata={})
  @stub = Etcdserverpb::KV::Stub.new(hostname, credentials)
  @timeout = timeout
  @metadata = metadata
end

Public Instance Methods

del(key, range_end: '', timeout: nil) click to toggle source
# File lib/etcdv3/kv.rb, line 18
def del(key, range_end: '', timeout: nil)
  @stub.delete_range(del_request(key, range_end), metadata: @metadata, deadline: deadline(timeout))
end
get(key, opts={}) click to toggle source
# File lib/etcdv3/kv.rb, line 13
def get(key, opts={})
  timeout = opts.delete(:timeout)
  @stub.range(get_request(key, opts), metadata: @metadata, deadline: deadline(timeout))
end
put(key, value, lease: nil, timeout: nil) click to toggle source
# File lib/etcdv3/kv.rb, line 22
def put(key, value, lease: nil, timeout: nil)
  @stub.put(put_request(key, value, lease), metadata: @metadata, deadline: deadline(timeout))
end
transaction(block, timeout: nil) click to toggle source
# File lib/etcdv3/kv.rb, line 26
def transaction(block, timeout: nil)
  txn = Etcdv3::KV::Transaction.new
  block.call(txn)
  request = Etcdserverpb::TxnRequest.new(
    compare: txn.compare,
    success: generate_request_ops(txn.success),
    failure: generate_request_ops(txn.failure)
  )
  @stub.txn(request, metadata: @metadata, deadline: deadline(timeout))
end

Private Instance Methods

deadline(timeout) click to toggle source
# File lib/etcdv3/kv.rb, line 39
def deadline(timeout)
  from_relative_time(timeout || @timeout)
end
generate_request_ops(requests) click to toggle source
# File lib/etcdv3/kv.rb, line 43
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