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)

[View source]

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)

[View source]

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

[View source]

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)

[View source]

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)

[View source]

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)

[View source]

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)

[View source]

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)

[View source]

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)

[View source]

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