summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rwxr-xr-xlib/puppet/server/report.rb35
1 files changed, 24 insertions, 11 deletions
diff --git a/lib/puppet/server/report.rb b/lib/puppet/server/report.rb
index 719ab3a16..027c78f9d 100755
--- a/lib/puppet/server/report.rb
+++ b/lib/puppet/server/report.rb
@@ -46,12 +46,15 @@ class Server
def self.report(name)
name = name.intern if name.is_a? String
unless @reports.include? name
- @reportloader.load(name)
- unless @reports.include? name
- Puppet.warning(
- "Loaded report file for %s but report was not defined" %
- name
- )
+ if @reportloader.load(name)
+ unless @reports.include? name
+ Puppet.warning(
+ "Loaded report file for %s but report was not defined" %
+ name
+ )
+ return nil
+ end
+ else
return nil
end
end
@@ -88,7 +91,14 @@ class Server
report = CGI.unescape(report)
end
- process(report)
+ begin
+ process(report)
+ rescue => detail
+ Puppet.err "Could not process report %s: %s" % [$1, detail]
+ if Puppet[:trace]
+ puts detail.backtrace
+ end
+ end
# We don't want any tracking back in the fs. Unlikely, but there
# you go.
@@ -152,10 +162,8 @@ class Server
return
end
- Puppet[:reports].split(/\s*,\s*/).each do |name|
- method = self.class.report(name)
-
- if respond_to? method
+ reports().each do |name|
+ if method = self.class.report(name) and respond_to? method
Puppet.info "Processing report %s" % name
begin
send(method, report)
@@ -171,6 +179,11 @@ class Server
end
end
end
+
+ # Handle the parsing of the reports attribute.
+ def reports
+ Puppet[:reports].gsub(/(^\s+)|(\s+$)/, '').split(/\s*,\s*/)
+ end
end
end
end