diff options
| author | Steve Kemp <steve@steve.org.uk> | 2012-11-26 16:02:00 +0000 | 
|---|---|---|
| committer | Steve Kemp <steve@steve.org.uk> | 2012-11-26 16:02:00 +0000 | 
| commit | c61f9735c8b5be297c6114d8f2067adf42566b9e (patch) | |
| tree | 928cb6e6a0aabe68b1567469103aadf6b07f6139 | |
| parent | ab883e6a1a17c014cd283d2a96d7a978d2330499 (diff) | |
  Updated so that each alert-type has its dedicated alert-target.
| -rw-r--r-- | etc/custodian/custodian.cfg | 13 | ||||
| -rw-r--r-- | lib/custodian/settings.rb | 26 | ||||
| -rw-r--r-- | lib/custodian/worker.rb | 13 | 
3 files changed, 38 insertions, 14 deletions
| diff --git a/etc/custodian/custodian.cfg b/etc/custodian/custodian.cfg index 1a22239..5299fed 100644 --- a/etc/custodian/custodian.cfg +++ b/etc/custodian/custodian.cfg @@ -25,14 +25,21 @@  ##  # The target of the alert is alerter-specific.  # +# A target is based upon the name of the alerter with "_target" +# suffixed. +# +#  # For alerter=smtp the target is the email address to notify. -#   alerter_target = root@localhost +#   smtp_target = root@localhost  #  # For alerter=mauve the target is the host to notify -#   alerter_target = alert.bytemark.co.uk +#   mauve_target = alert.bytemark.co.uk  #  # For alerter=file the target is the logfile to write to. -#   alerter_target = /tmp/alerts.log +#   file_target = /tmp/alerts.log +# +# For alerter=redis the target is the redis server to talk to. +#   redis_target = 127.0.0.1  #  ## diff --git a/lib/custodian/settings.rb b/lib/custodian/settings.rb index 48adcc0..b601d79 100644 --- a/lib/custodian/settings.rb +++ b/lib/custodian/settings.rb @@ -54,6 +54,7 @@ module Custodian            val = $2.dup            key.strip!            val.strip! +            @settings[key] = val          end        end @@ -125,24 +126,31 @@ module Custodian      #      # When the alerter is "mauve" the target is the destination for the alerts.      # -    def alerter_target +    def alerter_target( alert )        _load() unless( _loaded? ) + +      # +      # Find the alerting method. +      #        # if we have something setup then use it. -      if ( @settings['alerter_target'] ) -        return( @settings['alerter_target'] ) +      if ( @settings["#{alert}_target"] ) +        return( @settings["#{alert}_target"] ) +      else        end        # otherwise per-test defaults. -      case alerter() -      when "smtp": +      case alert +        when "smtp":            "root" -      when "mauve": +        when "mauve":            "alert.bytemark.co.uk" -      when "file": +        when "file":            "alerts.log" -      else -        nil +        when "redis": +          "127.0.0.1:6379" +        else +          nil        end      end diff --git a/lib/custodian/worker.rb b/lib/custodian/worker.rb index 57c55f7..79dab1e 100644 --- a/lib/custodian/worker.rb +++ b/lib/custodian/worker.rb @@ -213,9 +213,14 @@ module Custodian      #      def do_raise( test )        @alerter.split( "," ).each do |alerter| +          log_message( "Creating alerter: #{alerter}" )          alert = Custodian::AlertFactory.create( alerter, test ) -        alert.set_target( Custodian::Settings.instance().alerter_target() ) + +        target = Custodian::Settings.instance().alerter_target( alerter ) +        puts "Target for alert is #{target}" + +        alert.set_target( target )          alert.raise()        end      end @@ -228,7 +233,11 @@ module Custodian        @alerter.split( "," ).each do |alerter|          log_message( "Creating alerter: #{alerter}" )          alert = Custodian::AlertFactory.create( alerter, test ) -        alert.set_target( Custodian::Settings.instance().alerter_target() ) + +        target = Custodian::Settings.instance().alerter_target( alerter ) +        puts "Target for alert is #{target}" + +        alert.set_target( target )          alert.clear()        end      end | 
