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
13 def initialize(client, domain:, dns: Resolv::DNS.new)
14   @client = client
15   @srv_domain = domain
16   @delegate = Puppet::HTTP::DNS.new(dns)
17 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
31 def resolve(session, name, ssl_context: nil, canceled_handler: nil)
32   # Here we pass our HTTP service name as the DNS SRV service name
33   # This is fine for :ca, but note that :puppet and :file are handled
34   # specially in `each_srv_record`.
35   @delegate.each_srv_record(@srv_domain, name) do |server, port|
36     service = Puppet::HTTP::Service.create_service(@client, session, name, server, port)
37     return service if check_connection?(session, service, ssl_context: ssl_context)
38   end
39 
40   nil
41 end