From f3a304c557c096b5dbf319671cb84e5611eee30f Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Sun, 16 Mar 2008 17:37:12 -0500 Subject: Modifying the yaml terminus base class to use the timestamp of the yaml file as the version of the object. --- lib/puppet/indirector/yaml.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib') diff --git a/lib/puppet/indirector/yaml.rb b/lib/puppet/indirector/yaml.rb index 16816d941..4baeb38db 100644 --- a/lib/puppet/indirector/yaml.rb +++ b/lib/puppet/indirector/yaml.rb @@ -40,6 +40,11 @@ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus end end + def version(name) + return nil unless FileTest.exist?(path(name)) + return File.stat(path(name)).mtime + end + private def from_yaml(text) -- cgit From 4a45a1da0653f18df6bd41b009a30387df697909 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Sun, 16 Mar 2008 17:52:46 -0500 Subject: Caching node information in yaml (I figured caching in memory will cause ever-larger memory growth), and changing the external node terminus to use the version of the facts as their version. This will usually result in the cached node information being used, instead of always hitting the external node app during file serving. Note that if the facts aren't changed by the client, then this will result in the cached node being used, but at this point, the client always updates its facts. (#1130) --- lib/puppet/indirector/node/exec.rb | 7 +++++++ lib/puppet/node.rb | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/puppet/indirector/node/exec.rb b/lib/puppet/indirector/node/exec.rb index 71f4fa8e1..dcfc625b2 100644 --- a/lib/puppet/indirector/node/exec.rb +++ b/lib/puppet/indirector/node/exec.rb @@ -24,6 +24,13 @@ class Puppet::Node::Exec < Puppet::Indirector::Exec return create_node(name, result) end + # Use the version of the facts, since we assume that's the main thing + # that changes. If someone wants their own way of defining version, + # they can easily provide their own, um, version of this class. + def version(name) + Puppet::Node::Facts.version(name) + end + private # Turn our outputted objects into a Puppet::Node instance. diff --git a/lib/puppet/node.rb b/lib/puppet/node.rb index c0628ecdc..c39f364bc 100644 --- a/lib/puppet/node.rb +++ b/lib/puppet/node.rb @@ -10,7 +10,7 @@ class Puppet::Node extend Puppet::Indirector # Use the node source as the indirection terminus. - indirects :node, :terminus_setting => :node_terminus, :doc => "Where to find node information. + indirects :node, :terminus_setting => :node_terminus, :cache_class => :yaml, :doc => "Where to find node information. A node is composed of its name, its facts, and its environment." # Retrieve a node from the node source, with some additional munging -- cgit From 1dc0e24a4ff565486c00c542f78ab45e23a64ef9 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Sun, 16 Mar 2008 17:58:16 -0500 Subject: Modified the ldap node terminus to also use the facts version as the version for a node, which should similarly encourage the use of the yaml cache. (Related to #1130) --- lib/puppet/indirector/node/ldap.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib') diff --git a/lib/puppet/indirector/node/ldap.rb b/lib/puppet/indirector/node/ldap.rb index 9320f3ba1..8537e1cf3 100644 --- a/lib/puppet/indirector/node/ldap.rb +++ b/lib/puppet/indirector/node/ldap.rb @@ -122,4 +122,8 @@ class Puppet::Node::Ldap < Puppet::Indirector::Ldap end filter end + + def version(name) + Puppet::Node::Facts.version(name) + end end -- cgit From bba0b43a594273b82721b6e272aa5d95ab4e89f1 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Sun, 16 Mar 2008 17:58:57 -0500 Subject: Downgrading the "Using cache" message from the indirection to debug --- lib/puppet/indirector/indirection.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb index 129676e9c..d47433c60 100644 --- a/lib/puppet/indirector/indirection.rb +++ b/lib/puppet/indirector/indirection.rb @@ -162,7 +162,7 @@ class Puppet::Indirector::Indirection # See if our instance is in the cache and up to date. if cache? and cache.has_most_recent?(key, terminus(terminus_name).version(key)) - Puppet.info "Using cached %s %s" % [self.name, key] + Puppet.debug "Using cached %s %s" % [self.name, key] return cache.find(key, *args) end -- cgit