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