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