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