Yeah, I'd file a bug against that.  There may be other considerations,
but unless there's a really good reason for the current behavior I
would expect it to throw an error.

On Tue, Dec 27, 2011 at 1:24 PM, Trevor Vaughan <tvaug...@onyxpoint.com> wrote:
> In that case, it should probably just fail instead of working (and
> yes, it works).
>
> Trevor
>
> On Tue, Dec 27, 2011 at 4:01 PM, Aaron Grewell <aaron.grew...@gmail.com> 
> wrote:
>> If you were actually passing the variable, yes. But you're not, you're
>> expecting to reach into a non-class (essentially a grab-bag of resources)
>> and extract data as though it were a class. It isn't and AFAIK you can't.
>> You'll have to put the data in an actual class and address it from there.
>>
>> On Dec 27, 2011 11:21 AM, "Trevor Vaughan" <tvaug...@onyxpoint.com> wrote:
>>>
>>> There are actually pretty good reasons for doing it if you have a
>>> fully modular setup.
>>>
>>> For example:
>>>
>>> Web Server module define -> Firewall code define -> ERB using higher
>>> level variables.
>>>
>>> There's no reason to stuff everything into a big data store when you
>>> can easily pass it down. *But* if you try to use the top level
>>> variable in the second define call ERB, then you've got issues.
>>>
>>> I feel that this needs to be either forbidden (break the compile) or
>>> allowed. But we'd need to know how to allow it.
>>>
>>> Trevor
>>>
>>> On Tue, Dec 27, 2011 at 11:40 AM, Aaron Grewell <aaron.grew...@gmail.com>
>>> wrote:
>>> > It's an interesting question, but I wouldn't want to structure my
>>> > modules that way.  There are two methods of getting data into a define
>>> > that are guaranteed to work: passing variables and file retrieval
>>> > (extlookup/hiera).  Especially given the changes being made to scoping
>>> > anything else is fraught with peril.
>>> >
>>> > On Mon, Dec 26, 2011 at 5:56 AM, Trevor Vaughan <tvaug...@onyxpoint.com>
>>> > wrote:
>>> >> I just ran into an interesting scenario where I didn't know how to
>>> >> scope my variables and I'd just like to share for the crowd.
>>> >>
>>> >> Suppose you have two modules 'foo' and 'bar'. You also have two
>>> >> defines, 'foo::do_stuff' and 'bar::more_stuff'.
>>> >>
>>> >> define foo::do_stuff (
>>> >>  $var1 = 'a',
>>> >>  $var2 = 'b'
>>> >> ) {
>>> >>  bar::more_stuff { 'test': }
>>> >> }
>>> >>
>>> >> define bar::more_stuff (
>>> >>  $optional_var = 'ignore'
>>> >> ) {
>>> >>  file { '/tmp/test':
>>> >>    content => template('bar/random.erb')
>>> >> }
>>> >>
>>> >> +++ random.erb +++
>>> >>
>>> >> var1 = <%= var1 %>
>>> >> var2 = <%= var2 %>
>>> >>
>>> >> So, here, puppet complains about the scope of var1 and var2 but what
>>> >> should the correct scope be? foo::do_stuff::var1, etc...? But how does
>>> >> that work with multiple define calls to foo::do_stuff?
>>> >>
>>> >> This, of course, can be avoided by putting the template under
>>> >> foo/templates and forcing the passage of content to bar::more_stuff
>>> >> but I'm not quite sure *why* this isn't supposed to work and what to
>>> >> do about it with the notice that 2.8 will force the scoping of all
>>> >> variables.
>>> >>
>>> >> Thanks,
>>> >>
>>> >> Trevor
>>> >>
>>> >> --
>>> >> Trevor Vaughan
>>> >> Vice President, Onyx Point, Inc
>>> >> (410) 541-6699
>>> >> tvaug...@onyxpoint.com
>>> >>
>>> >> -- This account not approved for unencrypted proprietary information --
>>> >>
>>> >> --
>>> >> You received this message because you are subscribed to the Google
>>> >> Groups "Puppet Users" group.
>>> >> To post to this group, send email to puppet-users@googlegroups.com.
>>> >> To unsubscribe from this group, send email to
>>> >> puppet-users+unsubscr...@googlegroups.com.
>>> >> For more options, visit this group at
>>> >> http://groups.google.com/group/puppet-users?hl=en.
>>> >>
>>> >
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> > Groups "Puppet Users" group.
>>> > To post to this group, send email to puppet-users@googlegroups.com.
>>> > To unsubscribe from this group, send email to
>>> > puppet-users+unsubscr...@googlegroups.com.
>>> > For more options, visit this group at
>>> > http://groups.google.com/group/puppet-users?hl=en.
>>> >
>>>
>>>
>>>
>>> --
>>> Trevor Vaughan
>>> Vice President, Onyx Point, Inc
>>> (410) 541-6699
>>> tvaug...@onyxpoint.com
>>>
>>> -- This account not approved for unencrypted proprietary information --
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Puppet Users" group.
>>> To post to this group, send email to puppet-users@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> puppet-users+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/puppet-users?hl=en.
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Puppet Users" group.
>> To post to this group, send email to puppet-users@googlegroups.com.
>> To unsubscribe from this group, send email to
>> puppet-users+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/puppet-users?hl=en.
>
>
>
> --
> Trevor Vaughan
> Vice President, Onyx Point, Inc
> (410) 541-6699
> tvaug...@onyxpoint.com
>
> -- This account not approved for unencrypted proprietary information --
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to 
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/puppet-users?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to