Module: Puppet::Indirector
- Included in:
- FileBucket::File, FileServing::Content, FileServing::Metadata, Node, Node::Facts, Node::Inventory, Resource, Resource::Catalog, Resource::Type, Run, SSL::Certificate, SSL::CertificateRequest, SSL::CertificateRevocationList, SSL::Host, SSL::Key, Status, Transaction::Report, Util::Instrumentation::Data, Util::Instrumentation::IndirectionProbe, Util::Instrumentation::Listener
- Defined in:
- lib/vendor/puppet/indirector.rb
Overview
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.
Defined Under Namespace
Modules: ClassMethods, Envelope Classes: ActiveRecord, CertificateStatus, Code, Couch, DirectFileServer, Exec, Face, FileContent, FileMetadata, FileServer, Indirection, InstrumentationData, InstrumentationListener, InstrumentationProbe, Ldap, Memory, Plain, Queue, REST, Request, ResourceType, SslFile, Status, StoreConfigs, Terminus, Yaml
Constant Summary collapse
- BadNameRegexp =
Helper definition for indirections that handle filenames.
Regexp.union(/^\.\./, %r{[\\/]}, "\0", /(?i)^[a-z]:/)
Class Method Summary collapse
Instance Method Summary collapse
-
#indirects(indirection, options = {}) ⇒ Object
Declare that the including class indirects its methods to this terminus.
Class Method Details
.configure_routes(application_routes) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/vendor/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 |
Instance Method Details
#indirects(indirection, options = {}) ⇒ Object
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.
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/vendor/puppet/indirector.rb', line 36 def indirects(indirection, = {}) 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, ) end |