Sha256: b74847f46f81e805b7501d815a5aef94f7661d9ab01326efa854aac5fe92fa06

Contents?: true

Size: 1.61 KB

Versions: 17

Compression:

Stored size: 1.61 KB

Contents

require 'json'

module Rearview
  module Alerts
    class PagerDutyAlert < Base

      def alert(job, result)
        job.alert_keys.each do |key|
          params = PagerDutyAlert.params(key)
          if PagerDutyAlert.key?(params)
            logger.info "#{self} send alert for #{job.inspect} and key #{key} with params #{params}"
            pagerduty_uri = Rearview.config.pagerduty_url
            job_uri       = Rearview::UrlHelper.job_url(job)
            msg           = result[:message]

            description = if msg
                            "#{msg.first(1024)} #{job_uri}"
                          else
                            "Rearview job #{job.id} #{job_uri}"
                          end

            options = { :body =>
              {
                :service_key  => params["token"],
                :event_type   => "trigger",
                :incident_key => "rearview/#{job.id}",
                :description  => description,
                :details     => result
              }.to_json
            }

            HTTParty.post(pagerduty_uri, options)
          end
        end
      end

      def self.params(key)
        uri = URI(key)
        if uri.scheme.present?
          {
            "scheme" => uri.scheme,
            "token" => uri.opaque,
          }
        end
      rescue
        {}
      end

      def self.key?(key)
        p = key_to_params(key)
        valid_scheme?(p["scheme"]) && valid_token?(p["token"])
      end

      def self.valid_token?(token)
        token.present? && token.match(/^\h{32}$/)
      end

      def self.scheme
        "pagerduty"
      end

    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
rearview-1.2.3-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.2.2.rc.2-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.2.2.rc.1-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.2.1-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.2.0-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.1.2-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.1.1-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.1.0-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.3.rc.4-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.3.rc.3-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.3.rc.2-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.3.rc.1-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.2-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.2.rc.4-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.2.rc.3-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.2.rc.2-jruby lib/rearview/alerts/pagerduty_alert.rb
rearview-1.0.2.rc.1-jruby lib/rearview/alerts/pagerduty_alert.rb