Issue #8255 has been updated by Jacob Helwig. Status changed from Code Insufficient to In Topic Branch Pending Review Branch changed from https://github.com/puppetlabs/puppet/pull/17 to https://github.com/jhelwig/puppet/tree/tickets/2.7.x/8255-use-string-mode-creating-file-setting-resources
I've opened [pull request 196](https://github.com/puppetlabs/puppet/pull/196) which modifies the `#to_resource` of `Puppet::Util::Settings::FileSetting` to munge values to always be strings. (#8255) Always use string modes when creating resources from FileSetting settings Since we're setting the 'is', rather than the 'should' on the resource, the property's munge method is not automatically called for us and we need to make sure we're always passing the stringified version of the mode to the resource. By doing this, we fix the problem where 'puppet --genmanifest' would output the (base 10) integer version of the mode in the generated manifest for settings where the mode was not specified as a string. It would have been nice to re-use the munge from the mode property directly, but there doesn't appear to be a good/clean way to do this (especially without reaching into the internals of other objects). Another alternative would have been to modify []= to call munge for us, but this isn't really a change to be made in a point release, especially not without very careful thought about the implications of such a change. ---------------------------------------- Bug #8255: inconsistent handling of octal in file { mode => 'nnnn' } https://projects.puppetlabs.com/issues/8255 Author: tgeeky - Status: In Topic Branch Pending Review 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/jhelwig/puppet/tree/tickets/2.7.x/8255-use-string-mode-creating-file-setting-resources ****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.
