From f6d9144af81f2078567691614fa7831c1a116fdf Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Thu, 16 Jun 2011 18:23:52 +0100 Subject: Fixed up date handling in the xmpp/email template Changed basic notification logic in Alert. --- lib/mauve/alert.rb | 38 ++++++++++++++++++++--------- lib/mauve/mauve_time.rb | 2 +- lib/mauve/notifier.rb | 2 +- lib/mauve/notifiers/templates/email.txt.erb | 6 ++--- lib/mauve/notifiers/templates/xmpp.txt.erb | 2 +- lib/mauve/processor.rb | 2 +- 6 files changed, 33 insertions(+), 19 deletions(-) (limited to 'lib') diff --git a/lib/mauve/alert.rb b/lib/mauve/alert.rb index c234f03..6e5249f 100644 --- a/lib/mauve/alert.rb +++ b/lib/mauve/alert.rb @@ -366,16 +366,20 @@ module Mauve # if raise_time if raise_time <= (reception_time + 5) - alert_db.raised_at = raise_time + alert_db.raised_at = raise_time + alert_db.will_raise_at = nil else + alert_db.raised_at = nil alert_db.will_raise_at = raise_time end end if clear_time if clear_time <= (reception_time + 5) - alert_db.cleared_at = clear_time + alert_db.cleared_at = clear_time + alert_db.will_clear_at = nil else + alert_db.cleared_at = nil alert_db.will_clear_at = clear_time end end @@ -386,7 +390,7 @@ module Mauve if alert_db.cleared_at && alert_db.raised_at && alert_db.cleared_at < alert_db.raised_at alert_db.cleared_at = nil end - + # # # @@ -402,6 +406,8 @@ module Mauve alert_db.subject = alert_db.source end + logger.debug [alert_db.source, alert_db.subject].inspect + alert_db.summary = Alert.remove_html(alert.summary) if alert.summary && !alert.summary.empty? # @@ -411,18 +417,26 @@ module Mauve alert_db.importance = alert.importance if alert.importance != 0 - # FIXME: this logic ought to be clearer as it may get more complicated + alert_db.update_type = :changed unless alert_db.update_type + + # + # This decides if we notify. # - if alert_db.update_type - if alert_db.update_type.to_sym == :changed && !alert_db.raised? - # do nothing + should_notify = case alert_db.update_type.to_sym + when :raised + !was_raised + when :acknowledged + !was_acknowledged + when :cleared + !was_cleared else - alerts_updated << alert_db - end - else - alert_db.update_type = :changed + alert_db.raised? end + alerts_updated << alert_db if should_notify + + alert_db.updated_at = reception_time + logger.debug "Saving #{alert_db}" if !alert_db.save @@ -431,7 +445,7 @@ module Mauve else msg = alert_db.errors.inspect end - logger.error "Couldn't save update #{alert} because of #{msg}" unless alert_db.save + logger.error "Couldn't save update #{alert} because of #{msg}" end end diff --git a/lib/mauve/mauve_time.rb b/lib/mauve/mauve_time.rb index 2251c53..79fa4f3 100644 --- a/lib/mauve/mauve_time.rb +++ b/lib/mauve/mauve_time.rb @@ -124,7 +124,7 @@ class Time # # Make sure now is the correct class # - now now.to_time if now.is_a?(DateTime) + now = now.to_time if now.is_a?(DateTime) raise ArgumentError, "now must be a Time" unless now.is_a?(Time) diff --git a/lib/mauve/notifier.rb b/lib/mauve/notifier.rb index ce8c2b0..5c0e5a7 100644 --- a/lib/mauve/notifier.rb +++ b/lib/mauve/notifier.rb @@ -25,7 +25,7 @@ module Mauve logger.debug("Notifier buffer is #{sz} in length") - (sz > 10 ? 10 : sz).times do + (sz > 50 ? 50 : sz).times do person, level, alert = Server.notification_pop begin person.do_send_alert(level, alert) diff --git a/lib/mauve/notifiers/templates/email.txt.erb b/lib/mauve/notifiers/templates/email.txt.erb index eb49da9..1bc79a4 100644 --- a/lib/mauve/notifiers/templates/email.txt.erb +++ b/lib/mauve/notifiers/templates/email.txt.erb @@ -1,11 +1,11 @@ <%= alert.update_type.upcase %>: <% case alert.update_type when :cleared -%><%= MauveTime.now.to_s_relative(alert.cleared_at.to_time) %><% +%><%= alert.cleared_at.to_s_relative %><% when :acknowleged -%><%= MauveTime.now.to_s_relative(alert.acknowledged_at.to_time) %><% +%><%= alert.acknowledged_at.to_s_relative %><% else -%><%= MauveTime.now.to_s_relative(alert.raised_at.to_time) %><% +%><%= alert.raised_at.to_s_relative %><% end %>: <%= alert.summary %><% if alert.source != alert.subject diff --git a/lib/mauve/notifiers/templates/xmpp.txt.erb b/lib/mauve/notifiers/templates/xmpp.txt.erb index 22e2d8c..30ff1e6 100644 --- a/lib/mauve/notifiers/templates/xmpp.txt.erb +++ b/lib/mauve/notifiers/templates/xmpp.txt.erb @@ -7,7 +7,7 @@ when :acknowleged else %><%= MauveTime.now.to_s_relative(alert.raised_at.to_time) %><% end -%>: <%= alert.summary %><% +%>: <%= alert.subject %> <%= alert.summary %><% if alert.source != alert.subject %> -- from <%= alert.source %><% end diff --git a/lib/mauve/processor.rb b/lib/mauve/processor.rb index 034ba34..a46f229 100644 --- a/lib/mauve/processor.rb +++ b/lib/mauve/processor.rb @@ -36,7 +36,7 @@ module Mauve # Only do the loop a maximum of 10 times every @sleep_interval seconds # - (sz > 10 ? 10 : sz).times do + (sz > 50 ? 50 : sz).times do data, client, received_at = Server.packet_pop @logger.debug("Got #{data.inspect} from #{client.inspect}") -- cgit v1.2.1