Hello,
    I'm attempting to use the reduce 
function(https://puppet.com/docs/puppet/6.2/function.html#reduce) to 
consolidate hiera facts into data structures I can use with puppet 
resources.  I've run into an issue that I'm not sure how to solve.  When 
the data passed to the reduce function results in 2 or more iterations, I 
get the data return I expect.  When the data passed only results in 1 
iterations, I get back no results when I expect one result.  Here is the 
applicable code snippet (hiera lookups replaced with dummy data):
~~~
  $groups  = {
    "group1" => {
      "gid"     => 901,
      "members" => ["user1","user2","user3","user4"],
    },
    "group2" => {
      "gid"     => 902,
      "members" => ["user2"],
    }
  }
  $hostgroups = [ "group1", "group2" ]
  $usernames = ["user1","user2"]

  $usernames.each |$username| {
    $usergroups = $hostgroups.reduce([]) |$result, $group| {
      $members = $groups[$group]["members"]
      warning("[$username] $group: $members")
      if ( $username in $members ) {
        warning("[$username] Added $group")
        $result + $group
      }
    }
    warning("[$username] groups: $usergroups")
    warning()
  }
~~~

The output of this code shows user1 with an empty array of groups when it 
should have group1 while user2 has the expected 2 group output:
~~~
Warning: Scope(Class[Base::Test]): [user1] group1: [user1, user2, user3, 
user4]
Warning: Scope(Class[Base::Test]): [user1] Added group1
Warning: Scope(Class[Base::Test]): [user1] group2: [user2]
Warning: Scope(Class[Base::Test]): [user1] groups:
Warning: Scope(Class[Base::Test]):
Warning: Scope(Class[Base::Test]): [user2] group1: [user1, user2, user3, 
user4]
Warning: Scope(Class[Base::Test]): [user2] Added group1
Warning: Scope(Class[Base::Test]): [user2] group2: [user2]
Warning: Scope(Class[Base::Test]): [user2] Added group2
Warning: Scope(Class[Base::Test]): [user2] groups: [group1, group2]
Warning: Scope(Class[Base::Test]):
~~~

Let me know if I'm missing something otherwise this seems like it might be 
a bug.
Thanks,
-Dan

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/bc076bfc-86b2-40c9-a07e-05a632909048%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to