@@ -20,11 +20,35 @@ def register(schema)
2020 module_function :register # rubocop:disable Style/AccessModifierDeclarations
2121
2222 # retrieve a Hash of transport schemas, keyed by their name.
23+ # Only already loaded transports are returned.
2324 def list
2425 Marshal . load ( Marshal . dump ( transports ) )
2526 end
2627 module_function :list # rubocop:disable Style/AccessModifierDeclarations
2728
29+ # retrieve a Hash of transport schemas, keyed by their name.
30+ # This uses the Puppet autoloader, provide a environment name as `force_environment`
31+ # to choose where to load from.
32+ # @api private
33+ def list_all_transports ( force_environment )
34+ env = Puppet . lookup ( :environments ) . get! ( force_environment )
35+ Puppet . override ( { current_environment : env } , 'current env for list_all_transports' ) do
36+ load_all_schemas
37+ Marshal . load ( Marshal . dump ( transports ) )
38+ end
39+ end
40+ module_function :list_all_transports # rubocop:disable Style/AccessModifierDeclarations
41+
42+ # Loads all schemas using the Puppet Autoloader.
43+ def self . load_all_schemas
44+ require 'puppet'
45+ require 'puppet/settings'
46+ require 'puppet/util/autoload'
47+ @autoloader ||= Puppet ::Util ::Autoload . new ( self , 'puppet/transport/schema' )
48+ @autoloader . loadall ( Puppet . lookup ( :current_environment ) )
49+ end
50+ private_class_method :load_all_schemas
51+
2852 def connect ( name , connection_info )
2953 validate ( name , connection_info )
3054 require "puppet/transport/#{ name } "
0 commit comments