class Handlers::ChangelogReporter
Public Class Methods
new(options = {})
click to toggle source
# File lib/changelog-reporter.rb, line 20 def initialize(options = {}) @resource_types = options.delete(:resource_types) || %w[] @filters = options.delete(:filters) || %w[] @host = options.delete(:host) || "" @port = options.delete(:port) || 443 @ssl = options.delete(:ssl) || true end
Public Instance Methods
deflate_severity(severity)
click to toggle source
# File lib/changelog-reporter.rb, line 28 def deflate_severity(severity) return severity if severity.is_a? Integer SEVERITY[severity] end
report()
click to toggle source
# File lib/changelog-reporter.rb, line 63 def report Chef::Log.info "Sending list of changed resources to Changelog" run_status.updated_resources.each do |r| if @resource_types.empty? or @resource_types.include? r.resource_name matches = false unless @filters.empty? @filters.each do |flt| if /#{flt}/.match(r.to_s) matches = true end end end unless matches self.sendreport("#{r} was updated on node : #{node['hostname']}", 'INFO', 'chef-run') end end end end
sendreport(message, severity, category = 'misc')
click to toggle source
# File lib/changelog-reporter.rb, line 33 def sendreport(message, severity, category = 'misc') httptrans = Net::HTTP.new @host, @port httptrans.use_ssl = @ssl httptrans.verify_mode = OpenSSL::SSL::VERIFY_NONE httptrans.open_timeout = 7 # seconds httptrans.read_timeout = 5 # seconds headers = { 'User-Agent' => "chef/changelog-reporter", 'Content-Type' => 'application/json' } data = { 'criticality' => deflate_severity(severity), 'unix_timestamp' => ::Time.now.to_i, 'category' => category, 'description' => message } begin response = httptrans.post('/api/events', JSON.generate(data), headers) unless response.body.include? '"OK"' Chef::Log.warn 'Failed to send changelog message to server' end rescue Exception => e Chef::Log.warn "Failed to send changelog message to server: #{e.message}" end end