diff options
author | Matt Robinson <matt@puppetlabs.com> | 2010-06-30 12:43:23 -0700 |
---|---|---|
committer | Markus Roberts <Markus@reality.com> | 2010-07-01 13:48:03 -0700 |
commit | 2a2588392a2eead4265afcb93ff7bc16b5fc1ef1 (patch) | |
tree | 128c7039ced805af716cd49c25690634de5243ad | |
parent | 75e0662168936da8255507a10bccad8889326947 (diff) | |
download | puppet-2a2588392a2eead4265afcb93ff7bc16b5fc1ef1.tar.gz puppet-2a2588392a2eead4265afcb93ff7bc16b5fc1ef1.tar.xz puppet-2a2588392a2eead4265afcb93ff7bc16b5fc1ef1.zip |
[#4090] Git rid of the idea that run_mode is a configurable option with defaults
Along the way this fixes an issue with 2.6 alpha that sections of the
puppet config file were getting ignored.
-rw-r--r-- | lib/puppet.rb | 2 | ||||
-rw-r--r-- | lib/puppet/application.rb | 8 | ||||
-rw-r--r-- | lib/puppet/defaults.rb | 2 | ||||
-rw-r--r-- | lib/puppet/reports/store.rb | 2 | ||||
-rw-r--r-- | lib/puppet/util/settings.rb | 4 | ||||
-rwxr-xr-x | spec/unit/application/agent_spec.rb | 25 | ||||
-rwxr-xr-x | spec/unit/application_spec.rb | 14 | ||||
-rwxr-xr-x | spec/unit/util/settings_spec.rb | 36 |
8 files changed, 75 insertions, 18 deletions
diff --git a/lib/puppet.rb b/lib/puppet.rb index 4e496e7ba..af1bd8da9 100644 --- a/lib/puppet.rb +++ b/lib/puppet.rb @@ -93,7 +93,7 @@ module Puppet def self.run_mode require 'puppet/util/run_mode' - $puppet_application_mode ||= Puppet::Util::RunMode.new( :user ) + $puppet_application_mode || Puppet::Util::RunMode.new( :user ) end def self.application_name diff --git a/lib/puppet/application.rb b/lib/puppet/application.rb index f74b37573..c49f42fd7 100644 --- a/lib/puppet/application.rb +++ b/lib/puppet/application.rb @@ -221,10 +221,14 @@ class Application find(name).new end + # Sets or gets the run_mode name. Sets the run_mode name if a mode_name is + # passed. Otherwise, gets the run_mode or a default run_mode + # def run_mode( mode_name = nil) - @run_mode ||= mode_name || @run_mode || :user + return @run_mode if @run_mode and not mode_name + require 'puppet/util/run_mode' - Puppet::Util::RunMode.new( @run_mode ) + @run_mode = Puppet::Util::RunMode.new( mode_name || :user ) end end diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb index bfc18d8aa..ac82975eb 100644 --- a/lib/puppet/defaults.rb +++ b/lib/puppet/defaults.rb @@ -6,8 +6,6 @@ module Puppet it defaults to being in ``~``."], :vardir => [Puppet.run_mode.var_dir, "Where Puppet stores dynamic and growing data. The default for this parameter is calculated specially, like `confdir`_."], :name => [Puppet.application_name.to_s, "The name of the application, if we are running as one. The - default is essentially $0 without the path or ``.rb``."], - :run_mode => [Puppet.run_mode.name.to_s, "The name of the application, if we are running as one. The default is essentially $0 without the path or ``.rb``."] ) diff --git a/lib/puppet/reports/store.rb b/lib/puppet/reports/store.rb index a74527566..a71cd3387 100644 --- a/lib/puppet/reports/store.rb +++ b/lib/puppet/reports/store.rb @@ -1,8 +1,6 @@ require 'puppet' Puppet::Reports.register_report(:store) do - Puppet.settings.use(:reporting) - desc "Store the yaml report on disk. Each host sends its report as a YAML dump and this just stores the file on disk, in the ``reportdir`` directory. diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb index 398fa482c..3e2020c55 100644 --- a/lib/puppet/util/settings.rb +++ b/lib/puppet/util/settings.rb @@ -284,9 +284,9 @@ class Puppet::Util::Settings end end - # Figure out the section name for the mode. + # Figure out the section name for the run_mode. def run_mode - convert(@config[:run_mode].default).intern if @config[:run_mode] + Puppet.run_mode.name end # Return all of the parameters associated with a given section. diff --git a/spec/unit/application/agent_spec.rb b/spec/unit/application/agent_spec.rb index 76a378e82..21f5143bd 100755 --- a/spec/unit/application/agent_spec.rb +++ b/spec/unit/application/agent_spec.rb @@ -8,6 +8,31 @@ require 'puppet/network/server' require 'puppet/daemon' describe Puppet::Application::Agent do + it "should ask Puppet::Application to parse Puppet configuration file" do + agent = Puppet::Application::Agent.new + agent.preinit + + Puppet[:vardir].should == '/dev/null' + Puppet[:report].should be_false + + text = <<-CONF + [main] + vardir='/foo/bar' + [puppetd] + report=true + CONF + + FileTest.expects(:exist?).with('file').returns true + Puppet.settings.expects(:read_file).returns(text) + + Puppet.settings.unsafe_parse('file') + + Puppet[:vardir].should == '/foo/bar' + Puppet[:report].should be_true + end +end + +describe Puppet::Application::Agent do before :each do @puppetd = Puppet::Application[:agent] @puppetd.stubs(:puts) diff --git a/spec/unit/application_spec.rb b/spec/unit/application_spec.rb index 9dc655d14..87424fb5d 100755 --- a/spec/unit/application_spec.rb +++ b/spec/unit/application_spec.rb @@ -10,11 +10,23 @@ describe Puppet::Application do before do @app = Class.new(Puppet::Application).new + @appclass = @app.class # avoid actually trying to parse any settings Puppet.settings.stubs(:parse) end + describe ".run_mode" do + it "should default to user" do + @appclass.run_mode.name.should == :user + end + + it "should set and get a value" do + @appclass.run_mode :agent + @appclass.run_mode.name.should == :agent + end + end + it "should have a run entry-point" do @app.should respond_to(:run) end @@ -150,7 +162,7 @@ describe Puppet::Application do describe 'on POSIX systems' do confine "HUP works only on POSIX systems" => Puppet.features.posix? - + it 'should signal process with HUP after block if restart requested during block execution' do Puppet::Application.run_status = nil target = mock 'target' diff --git a/spec/unit/util/settings_spec.rb b/spec/unit/util/settings_spec.rb index 1e694a407..9aeed60f8 100755 --- a/spec/unit/util/settings_spec.rb +++ b/spec/unit/util/settings_spec.rb @@ -274,11 +274,18 @@ describe Puppet::Util::Settings do @settings.value(:one, "env2").should == "twoval" end - it "should have a run_mode determined by the 'run_mode' parameter that cannot be edited" do + it "should have a run_mode that defaults to user" do + @settings.run_mode.should == :user + end + + it "should not give a shit if you set a default run_mode yourself" do @settings.setdefaults(:whatever, :run_mode => ["something", "yayness"]) - @settings.run_mode.should == :something + lambda{ @settings[:run_mode] = :other }.should raise_error(ArgumentError, /read-only/) + end - lambda{ @settings[:run_mode] = :other }.should raise_error + it "CURRENTLY should not allow the user to set a run_mode default" do + @settings.setdefaults(:whatever, :run_mode => ["something", "yayness"]) + @settings.run_mode.should == :user end end @@ -286,10 +293,10 @@ describe Puppet::Util::Settings do before do @settings = Puppet::Util::Settings.new @settings.setdefaults :section, - :config => ["/my/file", "a"], - :one => ["ONE", "a" ], - :run_mode => ["mymode", "w" ] + :config => ["/my/file", "a"], + :one => ["ONE", "a"] FileTest.stubs(:exist?).returns true + Puppet.stubs(:run_mode).returns stub('run_mode', :name => :mymode) end it "should return default values if no values have been set" do @@ -358,6 +365,19 @@ describe Puppet::Util::Settings do FileTest.stubs(:exist?).returns true end + it "should not ignore the report setting" do + @settings.setdefaults :section, :report => ["false", "a"] + myfile = stub "myfile" + @settings[:config] = myfile + text = <<-CONF + [puppetd] + report=true + CONF + @settings.expects(:read_file).returns(text) + @settings.parse + @settings[:report].should be_true + end + it "should use its current ':config' value for the file to parse" do myfile = Puppet.features.posix? ? "/my/file" : "C:/myfile" # do not stub expand_path here, as this leads to a stack overflow, when mocha tries to use it @settings[:config] = myfile @@ -464,9 +484,9 @@ describe Puppet::Util::Settings do values = [] @settings.setdefaults :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }} - text = "[main] + text = "[user] mysetting = setval - [puppet] + [main] mysetting = other " @settings.expects(:read_file).returns(text) |