@@ -337,18 +337,6 @@ def generate_scope
337
337
Puppet . settings [ :facts_terminus ] = 'facter'
338
338
end
339
339
340
- unless node . is_a? ( Puppet ::Node ) # to allow unit tests to pass a node instance
341
- ni = Puppet ::Node . indirection
342
- tc = ni . terminus_class
343
- if tc == :plain || options [ :compile ]
344
- node = ni . find ( node )
345
- else
346
- ni . terminus_class = :plain
347
- node = ni . find ( node )
348
- ni . terminus_class = tc
349
- end
350
- end
351
-
352
340
fact_file = options [ :fact_file ]
353
341
354
342
if fact_file
@@ -364,7 +352,26 @@ def generate_scope
364
352
unless given_facts . instance_of? ( Hash )
365
353
raise _ ( "Incorrectly formatted data in %{fact_file} given via the --facts flag (only accepts yaml and json files)" ) % { fact_file : fact_file }
366
354
end
367
- node . add_extra_facts ( given_facts )
355
+ end
356
+
357
+ unless node . is_a? ( Puppet ::Node ) # to allow unit tests to pass a node instance
358
+ facts = Puppet ::Node ::Facts . indirection . find ( node , :environment => Puppet . lookup ( :current_environment ) )
359
+
360
+ facts = Puppet ::Node ::Facts . new ( node , { } ) if facts . nil?
361
+ facts . add_extra_values ( given_facts ) if given_facts
362
+
363
+ ni = Puppet ::Node . indirection
364
+ tc = ni . terminus_class
365
+
366
+ if tc == :plain || options [ :compile ]
367
+ node = ni . find ( node , facts : facts )
368
+ else
369
+ ni . terminus_class = :plain
370
+ node = ni . find ( node , facts : facts )
371
+ ni . terminus_class = tc
372
+ end
373
+ else
374
+ node . add_extra_facts ( given_facts ) if given_facts
368
375
end
369
376
370
377
Puppet [ :code ] = 'undef' unless options [ :compile ]
0 commit comments