Sha256: 7e789c17bfda240a9dd2e447b735984b61c77d872391a1e4c86da485c88b9bd6

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

class Etcdv3
  class KV

    SORT_TARGET = {
      key: 0,
      version: 1,
      create: 2,
      mod: 3,
      value: 4
    }

    SORT_ORDER = {
      none: 0,
      ascend: 1,
      descend: 2
    }

    def initialize(hostname, credentials, metadata={})
      @stub = Etcdserverpb::KV::Stub.new(hostname, credentials)
      @metadata = metadata
    end

    def put(key, value, lease=nil)
      kv = Etcdserverpb::PutRequest.new(key: key, value: value)
      kv.lease = lease if lease
      @stub.put(kv, metadata: @metadata)
    end

    def get(key, opts={})
      opts[:sort_order] = SORT_ORDER[opts[:sort_order]] \
        if opts[:sort_order]
      opts[:sort_target] = SORT_TARGET[opts[:sort_target]] \
        if opts[:sort_target]
      opts[:key] = key
      kv = Etcdserverpb::RangeRequest.new(opts)
      @stub.range(kv, metadata: @metadata)
    end

    def del(key, range_end="")
      request = Etcdserverpb::DeleteRangeRequest.new(
        key: key,
        range_end: range_end
      )
      @stub.delete_range(request, metadata: @metadata)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
etcdv3-0.4.0 lib/etcdv3/kv.rb
etcdv3-0.3.2 lib/etcdv3/kv.rb
etcdv3-0.3.1 lib/etcdv3/kv.rb
etcdv3-0.3.0 lib/etcdv3/kv.rb