File: generic_plan_instantiator.rb

package info (click to toggle)
puppet-agent 7.23.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 19,092 kB
  • sloc: ruby: 245,074; sh: 456; makefile: 38; xml: 33
file content (28 lines) | stat: -rw-r--r-- 1,058 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module Puppet::Pops
module Loader
# The GenericPlanInstantiator dispatches to either PuppetPlanInstantiator or a
# yaml_plan_instantiator injected through the Puppet context, depending on
# the type of the plan.
#
class GenericPlanInstantiator
  def self.create(loader, typed_name, source_refs)
    if source_refs.length > 1
      raise ArgumentError, _("Found multiple files for plan '%{plan_name}' but only one is allowed") % { plan_name: typed_name.name }
    end

    source_ref = source_refs[0]
    code_string = Puppet::FileSystem.read(source_ref, :encoding => 'utf-8')

    instantiator = if source_ref.end_with?('.pp')
                     Puppet::Pops::Loader::PuppetPlanInstantiator
                   else
                     Puppet.lookup(:yaml_plan_instantiator) do
                       raise Puppet::DevError, _("No instantiator is available to load plan from %{source_ref}") % { source_ref: source_ref }
                     end
                   end

    instantiator.create(loader, typed_name, source_ref, code_string)
  end
end
end
end