From: Peter Palfrader <peter@palfrader.org>
Date: Wed, 2 Mar 2011 12:00:22 +0000 (+0100)
Subject: Try to get useful error messages
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=602dba70eda47b7eca3e617da57da90333eba863;p=dsa-puppet.git

Try to get useful error messages
---

diff --git a/modules/puppetmaster/lib/puppet/parser/functions/allnodeinfo.rb b/modules/puppetmaster/lib/puppet/parser/functions/allnodeinfo.rb
index a71617e5..06b074d8 100644
--- a/modules/puppetmaster/lib/puppet/parser/functions/allnodeinfo.rb
+++ b/modules/puppetmaster/lib/puppet/parser/functions/allnodeinfo.rb
@@ -1,18 +1,22 @@
 module Puppet::Parser::Functions
   newfunction(:allnodeinfo, :type => :rvalue) do |args|
-    required = args.shift.split()
-    optional = args.shift.split()
+    begin
+      required = args.shift.split()
+      optional = args.shift.split()
 
-    allhosts = function_ldapinfo('*', required+optional )
-    res = {}
-    allhosts.each_pair do |hostname, host|
-        # If a returned value doesn't have all the attributes we're searching for, skip
-        # We'll skip if the array is empty, but we also seem to get back a nil object for empty attributes sometimes
-        next if required.any?{ |a| not host[a] or host[a].empty? }
-        res[hostname] = host
-    end
+      allhosts = function_ldapinfo('*', required+optional )
+      res = {}
+      allhosts.each_pair do |hostname, host|
+          # If a returned value doesn't have all the attributes we're searching for, skip
+          # We'll skip if the array is empty, but we also seem to get back a nil object for empty attributes sometimes
+          next if required.any?{ |a| not host[a] or host[a].empty? }
+          res[hostname] = host
+      end
 
-    return res
+      return res
+    rescue => e
+      raise Puppet::ParseError, "Error in allnodeinfo: #{e.message}\n#{e.backtrace}"
+    end
   end
 end
 # vim:set et: