PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
| Dir : /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/ |
| Server: Linux server1.ngambekcore.com 4.18.0-553.51.1.el8_10.x86_64 #1 SMP Wed Apr 30 04:00:07 EDT 2025 x86_64 IP: 159.198.77.92 |
| Dir : //opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/runtime.rb |
require_relative '../puppet/http'
require_relative '../puppet/facter_impl'
require 'singleton'
# Provides access to runtime implementations.
#
# @api private
class Puppet::Runtime
include Singleton
def initialize
@runtime_services = {
http: proc do
klass = Puppet::Network::HttpPool.http_client_class
if klass == Puppet::Network::HTTP::Connection
Puppet::HTTP::Client.new
else
Puppet::HTTP::ExternalClient.new(klass)
end
end,
facter: proc { Puppet::FacterImpl.new }
}
end
private :initialize
# Loads all runtime implementations.
#
# @return Array[Symbol] the names of loaded implementations
# @api private
def load_services
@runtime_services.keys.each { |key| self[key] }
end
# Get a runtime implementation.
#
# @param name [Symbol] the name of the implementation
# @return [Object] the runtime implementation
# @api private
def [](name)
service = @runtime_services[name]
raise ArgumentError, "Unknown service #{name}" unless service
if service.is_a?(Proc)
@runtime_services[name] = service.call
else
service
end
end
# Register a runtime implementation.
#
# @param name [Symbol] the name of the implementation
# @param impl [Object] the runtime implementation
# @api private
def []=(name, impl)
@runtime_services[name] = impl
end
# Clears all implementations. This is used for testing.
#
# @api private
def clear
initialize
end
end