diff options
| author | Steve Kemp <steve@steve.org.uk> | 2012-11-14 16:45:50 +0000 | 
|---|---|---|
| committer | Steve Kemp <steve@steve.org.uk> | 2012-11-14 16:45:50 +0000 | 
| commit | f0f0e01562339ed94eddee6eb13e92b8f17b6acc (patch) | |
| tree | 1c5a26f0c3c2757adddfcbb6c569777ceef6cd78 /lib/custodian | |
| parent | fc75adb85d83cebc21bc7e6831d1eddebf6ce4bd (diff) | |
  Moved core of the code into their own libraries.
Diffstat (limited to 'lib/custodian')
| -rw-r--r-- | lib/custodian/alerter.rb | 76 | 
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 | 
