class Backup::Notifier::PagerDuty
Attributes
resolve_on_warning[RW]
Determines if a backup with a warning should resolve an incident rather than trigger one.
Defaults to false.
service_key[RW]
PagerDuty
Service API Key. Should be a 32 character hex string.
Public Class Methods
new(mode, &block)
click to toggle source
Calls superclass method
Backup::Notifier::Base::new
# File lib/backup/notifier/pagerduty.rb, line 19 def initialize(mode, &block) super instance_eval(&block) if block_given? @resolve_on_warning ||= false end
Private Instance Methods
notify!(status)
click to toggle source
Trigger or resolve a PagerDuty
incident for this model
‘status` indicates one of the following:
‘:success` : The backup completed successfully. : The incident will be resolved if `on_success` is `true`.
‘:warning` : The backup completed successfully, but warnings were logged. : An incident will be triggered if `on_warning` or `on_success` is `true`.
‘:failure` : The backup operation failed. : An incident will be triggered if `on_failure` is `true`.
# File lib/backup/notifier/pagerduty.rb, line 45 def notify!(status) incident_description = "Backup - #{model.label}" incident_key = "backup/#{model.trigger}" incident_details = { :incident_key => incident_key, :details => { :trigger => model.trigger, :label => model.label, :started_at => model.started_at, :finished_at => model.finished_at, :duration => model.duration, :status => status, :exception => model.exception } } event_type = case status when :success then :resolve when :warning then resolve_on_warning ? :resolve : :trigger when :failure then :trigger end case event_type when :trigger pagerduty.trigger(incident_description, incident_details) when :resolve incident = pagerduty.get_incident(incident_key) incident.resolve(incident_description, incident_details) end end
pagerduty()
click to toggle source
# File lib/backup/notifier/pagerduty.rb, line 76 def pagerduty @pagerduty ||= Pagerduty.new(service_key) end