class Flapjack::Gateways::PagerDuty
Public Class Methods
send_pagerduty_event(opts = {})
click to toggle source
FIXME trap JSON errors
# File lib/flapjack/gateways/pager_duty.rb, line 22 def self.send_pagerduty_event(opts = {}) event = { 'service_key' => opts[:service_key], 'incident_key' => opts[:incident_key], 'event_type' => opts[:event_type], 'description' => opts[:description] } uri = URI::HTTPS.build(:host => 'events.pagerduty.com', :port => 443, :path => '/generic/2010-04-15/create_event.json') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER request = Net::HTTP::Post.new(uri.request_uri, {'Content-type' =>'application/json'}) request.body = Flapjack.dump_json(event) http_response = http.request(request) status = http_response.code response = nil begin response = Flapjack.load_json(http_response.body) rescue JSON::JSONError Flapjack.logger.error("failed to parse json from a post to #{uri.request_uri} ... response headers and body follows...") end Flapjack.logger.debug "send_pagerduty_event got a return code of #{status} - #{response.inspect}" unless status.to_i == 200 raise "Error sending event to PagerDuty: status: #{status.to_s} - #{response.inspect}" + " posted data: #{options[:body]}" end [status, response] end
test_pagerduty_connection()
click to toggle source
# File lib/flapjack/gateways/pager_duty.rb, line 55 def self.test_pagerduty_connection code, results = send_pagerduty_event(:service_key => '11111111111111111111111111111111', :incident_key => 'Flapjack is running a NOOP', :event_type => 'nop', :description => 'I love APIs with noops.') return true if '200'.eql?(code) && results['status'] =~ /success/i Flapjack.logger.error "Error: test_pagerduty_connection: API returned #{code.to_s} #{results.inspect}" false end