From 58f41e036b6311e5aee4b9f603a0b2674feab36d Mon Sep 17 00:00:00 2001 From: Eric Shamow Date: Thu, 13 Jan 2011 17:11:45 -0500 Subject: [PATCH 43/43] Fixes blank e-mails due to reports being saved after send --- app/models/report.rb | 18 ++++++++++++++++++ app/models/report_observer.rb | 14 -------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/models/report.rb b/app/models/report.rb index feeaa5d..c95a3ac 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -119,6 +119,7 @@ class Report < ActiveRecord::Base r = self.create!(:host => host, :reported_at => report.time.utc, :status => st, :metrics => self.m2h(report.metrics)) # Store all Puppet message logs r.import_log_messages report + r.inspect_report return r rescue Exception => e logger.warn "Failed to process report for #{report.host} due to:#{e}" @@ -188,6 +189,22 @@ class Report < ActiveRecord::Base end end + def inspect_report + if error? + # found a report with errors + # notify via email IF enabled is set to true + if host.disabled? + logger.warn "#{host} is disabled - skipping." + return + end + HostMailer.deliver_error_state(self) if SETTINGS[:failed_report_email_notification] + # add here more actions - e.g. snmp alert etc + end + rescue => e + logger.warn "failed to send failure email notification: #{e}" + end + + private # Converts metrics form Puppet report into a hash @@ -268,4 +285,5 @@ class Report < ActiveRecord::Base errors.add_to_base "You do not have permission to #{operation} this report" false end + end diff --git a/app/models/report_observer.rb b/app/models/report_observer.rb index dc892c3..a5d67b8 100644 --- a/app/models/report_observer.rb +++ b/app/models/report_observer.rb @@ -1,16 +1,2 @@ class ReportObserver < ActiveRecord::Observer - def after_save report - if report.error? - # found a report with errors - # notify via email IF enabled is set to true - if report.host.disabled? - report.logger.warn "#{report.host} is disabled - skipping." - return - end - HostMailer.deliver_error_state(report) if SETTINGS[:failed_report_email_notification] - # add here more actions - e.g. snmp alert etc - end - rescue => e - report.logger.warn "failed to send failure email notification: #{e}" if report.logger - end end -- 1.7.3.4