Class: Chef::Formatters::ErrorInspectors::RunListExpansionErrorInspector
- Inherits:
-
Object
- Object
- Chef::Formatters::ErrorInspectors::RunListExpansionErrorInspector
show all
- Includes:
- APIErrorFormatting
- Defined in:
- lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb
Constant Summary
APIErrorFormatting::NETWORK_ERROR_CLASSES
Instance Attribute Summary collapse
Instance Method Summary
collapse
#api_key, #clock_skew?, #describe_400_error, #describe_401_error, #describe_406_error, #describe_500_error, #describe_503_error, #describe_eof_error, #describe_http_error, #describe_network_errors, #format_rest_error, #safe_format_rest_error, #server_url, #username
Constructor Details
Returns a new instance of RunListExpansionErrorInspector.
33
34
35
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 33
def initialize(node, exception)
@node, @exception = node, exception
end
|
Instance Attribute Details
#exception ⇒ Object
Returns the value of attribute exception.
30
31
32
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 30
def exception
@exception
end
|
#node ⇒ Object
Returns the value of attribute node.
31
32
33
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 31
def node
@node
end
|
Instance Method Details
#add_explanation(error_description) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 37
def add_explanation(error_description)
case exception
when Errno::ECONNREFUSED, Timeout::Error, Errno::ETIMEDOUT, SocketError
error_description.section("Networking Error:", <<~E)
#{exception.message}
Your chef_server_url may be misconfigured, or the network could be down.
E
when Net::HTTPClientException, Net::HTTPFatalError
humanize_http_exception(error_description)
when Chef::Exceptions::MissingRole
describe_missing_role(error_description)
when EOFError
describe_eof_error(error_description)
else
error_description.section("Unexpected Error:", "#{exception.class.name}: #{exception.message}")
end
end
|
#config ⇒ Object
72
73
74
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 72
def config
Chef::Config
end
|
#describe_missing_role(error_description) ⇒ Object
56
57
58
59
60
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 56
def describe_missing_role(error_description)
error_description.section("Missing Role(s) in Run List:", missing_roles_explained)
original_run_list = node.run_list.map { |item| "* #{item}" }.join("\n")
error_description.section("Original Run List", original_run_list)
end
|
#humanize_http_exception(error_description) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 76
def humanize_http_exception(error_description)
response = exception.response
case response
when Net::HTTPUnauthorized
error_description.section("Authentication Error:", <<~E)
Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
E
error_description.section("Server Response:", format_rest_error)
error_description.section("Relevant Config Settings:", <<~E)
chef_server_url "#{server_url}"
node_name "#{username}"
client_key "#{api_key}"
If these settings are correct, your client_key may be invalid.
E
when Net::HTTPForbidden
error_description.section("Authorization Error", <<~E)
Your client is not authorized to load one or more of your roles (HTTP 403).
E
error_description.section("Server Response:", format_rest_error)
error_description.section("Possible Causes:", <<~E)
* Your client (#{username}) may have misconfigured authorization permissions.
E
when Net::HTTPNotAcceptable
describe_406_error(error_description, response)
when Net::HTTPInternalServerError
error_description.section("Unknown Server Error:", <<~E)
The server had a fatal error attempting to load a role.
E
error_description.section("Server Response:", format_rest_error)
when Net::HTTPBadGateway, Net::HTTPServiceUnavailable
error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
error_description.section("Server Response:", format_rest_error)
else
error_description.section("Unexpected API Request Failure:", format_rest_error)
end
end
|
#missing_roles_explained ⇒ Object
62
63
64
65
66
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 62
def missing_roles_explained
run_list_expansion.missing_roles_with_including_role.map do |role, includer|
"* #{role} included by '#{includer}'"
end.join("\n")
end
|
#run_list_expansion ⇒ Object
68
69
70
|
# File 'lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb', line 68
def run_list_expansion
exception.expansion
end
|