class Puppet::HTTP::Resolver::SRV

Resolve a service using DNS SRV records.

@api public

Public Class Methods

new(client, domain:, dns: Resolv::DNS.new) click to toggle source

Create an DNS SRV resolver.

@param [Puppet::HTTP::Client] client @param [String] domain srv domain @param [Resolv::DNS] dns

   # File lib/puppet/http/resolver/srv.rb
12 def initialize(client, domain:, dns: Resolv::DNS.new)
13   @client = client
14   @srv_domain = domain
15   @delegate = Puppet::HTTP::DNS.new(dns)
16 end

Public Instance Methods

resolve(session, name, ssl_context: nil, canceled_handler: nil) click to toggle source

Walk the available srv records and return the first that successfully connects

@param [Puppet::HTTP::Session] session @param [Symbol] name the service being resolved @param [Puppet::SSL::SSLContext] ssl_context @param [Proc] canceled_handler optional callback allowing a resolver

to cancel resolution.

@return [Puppet::HTTP::Service] if an available service is found, return

it. Return nil otherwise.

@api public

   # File lib/puppet/http/resolver/srv.rb
30 def resolve(session, name, ssl_context: nil, canceled_handler: nil)
31   # Here we pass our HTTP service name as the DNS SRV service name
32   # This is fine for :ca, but note that :puppet and :file are handled
33   # specially in `each_srv_record`.
34   @delegate.each_srv_record(@srv_domain, name) do |server, port|
35     service = Puppet::HTTP::Service.create_service(@client, session, name, server, port)
36     return service if check_connection?(session, service, ssl_context: ssl_context)
37   end
38 
39   nil
40 end