Wrap Puppet::Settings.use in a block that disables noop mode during the execution of the block and then reenstates its original value afterwards. This allows internal puppet catalog operations like ssl directory creation to occur even when puppet is run in --noop mode. This should actually solve a broader class of related bugs.
Signed-off-by: Rein Henrichs <[email protected]> --- lib/puppet/util/settings.rb | 9 ++++++++- spec/integration/bin/puppetmasterd.rb | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletions(-) diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb index 3e3bc7f..fb3709e 100644 --- a/lib/puppet/util/settings.rb +++ b/lib/puppet/util/settings.rb @@ -157,6 +157,13 @@ class Puppet::Util::Settings set_value(str, value, :cli) end + def without_noop + old_noop = value(:noop,:cli) + set_value(:noop, false, :cli) + yield + set_value(:noop, old_noop, :cli) + end + def include?(name) name = name.intern if name.is_a? String @config.include?(name) @@ -632,7 +639,7 @@ Generated on #{Time.now}. return end - begin + without_noop do catalog.host_config = false catalog.apply do |transaction| if transaction.any_failed? diff --git a/spec/integration/bin/puppetmasterd.rb b/spec/integration/bin/puppetmasterd.rb index b5a3f96..5b3a29f 100755 --- a/spec/integration/bin/puppetmasterd.rb +++ b/spec/integration/bin/puppetmasterd.rb @@ -107,4 +107,30 @@ describe "puppetmasterd" do end it "should exit with return code 1 after parsing if --parseonly is set and there are errors" + + describe "when run for the first time" do + before do + @ssldir = File.join(@dir, 'ssl') + FileUtils.rm_r(@ssldir) if File.exists?(@ssldir) + end + + describe "with noop" do + it "should create its ssl directory" do + File.directory?(@ssldir).should be_false + start(' --noop') + + sleep 0.5 + File.directory?(@ssldir).should be_true + end + end + + describe "without noop" do + it "should create its ssl directory" do + File.directory?(@ssldir).should be_false + start + sleep 0.5 + File.directory?(@ssldir).should be_true + end + end + end end -- 1.6.4.2 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en -~----------~----~----~----~------~----~------~--~---
