Issue #19315 has been updated by R.I. Pienaar.
There are actually a few options today.
If you made your data like:
<pre>
$thing = {"one" => {"key" => "val", .....},
"two" => {"key" => "val", .....}}
</pre>
ie. instead of a array of hashes make it a hash of hashes where the names are
unique you can do:
<pre>
$keys = keys($thing)
do_something{$keys: thing => $thing}
</pre>
and in your do_something define just access $thing[$name]. keys() is from
puppetlabs-stdlib on the forge.
Or if this isn't data you wish to reuse all over the show but instead something
that maps closer to a specific define:
<pre>
create_resources("some_define_type", $thing)
</pre>
Given the same hash as above this will be the equivalent of:
<pre>
some_define_type{"one": key => val}
some_define_type{"two": key => val}
</pre>
----------------------------------------
Bug #19315: puppet is buggy when using a hash as a $name
https://projects.puppetlabs.com/issues/19315#change-83707
Author: James Shubin
Status: Unreviewed
Priority: Normal
Assignee:
Category:
Target version:
Affected Puppet version:
Keywords:
Branch:
<pre>
It turns out if you're doing some fancy puppet work, it is sometimes useful to
use a hash as a $name var.
In my particular case, I'm actually passing an array of hashes to a define
(which ultimately causes the define to be called once for each hash).
This actually works perfectly when run locally with puppet apply, however when
running with puppet agent --test, it sometimes works and sometimes fails with:
Error: Could not retrieve catalog from remote server: Could not intern from
pson: Could not convert from pson: Could not find relationship source
"Foo::Bar::My_define[sourcedmzaddress192.168.101.200]"
The hash I used was:
{'source' => 'dmz', 'address' => '192.168.101.200'}
A few comments:
1. It's strange that the execution is not deterministic. Why does it sometimes
work and sometimes not?
2. It's odd that it *always* works locally, but not always when through the
puppet master.
3. The error message is confusing, not sure what it is trying to tell me.
Thanks,
James
</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 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-bugs?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.