X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=modules%2Fbase_installation%2Flib%2Fpuppet%2Ffunctions%2Fldap_data.rb;h=0a6d9356af1b695b57dfefa5e0c2d4445d43a1eb;hb=435b97f50bdc1c8a5e48bedf3772fcb16abb3440;hp=0c92d8988dbf5cf047e21d25e395dc92c6d2efbb;hpb=46fa3b9965226c805c45a0e562c963366dbae3b9;p=perso%2FImmae%2FProjets%2FPuppet.git diff --git a/modules/base_installation/lib/puppet/functions/ldap_data.rb b/modules/base_installation/lib/puppet/functions/ldap_data.rb index 0c92d89..0a6d935 100644 --- a/modules/base_installation/lib/puppet/functions/ldap_data.rb +++ b/modules/base_installation/lib/puppet/functions/ldap_data.rb @@ -30,9 +30,19 @@ Puppet::Functions.create_function(:ldap_data) do filter = "(objectclass=*)" data = {} - connection.search(base, scope, filter) do |entry| - data_ = entry.to_hash - jsons = data_["immaePuppetJson"] || [] + data_array = connection.search2(base, scope, filter, attrs=["immaePuppetJson", "dn"]).map do |entry| + [entry["dn"].first, entry["immaePuppetJson"] || []] + end.sort_by do |dn, json| + if dn == "ou=roles,ou=hosts,dc=immae,dc=eu" + [0, dn] + elsif dn.end_with?("ou=roles,ou=hosts,dc=immae,dc=eu") + [1, dn] + else + [2, dn] + end + end.to_h + + data_array.each do |dn, jsons| jsons.each do |json| data.merge!(JSON.parse(json)) end