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, line 15
def self.configure_routes(application_routes)
  application_routes.each do |indirection_name, termini|
    indirection_name = indirection_name.to_sym
    terminus_name = termini["terminus"]
    cache_name    = termini["cache"]

    Puppet::Indirector::Terminus.terminus_class(indirection_name, terminus_name || cache_name)

    indirection = Puppet::Indirector::Indirection.instance(indirection_name)
    raise "Indirection #{indirection_name} does not exist" unless indirection

    indirection.terminus_class = terminus_name if terminus_name
    indirection.cache_class = cache_name if cache_name
  end
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, line 36
def indirects(indirection, options = {})
  raise(ArgumentError, "Already handling indirection for #{@indirection.name}; cannot also handle #{indirection}") if @indirection
  # populate this class with the various new methods
  extend ClassMethods
  include Puppet::Indirector::Envelope
  extend Puppet::Network::FormatHandler

  # instantiate the actual Terminus for that type and this name (:ldap, w/ args :node)
  # & hook the instantiated Terminus into this class (Node: @indirection = terminus)
  @indirection = Puppet::Indirector::Indirection.new(self, indirection,  options)
end