class Puppet::HTTP::Resolver

Resolver base class. Each resolver represents a different strategy for resolving a service name into a list of candidate servers and ports.

@abstract Subclass and override {#resolve} to create a new resolver. @api public

Public Class Methods

new(client) click to toggle source

Create a new resolver.

@param [Puppet::HTTP::Client] client

   # File lib/puppet/http/resolver.rb
11 def initialize(client)
12   @client = client
13 end

Public Instance Methods

check_connection?(session, service, ssl_context: nil) click to toggle source

Check a given connection to establish if it can be relied on for future use.

@param [Puppet::HTTP::Session] session @param [Puppet::HTTP::Service] service @param [Puppet::SSL::SSLContext] ssl_context

@return [Boolean] Returns true if a connection is successful, false otherwise

@api public

   # File lib/puppet/http/resolver.rb
41 def check_connection?(session, service, ssl_context: nil)
42   service.connect(ssl_context: ssl_context)
43   return true
44 rescue Puppet::HTTP::ConnectionError => e
45   Puppet.log_exception(e, "Connection to #{service.url} failed, trying next route: #{e.message}")
46   return false
47 end
resolve(session, name, ssl_context: nil, canceled_handler: nil) click to toggle source

Return a working server/port for the resolver. This is the base implementation and is meant to be a placeholder.

@param [Puppet::HTTP::Session] session @param [Symbol] name the service to resolve @param [Puppet::SSL::SSLContext] ssl_context (nil) optional ssl context to

use when creating a connection

@param [Proc] canceled_handler (nil) optional callback allowing a resolver

to cancel resolution.

@raise [NotImplementedError] this base class is not implemented

@api public

   # File lib/puppet/http/resolver.rb
28 def resolve(session, name, ssl_context: nil, canceled_handler: nil)
29   raise NotImplementedError
30 end