On Friday, July 12, 2013 7:48:36 AM UTC-5, Ivailo Tanusheff wrote:
>
> Hi,
>
> I have stupid situation that I may workaround but I think there is an 
> elegant way to deal with.
> Still I need the community help.
>
> In some class X I have:
> $control = {
>   dev => {
>     id => 7,
>     name => 'GG'
>   },
>   prod => {
>     id => 1,
>     name => 'Info'
>   }
> }
>
> In some other class, which I apply to a node I have defined file from a 
> templete, where I want to use those values depending on the zone property.
>
> <% 
> $zone = scope.lookupvar('y::_zone')
> $c_data = scope.lookupvar('x::control[${zone}]')
> -%>
>
> The zone property is OK and equals to dev.
> I can't access the $c_data as in looks like nil (undefined).
> And I need to output something as:
>
> ID=<%= $c_data['id'] %> 
>
> which fails with error Detail: undefined method `[]' for nil:NilClass
>
> Can you give me a hint/help?
>


You must ensure that class X has been declared before the template that 
references its variables is evaluated.  Supposing that class X is nowhere 
declared via the parameterized-style syntax, you might accomplish that like 
so:

class z {
  include 'x'
  include 'y'

  $result = template('my_template.tmpl')
}


John

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to