class ChefHandlerForeman::ForemanReporting
Attributes
uploader[RW]
Public Instance Methods
report()
click to toggle source
# File lib/chef_handler_foreman/foreman_reporting.rb, line 20 def report report = { 'host' => node['fqdn'].downcase, 'reported_at' => Time.now.utc.to_s } report_status = Hash.new(0) report_status['failed'] = 1 if failed? report_status['applied'] = run_status.updated_resources.count report['status'] = report_status # I can't compute much metrics for now metrics = {} metrics['resources'] = { 'total' => run_status.all_resources.count } times = {} run_status.all_resources.each do |resource| resource_name = resource.resource_name if times[resource_name].nil? times[resource_name] = resource.elapsed_time else times[resource_name] += resource.elapsed_time end end metrics['time'] = times.merge!({ 'total' => run_status.elapsed_time }) report['metrics'] = metrics logs = [] run_status.updated_resources.each do |resource| l = { 'log' => { 'sources' => {}, 'messages' => {}, 'level' => 'notice' } } case resource.resource_name.to_s when 'template', 'cookbook_file' message = resource.diff when 'package' message = "Installed #{resource.package_name} package in #{resource.version}" else message = resource.action.to_s end l['log']['messages']['message'] = message l['log']['sources']['source'] = [resource.resource_name.to_s, resource.name].join(' ') #Chef::Log.info("Diff is #{l['log']['messages']['message']}") logs << l end # I only set failed to 1 if chef run failed if failed? logs << { 'log' => { 'sources' => { 'source' => 'chef' }, 'messages' => { 'message' => run_status.exception }, 'level' => 'err' } } end report['logs'] = logs full_report = { 'config_report' => report } send_report(full_report) end
Private Instance Methods
send_report(report)
click to toggle source
# File lib/chef_handler_foreman/foreman_reporting.rb, line 81 def send_report(report) if uploader uploader.foreman_request('/api/config_reports', report, node.name) else Chef::Log.error "No uploader registered for foreman reporting, skipping report upload" end end