Idiot. LDAP returns an array for all attributes, index into it for hash keys
[mirror/dsa-puppet.git] / files / etc / puppet / lib / puppet / parser / functions / ldapinfo.rb
index 23243c0..3564de3 100644 (file)
@@ -7,6 +7,7 @@ module Puppet::Parser::Functions
       attributes << 'hostname'
     end
 
+    require 'ldap'
     ldap = LDAP::SSLConn.new('db.debian.org', 636)
 
     results = {}
@@ -18,7 +19,8 @@ module Puppet::Parser::Functions
         unless attributes.include?("*")
           next if attributes.any?{ |a|  not x[a] or x[a].empty? }
         end
-        results[x['hostname']] = x
+        results[x['hostname'][0]] = []
+        results[x['hostname'][0]] << x
       end
     rescue LDAP::ResultError
       raise Puppet::ParseError, "LDAP error"
@@ -27,6 +29,10 @@ module Puppet::Parser::Functions
     ensure
       ldap.unbind
     end
-    return( host == '*' ? results : results[host] )
+    if host == '*'
+      return(results)
+    else
+      return(results[host])
+    end
   end
 end