Issue #17799 has been updated by Walter Heck.
More from the mailinglist topic: <pre> On Sun, Nov 18, 2012 at 6:47 PM, Stefan Heijmans <[email protected]> wrote: > No, i's not, it is correct, see > http://docs.puppetlabs.com/guides/scope_and_puppet.html > > At the moment you 'include mysql' only the top scope package variable is > known, so there fore mysql package will be installed. > swap them around and mysql-server package will get installed. but I am specifically referring to _not_ the top-scope variable by using $mysql_server::package. This is a scope that doesn't have that variable (yet, anyway). I don't expect Puppet to just jump to a higher level scope (top-scope in this case) to go and look for my variable there. </pre> and then: <pre> I agree, it looks like a bug to me. A variable reference should never evaluate a variable that doesn't match the given name. I would file a ticket. The issue may be less straightforward than it first appears, however. Consider the difference between $mysql_server::package and $::mysql_server::package. In the vast majority of cases, I would expect them to evaluate to the same thing (including manifesting the same bug in this case). But what if there were also this class: class mysql::mysql_server { $package = 'mysql-server55' } Assume that mysql::mysql_server is declared before class mysql. What value do you then expect when class mysql dereferences $mysql_server::package? That is, do you get "mysql-server" from $::mysql_server::package or "mysql-server55" from $::mysql::mysql_server::package? I think you get the latter, and I think that's reasonable. Moreover, I would guess that the support for that behavior is where the bug is hiding. John </pre> ---------------------------------------- Bug #17799: Scope problem in 2.7.12 (PE 2.5.3) https://projects.puppetlabs.com/issues/17799#change-77435 Author: Walter Heck Status: Unreviewed Priority: Normal Assignee: Category: Target version: Affected Puppet version: 2.7.12 Keywords: Branch: Copy-paste from the mailing list: <pre> I was playing around with scopes, and I noticed the following behaviour, which strikes me as odd? This was done with Puppet Enterprise 2.5.3 which is really Puppet 2.7.12. I'm not sure what I would expect, quite likely an error message or at the very least 'mysql-server' package gettign installed. Instead, it just seems to choose the top-scope variable 'mysql' $package = 'mysql' class mysql { package { $mysql_server::package: ensure => present } } class mysql_server { include mysql $package = 'mysql-server' } include mysql_server This yields: [root@master test]# puppet apply manifests/init.pp notice: /Stage[main]/Mysql/Package[mysql]/ensure: created notice: Finished catalog run in 6.25 seconds </pre> -- 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.
