how to check if a hash/array is empty or not in puppet .pp/module (not in template)?

13,452 views
Skip to first unread message

midair77

unread,
Oct 13, 2011, 1:01:49 PM10/13/11
to Puppet Users
Dear all,

I have a parameterized class and one of the args is a hash or an array
and I would like to check if they are empty or not?

I tried with

class test($hash, $array){
if $hash.empty? == true
{
}
if $array.empty? == true
{
}

}

but when I just
puppet parser validate init.pp

I would get this error: Could not parse for environment production:
Syntax error at '.'; expected '}' at.

Please help as this is important to know how to do this type of check.

Thank you in advance.

Jacob Helwig

unread,
Oct 13, 2011, 1:51:03 PM10/13/11
to puppet...@googlegroups.com

The cleanest way to do this would be to write a custom rvalue function
that does the Ruby check for you. You can't call ruby directly from the
puppet language, so you need to use functions or inline templates. I
definitely recommend going the function route, since it's much easier to
write tests for those, and your manifests end up looking much cleaner.

http://docs.puppetlabs.com/guides/custom_functions.html

--
Jacob Helwig

signature.asc

midair77

unread,
Oct 13, 2011, 2:41:35 PM10/13/11
to Puppet Users
Thank you very much.. I am writing a function to do that.
>  signature.asc
> < 1KViewDownload

Dan White

unread,
Oct 13, 2011, 3:17:28 PM10/13/11
to puppet...@googlegroups.com
Please share it back with the list when you get it working.

Thanks.

“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)

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

Nan Liu

unread,
Oct 13, 2011, 7:52:43 PM10/13/11
to puppet...@googlegroups.com
On Thu, Oct 13, 2011 at 11:41 AM, midair77 <mida...@gmail.com> wrote:
> Thank you very much..  I am writing a function to do that.
>
>
> On Oct 13, 10:51 am, Jacob Helwig <ja...@puppetlabs.com> wrote:
>> On Thu, 13 Oct 2011 10:01:49 -0700, midair77 wrote:
>>
>> > Dear all,
>>
>> > I have a parameterized class and one of the args is a hash or an array
>> > and I would like to check if they are empty or not?
>>
>> > I tried with
>>
>> > class test($hash, $array){
>> >    if $hash.empty? == true
>> > {
>> > }
>> >   if $array.empty? == true
>> > {
>> > }
>>
>> > }
>>
>> > but when I just
>> > puppet parser validate init.pp
>>
>> > I would get this error: Could not parse for environment production:
>> > Syntax error at '.'; expected '}' at.
>>
>> > Please help as this is important to know how to do this type of check.
>>
>> > Thank you in advance.

See empty function:
https://github.com/puppetlabs/puppetlabs-stdlib/tree/master/lib/puppet/parser/functions

Thanks,

Nan

Krzysztof Wilczynski

unread,
Oct 14, 2011, 7:35:25 AM10/14/11
to Puppet Users

Krzysztof Wilczynski

unread,
Oct 14, 2011, 7:33:22 AM10/14/11
to Puppet Users

Krzysztof Wilczynski

unread,
Oct 14, 2011, 1:49:44 PM10/14/11
to Puppet Users
Hello,

Apologies for double-posting. I've got 500 first time and wasn't sure
whether it went through.

KW
Reply all
Reply to author
Forward
0 new messages