module Puppet::Indirector
Manage indirections to termini. They are organized in terms of indirections -
-
e.g., configuration, node, file, certificate – and each indirection has one
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