summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG3
-rw-r--r--lib/puppet/defaults.rb6
-rw-r--r--lib/puppet/indirector/yaml.rb3
-rwxr-xr-xspec/integration/defaults.rb20
-rwxr-xr-xspec/unit/indirector/yaml.rb15
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