class ShortNameResolver

Public Class Methods

new(ttl:, logger:) click to toggle source
# File lib/logstash/util/shortname_resolver.rb, line 5
def initialize(ttl:, logger:)
  @ttl = ttl
  @store = MiniCache::Store.new
  @logger = logger
end

Public Instance Methods

get_address(shortname) click to toggle source
# File lib/logstash/util/shortname_resolver.rb, line 32
def get_address(shortname)
  return resolve_cached(shortname).sample
end
get_addresses(shortname) click to toggle source
# File lib/logstash/util/shortname_resolver.rb, line 37
def get_addresses(shortname)
  return resolve_cached(shortname)
end

Private Instance Methods

resolve(shortname) click to toggle source
# File lib/logstash/util/shortname_resolver.rb, line 21
def resolve(shortname)
  addresses = Resolv::DNS.open do |dns|
    dns.getaddresses(shortname).map { |r| r.to_s }
  end

  @logger.info("Resolved shortname '#{shortname}' to addresses #{addresses}")

  return addresses
end
resolve_cached(shortname) click to toggle source
# File lib/logstash/util/shortname_resolver.rb, line 12
def resolve_cached(shortname)
  @store.get_or_set(shortname) do
    addresses = resolve(shortname)
    raise "Bad shortname '#{shortname}'" if addresses.empty?
    MiniCache::Data.new(addresses, expires_in: @ttl)
  end
end