Issue #8255 has been updated by Jacob Helwig.
Status changed from In Topic Branch Pending Review to Code Insufficient
Looking at the changes in the pull request, they seem to be papering over the
problem, not actually solving it, since the problem will reoccur once someone
forgets that the modes in defaults.rb need to be quoted strings, rather than
bare octals. It seems like the best thing to do would be to fix the problem
closer to the root, by changing the file type to store modes internally as
strings whether they were provided as strings or octal numbers. This would
mean that they would always be output correctly by
`Puppet::Resource#to_manifest`. Looking through the revision history, it looks
like commit:3e5927773c1dc7bc6e9af922fef09149d1599ef6 was trying to do exactly
this.
----------------------------------------
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.