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