Module: Chef::DataCollector::ErrorHandlers Private

Included in:
Reporter
Defined in:
lib/chef/data_collector/error_handlers.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

This module isolates the handling of collecting error descriptions to insert into the data_collector report output. For very early errors it is responsible for collecting the node_name for the report to use. For all failure conditions that have an ErrorMapper it collects the output.

No external code should call anything in this module directly.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#node_nameString (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the fallback node name if we do NOT have a node due to early failures.

Returns:

  • (String)

    the fallback node name if we do NOT have a node due to early failures



32
33
34
# File 'lib/chef/data_collector/error_handlers.rb', line 32

def node_name
  @node_name
end

Instance Method Details

#cookbook_resolution_failed(expanded_run_list, exception) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This is an "early" failure during cookbook resolution / depsolving / talking to cookbook_version endpoint on a server

(see EventDispatch::Base#cookbook_resolution_failed)



74
75
76
77
# File 'lib/chef/data_collector/error_handlers.rb', line 74

def cookbook_resolution_failed(expanded_run_list, exception)
  description = Formatters::ErrorMapper.cookbook_resolution_failed(expanded_run_list, exception)
  @error_description = description.for_json
end

#cookbook_sync_failed(cookbooks, exception) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This is an "early" failure during cookbook synchronization

(see EventDispatch::Base#cookbook_sync_failed)



83
84
85
86
# File 'lib/chef/data_collector/error_handlers.rb', line 83

def cookbook_sync_failed(cookbooks, exception)
  description = Formatters::ErrorMapper.cookbook_sync_failed(cookbooks, exception)
  @error_description = description.for_json
end

#error_descriptionHash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns JSON-formatted error description from the Chef::Formatters::ErrorMapper.

Returns:

  • (Hash)

    JSON-formatted error description from the Chef::Formatters::ErrorMapper



35
36
37
# File 'lib/chef/data_collector/error_handlers.rb', line 35

def error_description
  @error_description ||= {}
end

#file_load_failed(path, exception) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This failure happens during library loading / attribute file parsing, etc.

(see EventDispatch::Base#file_load_failed)



92
93
94
95
# File 'lib/chef/data_collector/error_handlers.rb', line 92

def file_load_failed(path, exception)
  description = Formatters::ErrorMapper.file_load_failed(path, exception)
  @error_description = description.for_json
end

#node_load_failed(node_name, exception, config) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This is an exceptionally "early" failure that results in not having a valid Chef::Node object, so it must capture the node_name from the config.rb

(see EventDispatch::Base#node_load_failed)



55
56
57
58
59
# File 'lib/chef/data_collector/error_handlers.rb', line 55

def node_load_failed(node_name, exception, config)
  description = Formatters::ErrorMapper.node_load_failed(node_name, exception, config)
  @node_name = node_name
  @error_description = description.for_json
end

#recipe_not_found(exception) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This failure happens at converge time during recipe parsing

(see EventDispatch::Base#recipe_not_failed)



101
102
103
104
# File 'lib/chef/data_collector/error_handlers.rb', line 101

def recipe_not_found(exception)
  description = Formatters::ErrorMapper.file_load_failed(nil, exception)
  @error_description = description.for_json
end

#registration_failed(node_name, exception, config) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This is an exceptionally "early" failure that results in not having a valid Chef::Node object, so it must capture the node_name from the config.rb

(see EventDispatch::Base#registration_failed)



44
45
46
47
48
# File 'lib/chef/data_collector/error_handlers.rb', line 44

def registration_failed(node_name, exception, config)
  description = Formatters::ErrorMapper.registration_failed(node_name, exception, config)
  @node_name = node_name
  @error_description = description.for_json
end

#resource_failed(new_resource, action, exception) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This is a normal resource failure event during compile/converge phases

(see EventDispatch::Base#resource_failed)



110
111
112
113
# File 'lib/chef/data_collector/error_handlers.rb', line 110

def resource_failed(new_resource, action, exception)
  description = Formatters::ErrorMapper.resource_failed(new_resource, action, exception)
  @error_description = description.for_json
end

#run_list_expand_failed(node, exception) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This is an "early" failure during run_list expansion

(see EventDispatch::Base#run_list_expand_failed)



65
66
67
68
# File 'lib/chef/data_collector/error_handlers.rb', line 65

def run_list_expand_failed(node, exception)
  description = Formatters::ErrorMapper.run_list_expand_failed(node, exception)
  @error_description = description.for_json
end