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.

Reply via email to