class Chef::Handler::Genesis

Attributes

config[R]

Public Class Methods

new(config = {}) click to toggle source
# File lib/chef/handler/genesis.rb, line 15
def initialize(config = {})
  @config = Mash.new(config)
end

Public Instance Methods

report() click to toggle source
# File lib/chef/handler/genesis.rb, line 19
def report
  if defined?(Bugsnag)
    @bugsnag_config = Bugsnag::Configuration.new
    @bugsnag_config.api_key = @config.delete('bugsnag_api_key')
    @bugsnag_config.app_version = GenesisCollector::VERSION
    @bugsnag_config.project_root = File.expand_path('../../..', File.dirname(__FILE__))
    @bugsnag_config.release_stage = run_context.node.chef_environment
    @config[:error_handler] = ->(e) { Bugsnag::Notification.new(e, @bugsnag_config).deliver }
  end
  prepare_report
  send_report
end

Private Instance Methods

prepare_report() click to toggle source
# File lib/chef/handler/genesis.rb, line 34
def prepare_report
  @collector = GenesisCollector::Collector.new(@config.merge(chef_node: run_context.node))
  @collector.collect!
rescue => e
  Bugsnag::Notification.new(e, @bugsnag_config).deliver if defined?(Bugsnag)
  Chef::Log.error("Error collecting system information for Genesis:\n" + e.message)
  Chef::Log.error(e.backtrace.join("\n"))
end
send_report() click to toggle source
# File lib/chef/handler/genesis.rb, line 43
def send_report
  @collector.submit!
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
  Bugsnag::Notification.new(e, @bugsnag_config).deliver if defined?(Bugsnag)
  Chef::Log.error("Could not connect to Genesis. Connection error:\n" + e.message)
  Chef::Log.error(e.backtrace.join("\n"))
end