puppet 4.3.1 → 4.3.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ext/build_defaults.yaml +1 -1
- data/lib/hiera/scope.rb +1 -1
- data/lib/puppet/application/lookup.rb +41 -43
- data/lib/puppet/data_providers/lookup_adapter.rb +73 -26
- data/lib/puppet/functions/lookup.rb +126 -150
- data/lib/puppet/functions/match.rb +1 -0
- data/lib/puppet/indirector/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/module.rb +3 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/compiler.rb +1 -8
- data/lib/puppet/parser/functions/lookup.rb +128 -149
- data/lib/puppet/parser/functions/match.rb +1 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +3 -2
- data/lib/puppet/pops/adapters.rb +43 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +3 -3
- data/lib/puppet/pops/evaluator/closure.rb +51 -51
- data/lib/puppet/pops/evaluator/collector_transformer.rb +16 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +11 -2
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issues.rb +16 -0
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +3 -2
- data/lib/puppet/pops/lookup.rb +3 -0
- data/lib/puppet/pops/lookup/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/model/factory.rb +153 -155
- data/lib/puppet/pops/model/model.rb +9 -0
- data/lib/puppet/pops/model/model_label_provider.rb +1 -0
- data/lib/puppet/pops/parser/evaluating_parser.rb +3 -3
- data/lib/puppet/pops/parser/lexer2.rb +411 -393
- data/lib/puppet/pops/parser/slurp_support.rb +5 -1
- data/lib/puppet/pops/types/type_calculator.rb +2 -6
- data/lib/puppet/pops/types/types.rb +3 -9
- data/lib/puppet/pops/validation/checker4_0.rb +36 -12
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +11 -1
- data/lib/puppet/provider/package/rpm.rb +0 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/service/debian.rb +5 -18
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -0
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- data/lib/puppet/resource/type.rb +2 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +17 -3
- data/lib/puppet/type/group.rb +6 -2
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util/windows/adsi.rb +61 -24
- data/lib/puppet/util/windows/principal.rb +181 -0
- data/lib/puppet/util/windows/registry.rb +21 -15
- data/lib/puppet/util/windows/sid.rb +42 -11
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- data/spec/integration/parser/collection_spec.rb +8 -0
- data/spec/integration/util/windows/principal_spec.rb +115 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +2 -2
- data/spec/unit/application/lookup_spec.rb +138 -28
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +6 -6
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +30 -3
- data/spec/unit/functions4_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +5 -2
- data/spec/unit/indirector/json_spec.rb +1 -1
- data/spec/unit/node_spec.rb +8 -0
- data/spec/unit/parser/compiler_spec.rb +0 -18
- data/spec/unit/pops/evaluator/access_ops_spec.rb +4 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +84 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +6 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +0 -17
- data/spec/unit/pops/validator/validator_spec.rb +87 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- data/spec/unit/provider/package/pip_spec.rb +41 -13
- data/spec/unit/provider/package/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/systemd_spec.rb +18 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- data/spec/unit/resource_spec.rb +12 -2
- data/spec/unit/util/windows/adsi_spec.rb +44 -36
- data/spec/unit/util/windows/sid_spec.rb +47 -10
- metadata +77 -10
@@ -14,6 +14,16 @@ describe Puppet::Application::Lookup do
|
|
14
14
|
expect { lookup.run_command }.to raise_error(RuntimeError, expected_error)
|
15
15
|
end
|
16
16
|
|
17
|
+
it "does not allow invalid arguments for '--merge'" do
|
18
|
+
lookup.options[:node] = 'dantooine.local'
|
19
|
+
lookup.options[:merge] = 'something_bad'
|
20
|
+
lookup.command_line.stubs(:args).returns(['atton', 'kreia'])
|
21
|
+
|
22
|
+
expected_error = "The --merge option only accepts 'first', 'hash', 'unique', or 'deep'\nRun 'puppet lookup --help' for more details"
|
23
|
+
|
24
|
+
expect { lookup.run_command }.to raise_error(RuntimeError, expected_error)
|
25
|
+
end
|
26
|
+
|
17
27
|
it "does not allow deep merge options if '--merge' was not set to deep" do
|
18
28
|
lookup.options[:node] = 'dantooine.local'
|
19
29
|
lookup.options[:merge_hash_arrays] = true
|
@@ -44,6 +54,18 @@ describe Puppet::Application::Lookup do
|
|
44
54
|
expect { lookup.run_command }.to output("rand\n").to_stdout
|
45
55
|
end
|
46
56
|
|
57
|
+
%w(first unique hash deep).each do |opt|
|
58
|
+
|
59
|
+
it "accepts --merge #{opt}" do
|
60
|
+
lookup.options[:node] = 'dantooine.local'
|
61
|
+
lookup.options[:merge] = opt
|
62
|
+
lookup.command_line.stubs(:args).returns(['atton', 'kreia'])
|
63
|
+
lookup.stubs(:generate_scope).yields('scope')
|
64
|
+
Puppet::Pops::Lookup.stubs(:lookup).returns('rand')
|
65
|
+
expect { lookup.run_command }.to output("--- rand\n...\n").to_stdout
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
47
69
|
it "prints the value found by lookup" do
|
48
70
|
lookup.options[:node] = 'dantooine.local'
|
49
71
|
lookup.command_line.stubs(:args).returns(['atton', 'kreia'])
|
@@ -56,7 +78,7 @@ describe Puppet::Application::Lookup do
|
|
56
78
|
end
|
57
79
|
|
58
80
|
|
59
|
-
context 'when
|
81
|
+
context 'when given a valid configuration' do
|
60
82
|
let (:lookup) { Puppet::Application[:lookup] }
|
61
83
|
|
62
84
|
# There is a fully configured 'sample' environment in fixtures at this location
|
@@ -64,7 +86,7 @@ describe Puppet::Application::Lookup do
|
|
64
86
|
|
65
87
|
let(:facts) { Puppet::Node::Facts.new("facts", {}) }
|
66
88
|
|
67
|
-
let(:node) { Puppet::Node.new("testnode", :facts => facts, :environment =>
|
89
|
+
let(:node) { Puppet::Node.new("testnode", :facts => facts, :environment => 'production') }
|
68
90
|
|
69
91
|
let(:expected_json_hash) { {
|
70
92
|
'type' => 'merge',
|
@@ -104,30 +126,30 @@ describe Puppet::Application::Lookup do
|
|
104
126
|
:event => :result,
|
105
127
|
:value => 'This is A',
|
106
128
|
:branches => [
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
{
|
113
|
-
:type => :data_provider,
|
114
|
-
:name => 'Hiera Data Provider, version 4',
|
115
|
-
:configuration_path => "#{environmentpath}/production/hiera.yaml",
|
116
|
-
:branches => [
|
129
|
+
{ :key => 'a',
|
130
|
+
:event => :not_found,
|
131
|
+
:type => :global,
|
132
|
+
:name => :hiera
|
133
|
+
},
|
117
134
|
{
|
118
135
|
:type => :data_provider,
|
119
|
-
:name => '
|
136
|
+
:name => 'Hiera Data Provider, version 4',
|
137
|
+
:configuration_path => "#{environmentpath}/production/hiera.yaml",
|
120
138
|
:branches => [
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
139
|
+
{
|
140
|
+
:type => :data_provider,
|
141
|
+
:name => 'common',
|
142
|
+
:branches => [
|
143
|
+
{
|
144
|
+
:key => 'a',
|
145
|
+
:value => 'This is A',
|
146
|
+
:event => :found,
|
147
|
+
:type => :path,
|
148
|
+
:original_path => 'common',
|
149
|
+
:path => "#{environmentpath}/production/data/common.yaml",
|
150
|
+
}]
|
151
|
+
}]
|
152
|
+
}]
|
131
153
|
} }
|
132
154
|
|
133
155
|
around(:each) do |example|
|
@@ -140,8 +162,8 @@ describe Puppet::Application::Lookup do
|
|
140
162
|
end
|
141
163
|
end
|
142
164
|
|
143
|
-
it 'produces human readable text by default' do
|
144
|
-
lookup.options[:node] =
|
165
|
+
it '--explain produces human readable text by default' do
|
166
|
+
lookup.options[:node] = node
|
145
167
|
lookup.options[:explain] = true
|
146
168
|
lookup.command_line.stubs(:args).returns(['a'])
|
147
169
|
expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
|
@@ -152,14 +174,70 @@ Merge strategy first
|
|
152
174
|
ConfigurationPath "#{environmentpath}/production/hiera.yaml"
|
153
175
|
Data Provider "common"
|
154
176
|
Path "#{environmentpath}/production/data/common.yaml"
|
155
|
-
Original path: common
|
177
|
+
Original path: "common"
|
156
178
|
Found key: "a" value: "This is A"
|
157
179
|
Merged result: "This is A"
|
158
180
|
EXPLANATION
|
159
181
|
end
|
160
182
|
|
183
|
+
it '--explain produces human readable text of a hash merge when using --explain-options' do
|
184
|
+
lookup.options[:node] = node
|
185
|
+
lookup.options[:explain_options] = true
|
186
|
+
expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
|
187
|
+
Merge strategy hash
|
188
|
+
Data Binding "hiera"
|
189
|
+
No such key: "lookup_options"
|
190
|
+
Data Provider "Hiera Data Provider, version 4"
|
191
|
+
ConfigurationPath "#{environmentpath}/production/hiera.yaml"
|
192
|
+
Data Provider "common"
|
193
|
+
Path "#{environmentpath}/production/data/common.yaml"
|
194
|
+
Original path: "common"
|
195
|
+
Found key: "lookup_options" value: {
|
196
|
+
"a" => "first"
|
197
|
+
}
|
198
|
+
Merged result: {
|
199
|
+
"a" => "first"
|
200
|
+
}
|
201
|
+
EXPLANATION
|
202
|
+
end
|
203
|
+
|
204
|
+
it '--explain produces human readable text of a hash merge when using both --explain and --explain-options' do
|
205
|
+
lookup.options[:node] = node
|
206
|
+
lookup.options[:explain] = true
|
207
|
+
lookup.options[:explain_options] = true
|
208
|
+
lookup.command_line.stubs(:args).returns(['a'])
|
209
|
+
expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
|
210
|
+
Searching for "lookup_options"
|
211
|
+
Merge strategy hash
|
212
|
+
Data Binding "hiera"
|
213
|
+
No such key: "lookup_options"
|
214
|
+
Data Provider "Hiera Data Provider, version 4"
|
215
|
+
ConfigurationPath "#{environmentpath}/production/hiera.yaml"
|
216
|
+
Data Provider "common"
|
217
|
+
Path "#{environmentpath}/production/data/common.yaml"
|
218
|
+
Original path: "common"
|
219
|
+
Found key: "lookup_options" value: {
|
220
|
+
"a" => "first"
|
221
|
+
}
|
222
|
+
Merged result: {
|
223
|
+
"a" => "first"
|
224
|
+
}
|
225
|
+
Searching for "a"
|
226
|
+
Merge strategy first
|
227
|
+
Data Binding "hiera"
|
228
|
+
No such key: "a"
|
229
|
+
Data Provider "Hiera Data Provider, version 4"
|
230
|
+
ConfigurationPath "#{environmentpath}/production/hiera.yaml"
|
231
|
+
Data Provider "common"
|
232
|
+
Path "#{environmentpath}/production/data/common.yaml"
|
233
|
+
Original path: "common"
|
234
|
+
Found key: "a" value: "This is A"
|
235
|
+
Merged result: "This is A"
|
236
|
+
EXPLANATION
|
237
|
+
end
|
238
|
+
|
161
239
|
it 'can produce a yaml explanation' do
|
162
|
-
lookup.options[:node] =
|
240
|
+
lookup.options[:node] = node
|
163
241
|
lookup.options[:explain] = true
|
164
242
|
lookup.options[:render_as] = :yaml
|
165
243
|
lookup.command_line.stubs(:args).returns(['a'])
|
@@ -176,7 +254,7 @@ Merge strategy first
|
|
176
254
|
end
|
177
255
|
|
178
256
|
it 'can produce a json explanation' do
|
179
|
-
lookup.options[:node] =
|
257
|
+
lookup.options[:node] = node
|
180
258
|
lookup.options[:explain] = true
|
181
259
|
lookup.options[:render_as] = :json
|
182
260
|
lookup.command_line.stubs(:args).returns(['a'])
|
@@ -191,5 +269,37 @@ Merge strategy first
|
|
191
269
|
end
|
192
270
|
expect(JSON.parse(output)).to eq(expected_json_hash)
|
193
271
|
end
|
272
|
+
|
273
|
+
context 'the global scope' do
|
274
|
+
it "is unaffected by global variables unless '--compile' is used" do
|
275
|
+
lookup.options[:node] = node
|
276
|
+
lookup.command_line.stubs(:args).returns(['c'])
|
277
|
+
expect { lookup.run_command }.to output("--- This is\n...\n").to_stdout
|
278
|
+
end
|
279
|
+
|
280
|
+
it "is affected by global variables when '--compile' is used" do
|
281
|
+
lookup.options[:node] = node
|
282
|
+
lookup.options[:compile] = true
|
283
|
+
lookup.command_line.stubs(:args).returns(['c'])
|
284
|
+
expect { lookup.run_command }.to output("--- This is C from site.pp\n...\n").to_stdout
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
context 'using a puppet function as data provider' do
|
289
|
+
let(:node) { Puppet::Node.new("testnode", :facts => facts, :environment => 'puppet_func_provider') }
|
290
|
+
|
291
|
+
it "works OK in the absense of '--compile'" do
|
292
|
+
lookup.options[:node] = node
|
293
|
+
lookup.command_line.stubs(:args).returns(['c'])
|
294
|
+
expect { lookup.run_command }.to output("--- This is C from data.pp\n...\n").to_stdout
|
295
|
+
end
|
296
|
+
|
297
|
+
it "global scope is affected by global variables when '--compile' is used" do
|
298
|
+
lookup.options[:node] = node
|
299
|
+
lookup.options[:compile] = true
|
300
|
+
lookup.command_line.stubs(:args).returns(['c'])
|
301
|
+
expect { lookup.run_command }.to output("--- This is C from site.pp\n...\n").to_stdout
|
302
|
+
end
|
303
|
+
end
|
194
304
|
end
|
195
305
|
end
|
@@ -53,6 +53,12 @@ describe "when using a hiera data provider" do
|
|
53
53
|
expect(resources).to include('module data param_a is 100, module data param_b is 200, module data param_c is 300, module data param_d is 400, module data param_e is 500')
|
54
54
|
end
|
55
55
|
|
56
|
+
it 'keeps lookup_options in one module separate from lookup_options in another' do
|
57
|
+
resources1 = compile('hiera_modules', 'include one').resources.select {|r| r.ref.start_with?('Class[One]')}
|
58
|
+
resources2 = compile('hiera_modules', 'include two').resources.select {|r| r.ref.start_with?('Class[One]')}
|
59
|
+
expect(resources1).to eq(resources2)
|
60
|
+
end
|
61
|
+
|
56
62
|
it 'does not perform merge of values declared in environment and module when resolving parameters' do
|
57
63
|
resources = compile_and_get_notifications('hiera_misc')
|
58
64
|
expect(resources).to include('env 1, ')
|
@@ -81,10 +87,8 @@ describe "when using a hiera data provider" do
|
|
81
87
|
expect(resources[0]).to eq('A, B, C, MA, MB, MC')
|
82
88
|
end
|
83
89
|
|
84
|
-
it "
|
85
|
-
|
86
|
-
expect(resources.size).to eq(1)
|
87
|
-
expect(resources[0]).to eq('deep')
|
90
|
+
it "will not find 'lookup_options' as a regular value" do
|
91
|
+
expect { compile_and_get_notifications('hiera_misc', '$r = lookup("lookup_options")') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value/)
|
88
92
|
end
|
89
93
|
|
90
94
|
it 'does find unqualified keys in the environment' do
|
@@ -180,16 +184,189 @@ Merge strategy first
|
|
180
184
|
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
181
185
|
Data Provider "common"
|
182
186
|
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
183
|
-
Original path: common
|
187
|
+
Original path: "common"
|
184
188
|
Interpolation on "Value from interpolation %{scope("target_scope")}"
|
185
189
|
Global Scope"
|
186
190
|
Found key: "target_scope" value: "with scope"
|
187
191
|
Found key: "km_scope" value: "Value from interpolation with scope"
|
188
192
|
Merged result: "Value from interpolation with scope"
|
193
|
+
EOS
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'will report that merge options was found in the lookup_options hash' do
|
198
|
+
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
199
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true)
|
200
|
+
value = Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
201
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
202
|
+
Using merge options from "lookup_options" hash
|
203
|
+
Merge strategy deep
|
204
|
+
Data Binding "hiera"
|
205
|
+
No such key: "one::loptsm_test::hash"
|
206
|
+
Data Provider "Hiera Data Provider, version 4"
|
207
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
208
|
+
Data Provider "common"
|
209
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
210
|
+
Original path: "common"
|
211
|
+
Found key: "one::loptsm_test::hash" value: {
|
212
|
+
"a" => "A",
|
213
|
+
"b" => "B",
|
214
|
+
"m" => {
|
215
|
+
"ma" => "MA",
|
216
|
+
"mb" => "MB"
|
217
|
+
}
|
218
|
+
}
|
219
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
220
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
221
|
+
Data Provider "common"
|
222
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
223
|
+
Original path: "common"
|
224
|
+
Found key: "one::loptsm_test::hash" value: {
|
225
|
+
"a" => "A",
|
226
|
+
"c" => "C",
|
227
|
+
"m" => {
|
228
|
+
"ma" => "MA",
|
229
|
+
"mc" => "MC",
|
230
|
+
"mb" => "MB"
|
231
|
+
}
|
232
|
+
}
|
233
|
+
Merged result: {
|
234
|
+
"a" => "A",
|
235
|
+
"c" => "C",
|
236
|
+
"m" => {
|
237
|
+
"ma" => "MA",
|
238
|
+
"mc" => "MC",
|
239
|
+
"mb" => "MB"
|
240
|
+
},
|
241
|
+
"b" => "B"
|
242
|
+
}
|
243
|
+
EOS
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
it 'will report lookup_options details in combination with details of found value' do
|
248
|
+
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
249
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, Puppet::Pops::Lookup::Explainer.new(true))
|
250
|
+
value = Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
251
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
252
|
+
Searching for "lookup_options"
|
253
|
+
Merge strategy hash
|
254
|
+
Data Binding "hiera"
|
255
|
+
No such key: "lookup_options"
|
256
|
+
Data Provider "Hiera Data Provider, version 4"
|
257
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
258
|
+
Data Provider "common"
|
259
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
260
|
+
Original path: "common"
|
261
|
+
Found key: "lookup_options" value: {
|
262
|
+
"one::lopts_test::hash" => {
|
263
|
+
"merge" => "deep"
|
264
|
+
}
|
265
|
+
}
|
266
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
267
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
268
|
+
Data Provider "common"
|
269
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
270
|
+
Original path: "common"
|
271
|
+
Found key: "lookup_options" value: {
|
272
|
+
"one::loptsm_test::hash" => {
|
273
|
+
"merge" => "deep"
|
274
|
+
}
|
275
|
+
}
|
276
|
+
Merged result: {
|
277
|
+
"one::loptsm_test::hash" => {
|
278
|
+
"merge" => "deep"
|
279
|
+
},
|
280
|
+
"one::lopts_test::hash" => {
|
281
|
+
"merge" => "deep"
|
282
|
+
}
|
283
|
+
}
|
284
|
+
Searching for "one::loptsm_test::hash"
|
285
|
+
Merge strategy deep
|
286
|
+
Data Binding "hiera"
|
287
|
+
No such key: "one::loptsm_test::hash"
|
288
|
+
Data Provider "Hiera Data Provider, version 4"
|
289
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
290
|
+
Data Provider "common"
|
291
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
292
|
+
Original path: "common"
|
293
|
+
Found key: "one::loptsm_test::hash" value: {
|
294
|
+
"a" => "A",
|
295
|
+
"b" => "B",
|
296
|
+
"m" => {
|
297
|
+
"ma" => "MA",
|
298
|
+
"mb" => "MB"
|
299
|
+
}
|
300
|
+
}
|
301
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
302
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
303
|
+
Data Provider "common"
|
304
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
305
|
+
Original path: "common"
|
306
|
+
Found key: "one::loptsm_test::hash" value: {
|
307
|
+
"a" => "A",
|
308
|
+
"c" => "C",
|
309
|
+
"m" => {
|
310
|
+
"ma" => "MA",
|
311
|
+
"mc" => "MC",
|
312
|
+
"mb" => "MB"
|
313
|
+
}
|
314
|
+
}
|
315
|
+
Merged result: {
|
316
|
+
"a" => "A",
|
317
|
+
"c" => "C",
|
318
|
+
"m" => {
|
319
|
+
"ma" => "MA",
|
320
|
+
"mc" => "MC",
|
321
|
+
"mb" => "MB"
|
322
|
+
},
|
323
|
+
"b" => "B"
|
324
|
+
}
|
325
|
+
EOS
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
it 'will report config path (original and resolved), data path (original and resolved), and interpolation (before and after)' do
|
330
|
+
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
331
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, Puppet::Pops::Lookup::Explainer.new(true, true))
|
332
|
+
value = Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
333
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
334
|
+
Merge strategy hash
|
335
|
+
Data Binding "hiera"
|
336
|
+
No such key: "lookup_options"
|
337
|
+
Data Provider "Hiera Data Provider, version 4"
|
338
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
339
|
+
Data Provider "common"
|
340
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
341
|
+
Original path: "common"
|
342
|
+
Found key: "lookup_options" value: {
|
343
|
+
"one::lopts_test::hash" => {
|
344
|
+
"merge" => "deep"
|
345
|
+
}
|
346
|
+
}
|
347
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
348
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
349
|
+
Data Provider "common"
|
350
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
351
|
+
Original path: "common"
|
352
|
+
Found key: "lookup_options" value: {
|
353
|
+
"one::loptsm_test::hash" => {
|
354
|
+
"merge" => "deep"
|
355
|
+
}
|
356
|
+
}
|
357
|
+
Merged result: {
|
358
|
+
"one::loptsm_test::hash" => {
|
359
|
+
"merge" => "deep"
|
360
|
+
},
|
361
|
+
"one::lopts_test::hash" => {
|
362
|
+
"merge" => "deep"
|
363
|
+
}
|
364
|
+
}
|
189
365
|
EOS
|
190
366
|
end
|
191
367
|
end
|
192
368
|
end
|
369
|
+
|
193
370
|
def parent_fixture(dir_name)
|
194
371
|
File.absolute_path(File.join(my_fixture_dir(), "../#{dir_name}"))
|
195
372
|
end
|
@@ -150,7 +150,7 @@ describe Puppet::Face[:epp, :current] do
|
|
150
150
|
dir = dir_containing('templates', { template_name => "<% 1 2 3 %>" })
|
151
151
|
template = File.join(dir, template_name)
|
152
152
|
expect(eppface.dump(template, :validate => true)).to eq("")
|
153
|
-
expect(@logs.join).to match(/This Literal Integer has no effect
|
153
|
+
expect(@logs.join).to match(/This Literal Integer has no effect.*\/template1.epp:1:4/)
|
154
154
|
end
|
155
155
|
|
156
156
|
it "validated content by default" do
|
@@ -158,7 +158,7 @@ describe Puppet::Face[:epp, :current] do
|
|
158
158
|
dir = dir_containing('templates', { template_name => "<% 1 2 3 %>" })
|
159
159
|
template = File.join(dir, template_name)
|
160
160
|
expect(eppface.dump(template)).to eq("")
|
161
|
-
expect(@logs.join).to match(/This Literal Integer has no effect
|
161
|
+
expect(@logs.join).to match(/This Literal Integer has no effect.*\/template1.epp:1:4/)
|
162
162
|
end
|
163
163
|
|
164
164
|
it "informs the user of files that don't exist" do
|