Class: Gitlab::Database::LoadBalancing::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/database/load_balancing/resolver.rb

Constant Summary collapse

FAR_FUTURE_TTL =
100.years.from_now
UnresolvableNameserverError =
Class.new(StandardError)
Response =
Class.new do
  attr_reader :address, :ttl

  def initialize(address:, ttl:)
    raise ArgumentError unless ttl.present? && address.present?

    @address = address
    @ttl = ttl
  end
end

Instance Method Summary collapse

Constructor Details

#initialize(nameserver) ⇒ Resolver

Returns a new instance of Resolver.



25
26
27
# File 'lib/gitlab/database/load_balancing/resolver.rb', line 25

def initialize(nameserver)
  @nameserver = nameserver
end

Instance Method Details

#resolveObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gitlab/database/load_balancing/resolver.rb', line 29

def resolve
  address = ip_address || ip_address_from_hosts_file ||
    ip_address_from_dns

  unless address
    raise UnresolvableNameserverError,
      "could not resolve #{@nameserver}"
  end

  address
end