def self.save(host, report, reported_at=nil)
FileUtils.mkdir_p HostReport.spooldir
reported_at ||= Time.now.utc
on_disk_report = { "host" => host, "report" => report , "reported_at" => reported_at.to_s }
temp_fname = with_unique_filename "new-" do |temp_fname|
File.open temp_fname, File::WRONLY|File::CREAT|File::EXCL do |tmpfile|
tmpfile.write(on_disk_report.to_json)
end
end
with_unique_filename ("ureport-" + DateTime.now.iso8601 + "-") do |final_fname|
File.link temp_fname, final_fname
File.unlink temp_fname
end
end