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