We were already writing all specific files with
appropriate permissions; this change makes all of
the files that are part of a group (which largely
means files saved by puppetmasterd and puppetca)
are also written using the correct permissions.

Signed-off-by: Luke Kanies <[email protected]>
---
 lib/puppet/indirector/key/file.rb |    4 ++--
 lib/puppet/indirector/ssl_file.rb |    8 +++++---
 spec/unit/indirector/key/file.rb  |    4 ++--
 spec/unit/indirector/ssl_file.rb  |    4 ++--
 4 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/lib/puppet/indirector/key/file.rb 
b/lib/puppet/indirector/key/file.rb
index 4536f8a..a413ccf 100644
--- a/lib/puppet/indirector/key/file.rb
+++ b/lib/puppet/indirector/key/file.rb
@@ -34,9 +34,9 @@ class Puppet::SSL::Key::File < Puppet::Indirector::SslFile
         super
 
         begin
-            File.open(public_key_path(request.key), "w") { |f| f.print 
request.instance.content.public_key.to_pem }
+            Puppet.settings.writesub(:publickeydir, 
public_key_path(request.key)) { |f| f.print 
request.instance.content.public_key.to_pem }
         rescue => detail
-            raise Puppet::Error, "Could not write %s: %s" % [key, detail]
+            raise Puppet::Error, "Could not write %s: %s" % [request.key, 
detail]
         end
     end
 end
diff --git a/lib/puppet/indirector/ssl_file.rb 
b/lib/puppet/indirector/ssl_file.rb
index 4119a65..de71637 100644
--- a/lib/puppet/indirector/ssl_file.rb
+++ b/lib/puppet/indirector/ssl_file.rb
@@ -156,12 +156,14 @@ class Puppet::Indirector::SslFile < 
Puppet::Indirector::Terminus
             Puppet.settings.write(self.class.ca_setting) { |f| yield f }
         elsif file_location
             Puppet.settings.write(self.class.file_setting) { |f| yield f }
-        else
+        elsif setting = self.class.directory_setting
             begin
-                File.open(path, "w") { |f| yield f }
+                Puppet.settings.writesub(setting, path) { |f| yield f }
             rescue => detail
-                raise Puppet::Error, "Could not write %s: %s" % [path, detail]
+                raise Puppet::Error, "Could not write %s to %s: %s" % [path, 
setting, detail]
             end
+        else
+            raise Puppet::DevError, "You must provide a setting to determine 
where the files are stored"
         end
     end
 end
diff --git a/spec/unit/indirector/key/file.rb b/spec/unit/indirector/key/file.rb
index 8a1cb04..f365bfd 100755
--- a/spec/unit/indirector/key/file.rb
+++ b/spec/unit/indirector/key/file.rb
@@ -70,11 +70,11 @@ describe Puppet::SSL::Key::File do
         end
 
         it "should save the public key when saving the private key" do
-            File.stubs(:open).with(@private_key_path, "w")
+            Puppet.settings.stubs(:writesub)
 
             fh = mock 'filehandle'
 
-            File.expects(:open).with(@public_key_path, "w").yields fh
+            Puppet.settings.expects(:writesub).with(:publickeydir, 
@public_key_path).yields fh
             @public_key.expects(:to_pem).returns "my pem"
 
             fh.expects(:print).with "my pem"
diff --git a/spec/unit/indirector/ssl_file.rb b/spec/unit/indirector/ssl_file.rb
index 89f682f..559e2f9 100755
--- a/spec/unit/indirector/ssl_file.rb
+++ b/spec/unit/indirector/ssl_file.rb
@@ -173,11 +173,11 @@ describe Puppet::Indirector::SslFile do
             end
 
             describe "and a directory setting is set" do
-                it "should open the file in write mode" do
+                it "should use the Settings class to write the file" do
                     @searcher.class.store_in @setting
                     fh = mock 'filehandle'
                     fh.stubs :print
-                    File.expects(:open).with(@certpath, "w").yields(fh)
+                    Puppet.settings.expects(:writesub).with(@setting, 
@certpath).yields fh
 
                     @searcher.save(@request)
                 end
-- 
1.6.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
-~----------~----~----~----~------~----~------~--~---

Reply via email to