Skip to content

Commit

Permalink
Save reporting data to disk on HTTP failure
Browse files Browse the repository at this point in the history
For debugging and support use
  • Loading branch information
btm committed Oct 19, 2012
1 parent 1f8bf2f commit 508ee1b
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions chef/lib/chef/resource_reporter.rb
Expand Up @@ -187,17 +187,26 @@ def post_reporting_data
Chef::Log.info("Sending resource update report (run-id: #{@run_id})")
Chef::Log.debug run_data.inspect
compressed_data = encode_gzip(run_data.to_json)
#if summary only is enabled send the uncompressed run_data excluding the run_data["resources"] and some additional metrics.
if @summary_only
run_data = report_summary(run_data, compressed_data)
Chef::Log.info("run_data_summary: #{run_data}")
@rest_client.post_rest(resource_history_url, run_data)
else
Chef::Log.debug("Sending Compressed Run Data...")
# Since we're posting compressed data we can not directly call
# post_rest which expects JSON
reporting_url = @rest_client.create_url(resource_history_url)
@rest_client.raw_http_request(:POST, reporting_url, {'Content-Encoding' => 'gzip'}, compressed_data)
begin
#if summary only is enabled send the uncompressed run_data excluding the run_data["resources"] and some additional metrics.
if @summary_only
run_data = report_summary(run_data, compressed_data)
Chef::Log.info("run_data_summary: #{run_data}")
@rest_client.post_rest(resource_history_url, run_data)
else
Chef::Log.debug("Sending compressed run data...")
# Since we're posting compressed data we can not directly call
# post_rest which expects JSON
reporting_url = @rest_client.create_url(resource_history_url)
@rest_client.raw_http_request(:POST, reporting_url, {'Content-Encoding' => 'gzip'}, compressed_data)
end
rescue Net::HTTPServerException => e
if e.response.code.to_s == "400"
Chef::FileCache.store("failed-reporting-data.json", Chef::JSONCompat.to_json_pretty(run_data), 0640)
Chef::Log.error("Failed to post reporting data to server (HTTP 400), saving to #{Chef::FileCache.load("failed-reporting-data.json", false)}")
else
Chef::Log.error("Failed to post reporting data to server (HTTP #{e.response.code.to_s})")
end
end
else
Chef::Log.debug("Server doesn't support resource history, skipping resource report.")
Expand Down

0 comments on commit 508ee1b

Please sign in to comment.