Sha256: 4bf2624ecc074f0184a99ebd5d2732c36db6c28b9879155b1ee1121297d60db3

Contents?: true

Size: 983 Bytes

Versions: 4

Compression:

Stored size: 983 Bytes

Contents

class Puppet::HTTP::Session
  def initialize(client, resolvers)
    @client = client
    @resolvers = resolvers
    @resolved_services = {}
    @resolution_exceptions = []
  end

  def route_to(name, ssl_context: nil)
    raise ArgumentError, "Unknown service #{name}" unless Puppet::HTTP::Service.valid_name?(name)

    cached = @resolved_services[name]
    return cached if cached

    @resolution_exceptions = []

    @resolvers.each do |resolver|
      Puppet.debug("Resolving service '#{name}' using #{resolver.class}")
      service = resolver.resolve(self, name, ssl_context: ssl_context)
      if service
        @resolved_services[name] = service
        Puppet.debug("Resolved service '#{name}' to #{service.url}")
        return service
      end
    end

    @resolution_exceptions.each { |e| Puppet.log_exception(e) }
    raise Puppet::HTTP::RouteError, "No more routes to #{name}"
  end

  def add_exception(exception)
    @resolution_exceptions << exception
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
puppet-6.12.0 lib/puppet/http/session.rb
puppet-6.12.0-x86-mingw32 lib/puppet/http/session.rb
puppet-6.12.0-x64-mingw32 lib/puppet/http/session.rb
puppet-6.12.0-universal-darwin lib/puppet/http/session.rb