From cc949e2b32c4dd0e178539c3a13e12371a33aad9 Mon Sep 17 00:00:00 2001 From: Steve Kemp Date: Wed, 12 Dec 2012 10:11:26 +0000 Subject: Use the SHA1 hash of the input line as the alert ID for mauve. --- debian/changelog | 9 +++++++++ lib/custodian/alerts/mauve.rb | 9 ++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 8c17a23..8862df5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +custodian (0.8-5) stable; urgency=low + + * When sending alerts via Mauve the ID of the alert must be unique, + per-source. We thought we'd achieved this by using the input line + from the parser, but sadly there is a 255 character limit. + Use the SHA1 hash of the input to satisfy both constraints. + + -- Steve Kemp Wed, 12 Dec 2012 10:11:01 +0000 + custodian (0.8-4) stable; urgency=low * The error message is more explicit on DNS failures. diff --git a/lib/custodian/alerts/mauve.rb b/lib/custodian/alerts/mauve.rb index 31cb874..c0d4caf 100644 --- a/lib/custodian/alerts/mauve.rb +++ b/lib/custodian/alerts/mauve.rb @@ -3,6 +3,7 @@ require 'custodian/util/bytemark' require 'custodian/util/dns' +require 'digest/sha1' # @@ -172,7 +173,13 @@ module Custodian alert = Mauve::Proto::Alert.new - alert.id = test.to_s + + # + # Mauve only lets us use IDs which are <= 255 characters in length + # hash the line from the parser to ensure it is short enough. + # (IDs must be unique, per-source) + alert.id = Digest::SHA1.hexdigest(test.to_s) + alert.subject = subject alert.summary = "The #{test_type} test failed against #{test_host}" -- cgit v1.2.1