From ba12d3000d31dbccb3b60320eae6c1be302e0bd5 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Thu, 3 Jul 2008 17:27:11 -0500 Subject: [PATCH] Fixed #1232 - the rundir no longer specifies a user/group, and there are now client- and server-specific yaml directories. Signed-off-by: Luke Kanies --- CHANGELOG | 3 +++ lib/puppet/defaults.rb | 6 +++--- lib/puppet/indirector/yaml.rb | 3 ++- spec/integration/defaults.rb | 20 ++++++++++++++++++++ spec/unit/indirector/yaml.rb | 15 ++++++++++++++- 5 files changed, 42 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index bdf722be5..7ebfd4d1c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,7 @@ 0.24.? + Fixed #1232 - the rundir no longer specifies a user/group, + and there are now client- and server-specific yaml directories. + Fixed #1006 - puppetrun --class works again. I added the class membership testing to the Ldap node terminus, and added tests, so it shouldn't break again. diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb index 472d98c4f..5f71bb8b7 100644 --- a/lib/puppet/defaults.rb +++ b/lib/puppet/defaults.rb @@ -69,8 +69,6 @@ module Puppet :rundir => { :default => rundir, :mode => 01777, - :owner => "$user", - :group => "$group", :desc => "Where Puppet PID files are kept." }, :genconfig => [false, @@ -358,7 +356,9 @@ module Puppet # To make sure this directory is created before we try to use it on the server, we need # it to be in the server section (#1138). :yamldir => {:default => "$vardir/yaml", :owner => "$user", :group => "$user", :mode => "750", - :desc => "The directory in which YAML data is stored, usually in a subdirectory."} + :desc => "The directory in which YAML data is stored, usually in a subdirectory."}, + :clientyamldir => {:default => "$vardir/client_yaml", :mode => "750", + :desc => "The directory in which client-side YAML data is stored."} ) self.setdefaults(:puppetd, diff --git a/lib/puppet/indirector/yaml.rb b/lib/puppet/indirector/yaml.rb index 23bca02b8..3573ba560 100644 --- a/lib/puppet/indirector/yaml.rb +++ b/lib/puppet/indirector/yaml.rb @@ -36,7 +36,8 @@ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus # Return the path to a given node's file. def path(name) - File.join(Puppet[:yamldir], self.class.indirection_name.to_s, name.to_s + ".yaml") + base = (Puppet[:name] == "puppetmasterd") ? Puppet[:yamldir] : Puppet[:clientyamldir] + File.join(base, self.class.indirection_name.to_s, name.to_s + ".yaml") end private diff --git a/spec/integration/defaults.rb b/spec/integration/defaults.rb index a07743679..c506700c8 100755 --- a/spec/integration/defaults.rb +++ b/spec/integration/defaults.rb @@ -20,4 +20,24 @@ describe "Puppet defaults" do lambda { Puppet.settings[:certname] = "Host.Domain.Com" }.should raise_error(ArgumentError) end end + + it "should have a clientyamldir setting" do + Puppet.settings[:clientyamldir].should_not be_nil + end + + it "should have different values for the yamldir and clientyamldir" do + Puppet.settings[:yamldir].should_not == Puppet.settings[:clientyamldir] + end + + # See #1232 + it "should not specify a user or group for the clientyamldir" do + Puppet.settings.element(:clientyamldir).owner.should be_nil + Puppet.settings.element(:clientyamldir).group.should be_nil + end + + # See #1232 + it "should not specify a user or group for the rundir" do + Puppet.settings.element(:rundir).owner.should be_nil + Puppet.settings.element(:rundir).group.should be_nil + end end diff --git a/spec/unit/indirector/yaml.rb b/spec/unit/indirector/yaml.rb index 53d12f426..3875d70aa 100755 --- a/spec/unit/indirector/yaml.rb +++ b/spec/unit/indirector/yaml.rb @@ -20,12 +20,25 @@ describe Puppet::Indirector::Yaml, " when choosing file location" do @subject.name = :me @dir = "/what/ever" - Puppet.settings.stubs(:value).with(:yamldir).returns(@dir) + Puppet.settings.stubs(:value).returns("fakesettingdata") + Puppet.settings.stubs(:value).with(:clientyamldir).returns(@dir) @request = stub 'request', :key => :me, :instance => @subject end describe Puppet::Indirector::Yaml, " when choosing file location" do + it "should use the yamldir if the process name is 'puppetmasterd'" do + Puppet.settings.expects(:value).with(:name).returns "puppetmasterd" + Puppet.settings.expects(:value).with(:yamldir).returns "/main/yaml/dir" + @store.path(:me).should =~ %r{^/main/yaml/dir} + end + + it "should use the client yamldir if the process name is not 'puppetmasterd'" do + Puppet.settings.expects(:value).with(:name).returns "cient" + Puppet.settings.expects(:value).with(:clientyamldir).returns "/client/yaml/dir" + @store.path(:me).should =~ %r{^/client/yaml/dir} + end + it "should store all files in a single file root set in the Puppet defaults" do @store.path(:me).should =~ %r{^#{@dir}} end