class Puppet::Pops::Loader::GenericPlanInstantiator

The GenericPlanInstantiator dispatches to either PuppetPlanInstantiator or a yaml_plan_instantiator injected through the Puppet context, depending on the type of the plan.

Public Class Methods

create(loader, typed_name, source_refs) click to toggle source
   # File lib/puppet/pops/loader/generic_plan_instantiator.rb
 8 def self.create(loader, typed_name, source_refs)
 9   if source_refs.length > 1
10     raise ArgumentError, _("Found multiple files for plan '%{plan_name}' but only one is allowed") % { plan_name: typed_name.name }
11   end
12 
13   source_ref = source_refs[0]
14   code_string = Puppet::FileSystem.read(source_ref, :encoding => 'utf-8')
15 
16   instantiator = if source_ref.end_with?('.pp')
17                    Puppet::Pops::Loader::PuppetPlanInstantiator
18                  else
19                    Puppet.lookup(:yaml_plan_instantiator) do
20                      raise Puppet::DevError, _("No instantiator is available to load plan from %{source_ref}") % { source_ref: source_ref }
21                    end
22                  end
23 
24   instantiator.create(loader, typed_name, source_ref, code_string)
25 end