diff options
author | James Turnbull <james@lovedthanlost.net> | 2009-09-22 13:24:31 +1000 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2009-09-22 13:24:31 +1000 |
commit | fd322daa42f751bfc6200b95e6151540b3eb541e (patch) | |
tree | b58e0b5dc780c73c1f9ad236c6832806d019d09b | |
parent | 6551e86a03f5fa1f499386c96faa4587bdfac24e (diff) | |
download | puppet-fd322daa42f751bfc6200b95e6151540b3eb541e.tar.gz puppet-fd322daa42f751bfc6200b95e6151540b3eb541e.tar.xz puppet-fd322daa42f751bfc6200b95e6151540b3eb541e.zip |
Fixes #1538 - Fixes the yumrepo backtrace in noop mode.
Yumrepo type will now chmod on all files when a change happens. If the content is not changed then no chmod will occur.
-rw-r--r-- | lib/puppet/type/yumrepo.rb | 13 | ||||
-rw-r--r-- | lib/puppet/util/inifile.rb | 8 |
2 files changed, 18 insertions, 3 deletions
diff --git a/lib/puppet/type/yumrepo.rb b/lib/puppet/type/yumrepo.rb index 5d6a727f6..39b9cd30a 100644 --- a/lib/puppet/type/yumrepo.rb +++ b/lib/puppet/type/yumrepo.rb @@ -178,9 +178,16 @@ module Puppet # Store all modifications back to disk def self.store - file = inifile.store - unless file.nil? - File.chmod(0644, file) + inifile.store + unless Puppet[:noop] + target_mode = 0644 # FIXME: should be configurable + inifile.each_file do |file| + current_mode = File.stat(file).mode & 0777 + unless current_mode == target_mode + Puppet::info "changing mode of #{file} from %03o to %03o" % [current_mode, target_mode] + File.chmod(target_mode, file) + end + end end end diff --git a/lib/puppet/util/inifile.rb b/lib/puppet/util/inifile.rb index 3c82f7d37..eb943fe13 100644 --- a/lib/puppet/util/inifile.rb +++ b/lib/puppet/util/inifile.rb @@ -180,6 +180,14 @@ module Puppet::Util::IniConfig end end + # Execute BLOCK, passing each file constituting this inifile + # as an argument + def each_file(&block) + @files.keys.each do |file| + yield(file) + end + end + # Return the Section with the given name or nil def [](name) name = name.to_s |