One question below.

On Jun 30, 2010, at 3:42 PM, Matt Robinson wrote:

Along the way this fixes an issue with 2.6 alpha that sections of the
puppet config file were getting ignored.

Signed-off-by: Matt Robinson <[email protected]>
---
lib/puppet.rb                       |    2 +-
lib/puppet/application.rb           |    8 +++++-
lib/puppet/defaults.rb              |    2 -
lib/puppet/reports/store.rb         |    2 -
lib/puppet/util/settings.rb         |    4 +-
spec/unit/application/agent_spec.rb |   25 ++++++++++++++++++++++++
spec/unit/application_spec.rb       |   14 ++++++++++++-
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 4e496e7..af1bd8d 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 f74b375..c49f42f 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 bfc18d8..ac82975 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 a745275..a71cd33 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)
-

What's the reason for this change? Have you confirmed that report storage still works?

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 8b4be66..9ea7909 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 76a378e..21f5143 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 9dc655d..87424fb 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 1e694a4..9aeed60 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)
--
1.7.1

--
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 .



--
Man is the only animal that can remain on friendly terms with the
victims he intends to eat until he eats them.
    -- Samuel Butler (1835-1902)
---------------------------------------------------------------------
Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199

--
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.

Reply via email to