[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35
test branch
puppet-dev at googlegroups.com
Wed Jul 14 10:32:33 UTC 2010
The following commit has been merged in the upstream branch:
commit 9fbb69f9d4de0e618954bc18b7501e300317022a
Author: Luke Kanies <luke at reductivelabs.com>
Date: Wed Mar 24 00:04:47 2010 -0700
Adding support for only using cached catalogs
This basically allows a sysadmin to control when a client
will compile a new catalog - with this option enabled,
the client will use the cached catalog as long as it has
one, only recompiling when run with the option disabled.
Signed-off-by: Luke Kanies <luke at reductivelabs.com>
diff --git a/lib/puppet/configurer.rb b/lib/puppet/configurer.rb
index 3b4f9ec..797d934 100644
--- a/lib/puppet/configurer.rb
+++ b/lib/puppet/configurer.rb
@@ -100,7 +100,7 @@ class Puppet::Configurer
fact_options = facts_for_uploading()
# First try it with no cache, then with the cache.
- unless result = retrieve_new_catalog(fact_options)
+ unless (Puppet[:use_cached_catalog] and result = retrieve_catalog_from_cache(fact_options)) or result = retrieve_new_catalog(fact_options)
if ! Puppet[:usecacheonfailure]
Puppet.warning "Not using cache on failed catalog"
return nil
diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
index 2f397f4..c67e9ef 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@ -561,6 +561,10 @@ module Puppet
new configurations, where you want to fix the broken configuration
rather than reverting to a known-good one."
],
+ :use_cached_catalog => [false,
+ "Whether to only use the cached catalog rather than compiling a new catalog
+ on every run. Puppet can be run with this enabled by default and then selectively
+ disabled when a recompile is desired."],
:ignorecache => [false,
"Ignore cache and always recompile the configuration. This is
useful for testing new configurations, where the local cache may in
diff --git a/spec/unit/configurer.rb b/spec/unit/configurer.rb
index 48a197a..6744f88 100755
--- a/spec/unit/configurer.rb
+++ b/spec/unit/configurer.rb
@@ -292,6 +292,26 @@ describe Puppet::Configurer, "when retrieving a catalog" do
@agent.stubs(:convert_catalog).returns @catalog
end
+ describe "and configured to only retrieve a catalog from the cache" do
+ before do
+ Puppet.settings[:use_cached_catalog] = true
+ end
+
+ it "should first look in the cache for a catalog" do
+ Puppet::Resource::Catalog.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns @catalog
+ Puppet::Resource::Catalog.expects(:find).with { |name, options| options[:ignore_cache] == true }.never
+
+ @agent.retrieve_catalog.should == @catalog
+ end
+
+ it "should compile a new catalog if none is found in the cache" do
+ Puppet::Resource::Catalog.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns nil
+ Puppet::Resource::Catalog.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns @catalog
+
+ @agent.retrieve_catalog.should == @catalog
+ end
+ end
+
it "should use the Catalog class to get its catalog" do
Puppet::Resource::Catalog.expects(:find).returns @catalog
@@ -300,7 +320,7 @@ describe Puppet::Configurer, "when retrieving a catalog" do
it "should use its certname to retrieve the catalog" do
Facter.stubs(:value).returns "eh"
- Puppet.expects(:[]).with(:certname).returns "myhost.domain.com"
+ Puppet.settings[:certname] = "myhost.domain.com"
Puppet::Resource::Catalog.expects(:find).with { |name, options| name == "myhost.domain.com" }.returns @catalog
@agent.retrieve_catalog
--
Puppet packaging for Debian
More information about the Pkg-puppet-devel
mailing list