module Puppet::Indirector

Manage indirections to termini. They are organized in terms of indirections -

or more terminus types defined. The indirection is configured via the indirects method, which will be called by the class extending itself with this module.

Constants

BadNameRegexp

Helper definition for indirections that handle filenames.

Public Class Methods

configure_routes(application_routes) click to toggle source
   # File lib/puppet/indirector.rb
17 def self.configure_routes(application_routes)
18   application_routes.each do |indirection_name, termini|
19     indirection_name = indirection_name.to_sym
20     terminus_name = termini["terminus"]
21     cache_name    = termini["cache"]
22 
23     Puppet::Indirector::Terminus.terminus_class(indirection_name, terminus_name || cache_name)
24 
25     indirection = Puppet::Indirector::Indirection.instance(indirection_name)
26     raise _("Indirection %{indirection_name} does not exist") % { indirection_name: indirection_name } unless indirection
27 
28     indirection.set_global_setting(:terminus_class, terminus_name) if terminus_name
29     indirection.set_global_setting(:cache_class, cache_name) if cache_name
30   end
31 end

Public Instance Methods

indirects(indirection, options = {}) click to toggle source

Declare that the including class indirects its methods to this terminus. The terminus name must be the name of a Puppet default, not the value – if it's the value, then it gets evaluated at parse time, which is before the user has had a chance to override it.

   # File lib/puppet/indirector.rb
38 def indirects(indirection, options = {})
39   raise(ArgumentError, _("Already handling indirection for %{current}; cannot also handle %{next}") % { current: @indirection.name, next: indirection }) if @indirection
40   # populate this class with the various new methods
41   extend ClassMethods
42   include Puppet::Indirector::Envelope
43   include Puppet::Network::FormatSupport
44 
45   # record the indirected class name for documentation purposes
46   options[:indirected_class] = name
47 
48   # instantiate the actual Terminus for that type and this name (:ldap, w/ args :node)
49   # & hook the instantiated Terminus into this class (Node: @indirection = terminus)
50   @indirection = Puppet::Indirector::Indirection.new(self, indirection, **options)
51 end