diff options
author | Rick Bradley <rick@rickbradley.com> | 2007-10-15 23:01:42 -0500 |
---|---|---|
committer | Rick Bradley <rick@rickbradley.com> | 2007-10-15 23:01:42 -0500 |
commit | 298eff27a6c702c177fa11e08c980c7365382162 (patch) | |
tree | d1d85d5534a0cafd7bb67a214e442e7c88dda868 /lib/puppet | |
parent | ba952029b057cb64cf28d9e4dfb5c78868a4b53f (diff) | |
parent | a815f7888b021a46332c23450795f057533d0093 (diff) | |
download | puppet-298eff27a6c702c177fa11e08c980c7365382162.tar.gz puppet-298eff27a6c702c177fa11e08c980c7365382162.tar.xz puppet-298eff27a6c702c177fa11e08c980c7365382162.zip |
Merge branch 'master' of git://reductivelabs.com/puppet into routing
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/indirector/checksum/file.rb (renamed from lib/puppet/indirector/file/checksum.rb) | 2 | ||||
-rw-r--r-- | lib/puppet/indirector/configuration/compiler.rb (renamed from lib/puppet/indirector/code/configuration.rb) | 2 | ||||
-rw-r--r-- | lib/puppet/indirector/configuration/yaml.rb (renamed from lib/puppet/indirector/yaml/configuration.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/facts/facter.rb (renamed from lib/puppet/indirector/code/facts.rb) | 2 | ||||
-rw-r--r-- | lib/puppet/indirector/facts/yaml.rb (renamed from lib/puppet/indirector/yaml/facts.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/indirection.rb | 4 | ||||
-rw-r--r-- | lib/puppet/indirector/node/exec.rb (renamed from lib/puppet/indirector/exec/node.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/node/ldap.rb (renamed from lib/puppet/indirector/ldap/node.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/node/memory.rb (renamed from lib/puppet/indirector/memory/node.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/node/null.rb (renamed from lib/puppet/indirector/null/node.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/node/rest.rb (renamed from lib/puppet/indirector/rest/node.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/node/yaml.rb (renamed from lib/puppet/indirector/yaml/node.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/report/processor.rb (renamed from lib/puppet/indirector/code/report.rb) | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/terminus.rb | 35 | ||||
-rw-r--r-- | lib/puppet/indirector/yaml.rb | 2 | ||||
-rw-r--r-- | lib/puppet/node/configuration.rb | 2 | ||||
-rwxr-xr-x | lib/puppet/node/facts.rb | 2 | ||||
-rw-r--r-- | lib/puppet/transaction/report.rb | 2 |
18 files changed, 55 insertions, 25 deletions
diff --git a/lib/puppet/indirector/file/checksum.rb b/lib/puppet/indirector/checksum/file.rb index 2f0974ced..3b196a1f8 100644 --- a/lib/puppet/indirector/file/checksum.rb +++ b/lib/puppet/indirector/checksum/file.rb @@ -1,7 +1,7 @@ require 'puppet/checksum' require 'puppet/indirector/file' -class Puppet::Indirector::File::Checksum < Puppet::Indirector::File +class Puppet::Checksum::File < Puppet::Indirector::File desc "Store files in a directory set based on their checksums." def initialize diff --git a/lib/puppet/indirector/code/configuration.rb b/lib/puppet/indirector/configuration/compiler.rb index 50728757c..9fc8a7939 100644 --- a/lib/puppet/indirector/code/configuration.rb +++ b/lib/puppet/indirector/configuration/compiler.rb @@ -4,7 +4,7 @@ require 'puppet/indirector/code' require 'puppet/parser/interpreter' require 'yaml' -class Puppet::Indirector::Code::Configuration < Puppet::Indirector::Code +class Puppet::Node::Configuration::Compiler < Puppet::Indirector::Code desc "Puppet's configuration compilation interface. Passed a node name or other key, retrieves information about the node (using the ``node_source``) and returns a compiled configuration." diff --git a/lib/puppet/indirector/yaml/configuration.rb b/lib/puppet/indirector/configuration/yaml.rb index 8e40ff9bf..1330aaffa 100644 --- a/lib/puppet/indirector/yaml/configuration.rb +++ b/lib/puppet/indirector/configuration/yaml.rb @@ -1,6 +1,7 @@ +require 'puppet/node/configuration' require 'puppet/indirector/yaml' -class Puppet::Indirector::Yaml::Configuration < Puppet::Indirector::Yaml +class Puppet::Node::Configuration::Yaml < Puppet::Indirector::Yaml desc "Store configurations as flat files, serialized using YAML." private diff --git a/lib/puppet/indirector/code/facts.rb b/lib/puppet/indirector/facts/facter.rb index b64e9854e..e3e82c9e6 100644 --- a/lib/puppet/indirector/code/facts.rb +++ b/lib/puppet/indirector/facts/facter.rb @@ -1,7 +1,7 @@ require 'puppet/node/facts' require 'puppet/indirector/code' -class Puppet::Indirector::Code::Facts < Puppet::Indirector::Code +class Puppet::Node::Facts::Facter < Puppet::Indirector::Code desc "Retrieve facts from Facter. This provides a somewhat abstract interface between Puppet and Facter. It's only 'somewhat' abstract because it always returns the local host's facts, regardless of what you attempt to find." diff --git a/lib/puppet/indirector/yaml/facts.rb b/lib/puppet/indirector/facts/yaml.rb index 754b0d5a6..99d17d7b0 100644 --- a/lib/puppet/indirector/yaml/facts.rb +++ b/lib/puppet/indirector/facts/yaml.rb @@ -1,5 +1,6 @@ +require 'puppet/node/facts' require 'puppet/indirector/yaml' -class Puppet::Indirector::Yaml::Facts < Puppet::Indirector::Yaml +class Puppet::Node::Facts::Yaml < Puppet::Indirector::Yaml desc "Store client facts as flat files, serialized using YAML." end diff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb index efa8819bb..0d814c5ef 100644 --- a/lib/puppet/indirector/indirection.rb +++ b/lib/puppet/indirector/indirection.rb @@ -85,7 +85,7 @@ class Puppet::Indirector::Indirection unless terminus_class and terminus_class.to_s != "" raise ArgumentError, "Invalid terminus name %s" % terminus_class.inspect end - unless Puppet::Indirector::Terminus.terminus_class(terminus_class, self.name) + unless Puppet::Indirector::Terminus.terminus_class(self.name, terminus_class) raise ArgumentError, "Could not find terminus %s for indirection %s" % [terminus_class, self.name] end end @@ -132,7 +132,7 @@ class Puppet::Indirector::Indirection # Create a new terminus instance. def make_terminus(terminus_class) # Load our terminus class. - unless klass = Puppet::Indirector::Terminus.terminus_class(terminus_class, self.name) + unless klass = Puppet::Indirector::Terminus.terminus_class(self.name, terminus_class) raise ArgumentError, "Could not find terminus %s for indirection %s" % [terminus_class, self.name] end return klass.new diff --git a/lib/puppet/indirector/exec/node.rb b/lib/puppet/indirector/node/exec.rb index 033afe3f0..c6dde484c 100644 --- a/lib/puppet/indirector/exec/node.rb +++ b/lib/puppet/indirector/node/exec.rb @@ -1,6 +1,7 @@ +require 'puppet/node' require 'puppet/indirector/exec' -class Puppet::Indirector::Exec::Node < Puppet::Indirector::Exec +class Puppet::Node::Exec < Puppet::Indirector::Exec desc "Call an external program to get node information." include Puppet::Util diff --git a/lib/puppet/indirector/ldap/node.rb b/lib/puppet/indirector/node/ldap.rb index 2e800abbe..a1c3c3a71 100644 --- a/lib/puppet/indirector/ldap/node.rb +++ b/lib/puppet/indirector/node/ldap.rb @@ -1,6 +1,7 @@ +require 'puppet/node' require 'puppet/indirector/ldap' -class Puppet::Indirector::Ldap::Node < Puppet::Indirector::Ldap +class Puppet::Node::Ldap < Puppet::Indirector::Ldap desc "Search in LDAP for node configuration information." # The attributes that Puppet class information is stored in. diff --git a/lib/puppet/indirector/memory/node.rb b/lib/puppet/indirector/node/memory.rb index c5000b879..0710f82ac 100644 --- a/lib/puppet/indirector/memory/node.rb +++ b/lib/puppet/indirector/node/memory.rb @@ -1,6 +1,7 @@ +require 'puppet/node' require 'puppet/indirector/memory' -class Puppet::Indirector::Memory::Node < Puppet::Indirector::Memory +class Puppet::Node::Memory < Puppet::Indirector::Memory desc "Keep track of nodes in memory but nowhere else. This is used for one-time compiles, such as what the stand-alone ``puppet`` does. To use this terminus, you must load it with the data you want it diff --git a/lib/puppet/indirector/null/node.rb b/lib/puppet/indirector/node/null.rb index eb08f5697..4c5c1261b 100644 --- a/lib/puppet/indirector/null/node.rb +++ b/lib/puppet/indirector/node/null.rb @@ -1,6 +1,7 @@ +require 'puppet/node' require 'puppet/indirector/null' -class Puppet::Indirector::Null::Node < Puppet::Indirector::Null +class Puppet::Node::Null < Puppet::Indirector::Null desc "Always return an empty node object. This is the node source you should use when you don't have some other, functional source you want to use, as the compiler will not work without this node information." diff --git a/lib/puppet/indirector/rest/node.rb b/lib/puppet/indirector/node/rest.rb index ce809f77a..ed78e5937 100644 --- a/lib/puppet/indirector/rest/node.rb +++ b/lib/puppet/indirector/node/rest.rb @@ -1,6 +1,7 @@ +require 'puppet/node' require 'puppet/indirector/rest' -class Puppet::Indirector::REST::Node < Puppet::Indirector::REST +class Puppet::Node::REST < Puppet::Indirector::REST desc "TODO: FIXME" # TODO/FIXME end diff --git a/lib/puppet/indirector/yaml/node.rb b/lib/puppet/indirector/node/yaml.rb index 62fef58ac..bb96b280a 100644 --- a/lib/puppet/indirector/yaml/node.rb +++ b/lib/puppet/indirector/node/yaml.rb @@ -1,5 +1,6 @@ +require 'puppet/node' require 'puppet/indirector/yaml' -class Puppet::Indirector::Yaml::Node < Puppet::Indirector::Yaml +class Puppet::Node::Yaml < Puppet::Indirector::Yaml desc "Store node information as flat files, serialized using YAML." end diff --git a/lib/puppet/indirector/code/report.rb b/lib/puppet/indirector/report/processor.rb index a3c3a6df5..d2b7c84f3 100644 --- a/lib/puppet/indirector/code/report.rb +++ b/lib/puppet/indirector/report/processor.rb @@ -1,7 +1,8 @@ +require 'puppet/transaction/report' require 'puppet/indirector/code' require 'puppet/reports' -class Puppet::Indirector::Code::Report < Puppet::Indirector::Code +class Puppet::Transaction::Report::Processor < Puppet::Indirector::Code desc "Puppet's report processor. Processes the report with each of the report types listed in the 'reports' setting." diff --git a/lib/puppet/indirector/terminus.rb b/lib/puppet/indirector/terminus.rb index 37cfdc499..882afde41 100644 --- a/lib/puppet/indirector/terminus.rb +++ b/lib/puppet/indirector/terminus.rb @@ -19,6 +19,11 @@ class Puppet::Indirector::Terminus abstract_terminus end + # Convert a constant to a short name. + def const2name(const) + const.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern + end + # Look up the indirection if we were only provided a name. def indirection=(name) if name.is_a?(Puppet::Indirector::Indirection) @@ -30,13 +35,17 @@ class Puppet::Indirector::Terminus end end + def indirection_name + @indirection.name + end + # Register our subclass with the appropriate indirection. # This follows the convention that our terminus is named after the # indirection. def inherited(subclass) longname = subclass.to_s if longname =~ /#<Class/ - raise ArgumentError, "Terminus subclasses must have associated constants" + raise Puppet::DevError, "Terminus subclasses must have associated constants" end names = longname.split("::") @@ -56,10 +65,17 @@ class Puppet::Indirector::Terminus # Yay, class/instance confusion. subclass.terminus_type = self.name + # Our subclass is specifically associated with an indirection. + indirection_name = names.pop.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern + + if indirection_name == "" or indirection_name.nil? + raise Puppet::DevError, "Could not discern indirection model from class constant" + end + # This will throw an exception if the indirection instance cannot be found. # Do this last, because it also registers the terminus type with the indirection, # which needs the above information. - subclass.indirection = name + subclass.indirection = indirection_name # And add this instance to the instance hash. Puppet::Indirector::Terminus.register_terminus_class(subclass) @@ -74,16 +90,21 @@ class Puppet::Indirector::Terminus indirection.model end + # Convert a short name to a constant. + def name2const(name) + name.to_s.capitalize.sub(/_(.)/) { |i| $1.upcase } + end + # Register a class, probably autoloaded. def register_terminus_class(klass) - setup_instance_loading klass.terminus_type - instance_hash(klass.terminus_type)[klass.name] = klass + setup_instance_loading klass.indirection_name + instance_hash(klass.indirection_name)[klass.name] = klass end # Return a terminus by name, using the autoloader. - def terminus_class(type, name) - setup_instance_loading type - loaded_instance(type, name) + def terminus_class(indirection_name, terminus_type) + setup_instance_loading indirection_name + loaded_instance(indirection_name, terminus_type) end private diff --git a/lib/puppet/indirector/yaml.rb b/lib/puppet/indirector/yaml.rb index e11c88474..16816d941 100644 --- a/lib/puppet/indirector/yaml.rb +++ b/lib/puppet/indirector/yaml.rb @@ -52,6 +52,6 @@ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus # Return the path to a given node's file. def path(name) - File.join(Puppet[:yamldir], self.name.to_s, name.to_s + ".yaml") + File.join(Puppet[:yamldir], self.class.indirection_name.to_s, name.to_s + ".yaml") end end diff --git a/lib/puppet/node/configuration.rb b/lib/puppet/node/configuration.rb index 9adf9aea3..f2bbfca00 100644 --- a/lib/puppet/node/configuration.rb +++ b/lib/puppet/node/configuration.rb @@ -7,7 +7,7 @@ require 'puppet/external/gratr/digraph' # and the relationships between them. class Puppet::Node::Configuration < Puppet::PGraph extend Puppet::Indirector - indirects :configuration, :terminus_class => :code + indirects :configuration, :terminus_class => :compiler # The host name this is a configuration for. attr_accessor :name diff --git a/lib/puppet/node/facts.rb b/lib/puppet/node/facts.rb index 2da6c488e..c60be3fcf 100755 --- a/lib/puppet/node/facts.rb +++ b/lib/puppet/node/facts.rb @@ -9,7 +9,7 @@ class Puppet::Node::Facts extend Puppet::Indirector # Use the node source as the indirection terminus. - indirects :facts, :terminus_class => :code + indirects :facts, :terminus_class => :facter attr_accessor :name, :values diff --git a/lib/puppet/transaction/report.rb b/lib/puppet/transaction/report.rb index f73c6a9fb..56f8a602a 100644 --- a/lib/puppet/transaction/report.rb +++ b/lib/puppet/transaction/report.rb @@ -8,7 +8,7 @@ require 'puppet/indirector' class Puppet::Transaction::Report extend Puppet::Indirector - indirects :report, :terminus_class => :code + indirects :report, :terminus_class => :processor attr_accessor :logs, :metrics, :time, :host |