summaryrefslogtreecommitdiff
path: root/lib/custodian/alerter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/custodian/alerter.rb')
-rw-r--r--lib/custodian/alerter.rb76
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/custodian/alerter.rb b/lib/custodian/alerter.rb
new file mode 100644
index 0000000..751b368
--- /dev/null
+++ b/lib/custodian/alerter.rb
@@ -0,0 +1,76 @@
+
+
+require 'mauve/sender'
+require 'mauve/proto'
+
+
+
+#
+# This class encapsulates the raising and clearing of alerts via Mauve.
+#
+class Alerter
+
+ attr_reader :details
+
+ def initialize( test_details )
+ @details = test_details
+ end
+
+
+ #
+ # Raise the alert.
+ #
+ def raise( detail )
+
+ update = Mauve::Proto::AlertUpdate.new
+ update.alert = []
+ update.source = "custodian"
+
+ # be explicit about raising/clearing
+ update.replace = false
+
+ alert = Mauve::Proto::Alert.new
+
+ # e.g. ping-example.vm.bytemark.co.uk
+ # e.g. http-http://example.com/page1
+ alert.id = "#{@details['test_type']}-#{@details['target_host']}"
+
+ alert.subject = @details['target_host']
+ alert.summary = @details['test_alert']
+ alert.detail = "The #{@details['test_type']} test failed against #{@details['target_host']}: #{detail}"
+ alert.raise_time = Time.now.to_i
+ update.alert << alert
+
+ Mauve::Sender.new("alert.bytemark.co.uk").send(update)
+
+ end
+
+ #
+ # Clear the alert.
+ #
+ def clear
+
+ update = Mauve::Proto::AlertUpdate.new
+ update.alert = []
+ update.source = "custodian"
+
+ # be explicit about raising/clearing
+ update.replace = false
+
+
+ alert = Mauve::Proto::Alert.new
+
+ # e.g. ping-example.vm.bytemark.co.uk
+ # e.g. http-http://example.com/page1
+ alert.id = "#{@details['test_type']}-#{@details['target_host']}"
+
+ alert.subject = @details['target_host']
+ alert.summary = @details['test_alert']
+ alert.detail = "The #{@details['test_type']} test succeeded against #{@details['target_host']}"
+ alert.clear_time = Time.now.to_i
+ update.alert << alert
+
+ Mauve::Sender.new("alert.bytemark.co.uk").send(update)
+ end
+
+end