@@ -9,21 +9,19 @@ def register(schema)
99 raise Puppet ::DevError , 'requires `:connection_info`' unless schema . key? :connection_info
1010 raise Puppet ::DevError , '`:connection_info` must be a hash, not `%{other_type}`' % { other_type : schema [ :connection_info ] . class } unless schema [ :connection_info ] . is_a? ( Hash )
1111
12- init_transports
13- unless @transports [ @environment ] [ schema [ :name ] ] . nil?
12+ unless transports [ schema [ :name ] ] . nil?
1413 raise Puppet ::DevError , 'Transport `%{name}` is already registered for `%{environment}`' % {
1514 name : schema [ :name ] ,
16- environment : @environment ,
15+ environment : current_environment ,
1716 }
1817 end
19- @ transports[ @environment ] [ schema [ :name ] ] = Puppet ::ResourceApi ::TransportSchemaDef . new ( schema )
18+ transports [ schema [ :name ] ] = Puppet ::ResourceApi ::TransportSchemaDef . new ( schema )
2019 end
2120 module_function :register # rubocop:disable Style/AccessModifierDeclarations
2221
2322 # retrieve a Hash of transport schemas, keyed by their name.
2423 def list
25- init_transports
26- Marshal . load ( Marshal . dump ( @transports [ @environment ] ) )
24+ Marshal . load ( Marshal . dump ( transports ) )
2725 end
2826 module_function :list # rubocop:disable Style/AccessModifierDeclarations
2927
@@ -47,13 +45,12 @@ def inject_device(name, transport)
4745 module_function :inject_device # rubocop:disable Style/AccessModifierDeclarations
4846
4947 def self . validate ( name , connection_info )
50- init_transports
51- require "puppet/transport/schema/#{ name } " unless @transports [ @environment ] . key? name
52- transport_schema = @transports [ @environment ] [ name ]
48+ require "puppet/transport/schema/#{ name } " unless transports . key? name
49+ transport_schema = transports [ name ]
5350 if transport_schema . nil?
5451 raise Puppet ::DevError , 'Transport for `%{target}` not registered with `%{environment}`' % {
5552 target : name ,
56- environment : @environment ,
53+ environment : current_environment ,
5754 }
5855 end
5956 message_prefix = 'The connection info provided does not match the Transport Schema'
@@ -64,24 +61,12 @@ def self.validate(name, connection_info)
6461
6562 def self . get_context ( name )
6663 require 'puppet/resource_api/puppet_context'
67- Puppet ::ResourceApi ::PuppetContext . new ( @ transports[ @environment ] [ name ] )
64+ Puppet ::ResourceApi ::PuppetContext . new ( transports [ name ] )
6865 end
6966 private_class_method :get_context
7067
71- def self . init_transports
72- lookup = Puppet . lookup ( :current_environment ) if Puppet . respond_to? :lookup
73- @environment = if lookup . nil?
74- :transports_default
75- else
76- lookup . name
77- end
78- @transports ||= { }
79- @transports [ @environment ] ||= { }
80- end
81- private_class_method :init_transports
82-
8368 def self . wrap_sensitive ( name , connection_info )
84- transport_schema = @ transports[ @environment ] [ name ]
69+ transport_schema = transports [ name ]
8570 if transport_schema
8671 transport_schema . definition [ :connection_info ] . each do |attr_name , options |
8772 if options . key? ( :sensitive ) && ( options [ :sensitive ] == true ) && connection_info . key? ( attr_name )
@@ -92,4 +77,20 @@ def self.wrap_sensitive(name, connection_info)
9277 connection_info
9378 end
9479 private_class_method :wrap_sensitive
80+
81+ def self . transports
82+ @transports ||= { }
83+ @transports [ current_environment ] ||= { }
84+ end
85+ private_class_method :transports
86+
87+ def self . current_environment
88+ if Puppet . respond_to? :lookup
89+ env = Puppet . lookup ( :current_environment )
90+ env . nil? ? :transports_default : env . name
91+ else
92+ :transports_default
93+ end
94+ end
95+ private_class_method :current_environment
9596end
0 commit comments