Struct.new(:new_resource, :current_resource, :action, :exception, :elapsed_time)
# File lib/chef/resource_reporter.rb, line 43 def self.new_for_exception(new_resource, action) report = new report.new_resource = new_resource report.action = action report end
# File lib/chef/resource_reporter.rb, line 35 def self.new_with_current_state(new_resource, action, current_resource) report = new report.new_resource = new_resource report.action = action report.current_resource = current_resource report end
# File lib/chef/resource_reporter.rb, line 85 def finish self.elapsed_time = new_resource.elapsed_time end
Future: Some resources store state information that does not convert nicely to json. We can’t call a resource’s state method here, since there are conflicts with some LWRPs, so we can’t override a resource’s state method to return json-friendly state data.
The registry key resource returns json-friendly state data through its state attribute, and uses a read-only variable for fetching true state data. If we have conflicts with other resources reporting json incompatible state, we may want to extend the state_attrs API with the ability to rename POST’d attrs.
# File lib/chef/resource_reporter.rb, line 60 def for_json as_hash = {} as_hash["type"] = new_resource.class.dsl_name as_hash["name"] = new_resource.name.to_s as_hash["id"] = new_resource.identity.to_s as_hash["after"] = state(new_resource) as_hash["before"] = current_resource ? state(current_resource) : {} as_hash["duration"] = (elapsed_time * 1000).to_i.to_s as_hash["delta"] = new_resource.diff if new_resource.respond_to?("diff") as_hash["delta"] = "" if as_hash["delta"].nil? # TODO: rename as "action" as_hash["result"] = action.to_s if success? else #as_hash["result"] = "failed" end if new_resource.cookbook_name as_hash["cookbook_name"] = new_resource.cookbook_name as_hash["cookbook_version"] = new_resource.cookbook_version.version end as_hash end
Generated with the Darkfish Rdoc Generator 2.