Issue #8255 has been updated by Jacob Helwig.
I believe that the better fix is to adjust
`lib/puppet/util/settings/file_setting.rb` to make sure it always passes a
string to the resource it creates in `#to_resource`.
Something like the following (though with tests):
diff --git i/lib/puppet/util/settings/file_setting.rb
w/lib/puppet/util/settings/file_setting.rb
index f02a0c5..56c1a3d 100644
--- i/lib/puppet/util/settings/file_setting.rb
+++ w/lib/puppet/util/settings/file_setting.rb
@@ -91,7 +91,12 @@ class Puppet::Util::Settings::FileSetting <
Puppet::Util::Settings::Setting
resource = Puppet::Resource.new(:file, path)
if Puppet[:manage_internal_file_permissions]
- resource[:mode] = self.mode if self.mode
+ if self.mode
+ mode = self.mode
+ mode = mode.to_i(8) if mode.is_a?(String)
+ mode = mode.to_s(8)
+ resource[:mode] = mode
+ end
# REMIND fails on Windows because chown/chgrp functionality not
supported yet
if Puppet.features.root? and !Puppet.features.microsoft_windows?
----------------------------------------
Bug #8255: inconsistent handling of octal in file { mode => 'nnnn' }
https://projects.puppetlabs.com/issues/8255
Author: tgeeky -
Status: Code Insufficient
Priority: Normal
Assignee: tgeeky -
Category: settings
Target version: 2.7.x
Affected Puppet version: 2.7.1
Keywords: octal, permissions, genmanifest, defaults
Branch: https://github.com/puppetlabs/puppet/pull/17
****I just noticed this is a repeat of bug
[[1756]](http://projects.puppetlabs.com/issues/1756)****. But for serveral
reasons (including the much different version of puppet), I'm posting it
separately.
I believe this merits priority ****High**** because it represents a major
stumbling block for people using puppet for the first time, and a tool which
doesn't properly generate its own configuration (though it claims to in docs)
represents a serious slight against the stability of the software in question.
****However****, since this problem may only be restricted to the scope of
--genmanifest (I suspect there is more inconsistent handling of octal in
puppet), I leave it at ****Normal**** for now.
In an out ****of-of-the-box**** configuration, the following command will
produce incorrect output:
puppet --genmanifest > /etc/puppet/manifests/site.pp
The resulting output contains decimal file modes like this one:
file { '/etc/puppet/ssl/private':
ensure => 'directory',
backup => 'false',
links => 'follow',
loglevel => 'debug',
mode => '488',
owner => 'puppet',
}
Trying to run with this autogenerated manifest:
puppet agent --server puppet --verbose --test --debug trace
Fails:
...
err: Could not run Puppet configuration client: Parameter mode failed: File
modes can only be octal numbers, not "488"
A one-liner fix was suggested by richardc, and tested by me (and it works,
insfoar as the output is parseable now):
diff --git a/lib/puppet/util/settings/file_setting.rb
b/lib/puppet/util/settings/file_setting.rb
index 776398e..c765a4b 100644
--- a/lib/puppet/util/settings/file_setting.rb
+++ b/lib/puppet/util/settings/file_setting.rb
@@ -91,7 +91,7 @@ class Puppet::Util::Settings::FileSetting <
Puppet::Util::Settings::Setting
resource = Puppet::Resource.new(:file, path)
if Puppet[:manage_internal_file_permissions]
- resource[:mode] = self.mode if self.mode
+ resource[:mode] = sprintf("%o", self.mode) if self.mode
if Puppet.features.root?
resource[:owner] = self.owner if self.owner
Much more detail is available in this
[[pastie]](http://www.pastie.org/pastes/2173089).
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://projects.puppetlabs.com/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" 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-bugs?hl=en.