Sha256: 5fb7b15a419f691512b1b9ff7f82b469f00beec7203199a12da5127af9c2862a
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
class Etcdv3 class Connection NAMESPACE_HANDLERS = { kv: Etcdv3::Namespace::KV, watch: Etcdv3::Namespace::Watch, lock: Etcdv3::Namespace::Lock, } HANDLERS = { auth: Etcdv3::Auth, kv: Etcdv3::KV, maintenance: Etcdv3::Maintenance, lease: Etcdv3::Lease, watch: Etcdv3::Watch, lock: Etcdv3::Lock, } attr_reader :endpoint, :hostname, :handlers, :credentials, :namespace def initialize(url, timeout, namespace, metadata={}) @endpoint = URI(url) @hostname = "#{@endpoint.hostname}:#{@endpoint.port}" @namespace = namespace @credentials = resolve_credentials @timeout = timeout @handlers = handler_map(metadata) end def call(stub, method, method_args=[]) @handlers.fetch(stub).send(method, *method_args) end def refresh_metadata(metadata) @handlers = handler_map(metadata) end private def handler_map(metadata={}) handlers = Hash[ HANDLERS.map do |key, klass| [key, klass.new(@hostname, @credentials, @timeout, metadata)] end ] # Override any handlers that are namespace compatable. if @namespace NAMESPACE_HANDLERS.each do |key, klass| handlers[key] = klass.new(@hostname, @credentials, @timeout, @namespace, metadata) end end handlers end def resolve_credentials case @endpoint.scheme when 'http' :this_channel_is_insecure when 'https' # Use default certs for now. GRPC::Core::ChannelCredentials.new else raise "Unknown scheme: #{@endpoint.scheme}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
etcdv3-0.11.3 | lib/etcdv3/connection.rb |