Class: Puppet::HTTP::Resolver::ServerList Private
- Inherits:
-
Puppet::HTTP::Resolver
- Object
- Puppet::HTTP::Resolver
- Puppet::HTTP::Resolver::ServerList
- Defined in:
- lib/puppet/http/resolver/server_list.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Use the server_list setting to resolve a service. This resolver is only used if server_list is set either on the command line or in the configuration file.
Instance Method Summary collapse
-
#initialize(client, server_list_setting:, default_port:, services:) ⇒ ServerList
constructor
private
A new instance of ServerList.
-
#resolve(session, name, ssl_context: nil, canceled_handler: nil) ⇒ nil, Puppet::HTTP::Service
private
Walk the server_list to find a server and port that will connect successfully.
Methods inherited from Puppet::HTTP::Resolver
Constructor Details
#initialize(client, server_list_setting:, default_port:, services:) ⇒ ServerList
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of ServerList.
20 21 22 23 24 25 |
# File 'lib/puppet/http/resolver/server_list.rb', line 20 def initialize(client, server_list_setting:, default_port:, services: ) @client = client @server_list_setting = server_list_setting @default_port = default_port @services = services end |
Instance Method Details
#resolve(session, name, ssl_context: nil, canceled_handler: nil) ⇒ nil, Puppet::HTTP::Service
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Walk the server_list to find a server and port that will connect successfully.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/puppet/http/resolver/server_list.rb', line 46 def resolve(session, name, ssl_context: nil, canceled_handler: nil) # If we're configured to use an explicit service host, e.g. report_server # then don't use server_list to resolve the `:report` service. return nil unless @services.include?(name) # If we resolved the URL already, use its host & port for the service if @resolved_url return Puppet::HTTP::Service.create_service(@client, session, name, @resolved_url.host, @resolved_url.port) end # Return the first simple service status endpoint we can connect to @server_list_setting.value.each do |server| host = server[0] port = server[1] || @default_port service = Puppet::HTTP::Service.create_service(@client, session, :puppetserver, host, port) begin service.get_simple_status(ssl_context: ssl_context) @resolved_url = service.url return Puppet::HTTP::Service.create_service(@client, session, name, @resolved_url.host, @resolved_url.port) rescue Puppet::HTTP::ResponseError => detail Puppet.log_exception(detail, _("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") % { host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason }) rescue Puppet::HTTP::HTTPError => detail Puppet.log_exception(detail, _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail}) end end # don't fallback to other resolvers canceled_handler.call(true) if canceled_handler # not found nil end |