On 2015-03-03 23:18, Johan De Wit wrote:
> Hi,
>
> Playing with structured facts, I noticed some starnge behaviour.
>
> If one need to access eg the fact $os['release']['full'], you get the
> full hash when. You need to embed the fact like
> ${os['release']['full']} to get the exact value of the hash.
>
> Normal facts dont have this issue. (they dont have indexes which can eb
> ignored)
>
> Well, one should always use the ${variable} in a string, but if not,
> this should at least give a big warning, if not an error.
>
> Some tests showing this result ....
>
>
https://gist.github.com/witjoh/c828ebb372621d09b873
>
> Could someone verify this on there systems ?
>
> Running PE3.7.2, with future parse/structured facts enabled ....
>
> Just to be sure it is not something mis-configured in my setup
>
Interpolation using the short form e.g. "hello $name, how are you",
only supports interpolation of a variable, not an expression involving
the variable, thus:
$name = {firstname => fred, lastname => flintstone}
"hello $name[lastname]"
will render:
"hello {firstname => fred, lastname => flintstone}[lastname]"
since the interpolation of $name interpolates the entire hash, it then
continues with the [lastname] as text!
This is exactly what happened in your gist.
And you are correct that you must use the long form interpolation since
you are interpolating an expression.
All details about string interpolation in future parser / puppet 4.0.0
are found here:
https://github.com/puppetlabs/puppet-specifications/blob/master/language/expressions.md#string-interpolation
Hope that helps
Regards
- henrik
--
Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/