summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorRick Bradley <rick@rickbradley.com>2007-10-15 23:01:42 -0500
committerRick Bradley <rick@rickbradley.com>2007-10-15 23:01:42 -0500
commit298eff27a6c702c177fa11e08c980c7365382162 (patch)
treed1d85d5534a0cafd7bb67a214e442e7c88dda868 /lib/puppet
parentba952029b057cb64cf28d9e4dfb5c78868a4b53f (diff)
parenta815f7888b021a46332c23450795f057533d0093 (diff)
downloadpuppet-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.rb4
-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.rb35
-rw-r--r--lib/puppet/indirector/yaml.rb2
-rw-r--r--lib/puppet/node/configuration.rb2
-rwxr-xr-xlib/puppet/node/facts.rb2
-rw-r--r--lib/puppet/transaction/report.rb2
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