]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - modules/puppetmaster/lib/puppet/parser/functions/whohosts.rb
Try returning an info hash for a hoster - this will fail
[dsa-puppet.git] / modules / puppetmaster / lib / puppet / parser / functions / whohosts.rb
index 73f4212b6f2513cc1c58c2b1fde95cb1f5967fc2..022ca895af991943211fefb06c4dc166f31b8ee1 100644 (file)
@@ -9,26 +9,27 @@ module Puppet::Parser::Functions
 
     $KCODE = 'utf-8'
 
-    ans = "unknown"
+    ans = {"name": "unknown"}
     yaml = YAML.load_file(yamlfile)
 
     if (nodeinfo['ldap'].has_key?('ipHostNumber'))
       nodeinfo['ldap']['ipHostNumber'].each do |addr|
         yaml.keys.each do |hoster|
-          if yaml[hoster].kind_of?(Array)
-            netrange = yaml[hoster]
-          elsif yaml[hoster].kind_of?(Array) and yaml[hoster].has_key?['netrange']
+          if yaml[hoster].kind_of?(Hash) and yaml[hoster].has_key?('netrange')
             netrange = yaml[hoster]['netrange']
           else
             next
           end
+
           netrange.each do |net|
-          begin
-            if IPAddr.new(net).include?(addr)
-              return hoster
+            begin
+              if IPAddr.new(net).include?(addr)
+                ans = yaml[hoster]
+                ans['name'] = hoster
+              end
+            rescue Exception => e
+              raise "Error while trying to match addr #{addr} for net #{net}: #{e.message}\n#{e.backtrace}"
             end
-          rescue
-            raise "Could not match addr #{addr} for net #{net}"
           end
         end
       end