Sha256: 54d8c42bfa53916b460a010ebf8b4a03377b117abd460054c74bddc97dabedcd

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

require 'grpc'
require 'uri'

require 'etcdv3/etcdrpc/rpc_services_pb'
require 'etcdv3/auth'
require 'etcdv3/kv'

class Etcd

  def options
    Marshal.load(Martial.dump(@options))
  end

  def uri
    URI(@options[:url])
  end

  def scheme
    uri.scheme
  end

  def port
    uri.port
  end

  def hostname
    uri.hostname
  end

  def user
    @options[:user]
  end

  def password
    @options[:password]
  end

  def token
    @metadata[:token]
  end

  def credentials
    @credentials
  end

  def initialize(options={})
    @options = options
    @credentials = resolve_credentials
    @metadata = {}
    unless user.nil?
      @metadata[:token] = auth.generate_token(user, password)
    end
  end

  def put(key, value)
    kv.put(key, value, @metadata)
  end

  def range(key, range_end)
    kv.range(key, range_end, @metadata)
  end


  def add_user(user, password)
    auth.add_user(user, password, @metadata)
  end

  def delete_user(user)
    auth.delete_user(user, @metadata)
  end

  def user_list
    auth.user_list(@metadata)
  end

  private

  def auth
    Etcd::Auth.new(hostname, port, @credentials)
  end

  def kv
    Etcd::KV.new(hostname, port, @credentials)
  end

  def resolve_credentials
    case scheme
    when "http"
      :this_channel_is_insecure
    when "https"
      # Use default certs for now.
      GRPC::Core::ChannelCredentials.new
    else
      raise "Unknown scheme: #{scheme}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
etcdv3-0.0.4 lib/etcdv3.rb
etcdv3-0.0.3 lib/etcdv3.rb