class Chef::Formatters::ErrorInspectors::NodeLoadErrorInspector
APIErrorInspector¶ ↑
Wraps exceptions caused by API calls to the server.
Attributes
config[R]
exception[R]
node_name[R]
Public Class Methods
new(node_name, exception, config)
click to toggle source
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 36 def initialize(node_name, exception, config) @node_name = node_name @exception = exception @config = config end
Public Instance Methods
add_explanation(error_description)
click to toggle source
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 42 def add_explanation(error_description) case exception when Net::HTTPServerException, Net::HTTPFatalError humanize_http_exception(error_description) when *NETWORK_ERROR_CLASSES describe_network_errors(error_description) when Chef::Exceptions::PrivateKeyMissing error_description.section("Private Key Not Found:","Your private key could not be loaded. If the key file exists, ensure that it is readable by chef-client. ") error_description.section("Relevant Config Settings:","client_key "#{api_key}" ") else error_description.section("Unexpected Error:","#{exception.class.name}: #{exception.message}") end end
api_key()
click to toggle source
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 109 def api_key config[:client_key] end
clock_skew?()
click to toggle source
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 117 def clock_skew? exception.response.body =~ /synchronize the clock/i end
describe_404_error(error_description)
click to toggle source
Custom 404 error messaging. Users sometimes see 404s when they have misconfigured server URLs, and the wrong one redirects to the new one, e.g., PUT wrong.url/nodes/node-name becomes a GET after a redirect.
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 96 def describe_404_error(error_description) error_description.section("Resource Not Found:","The server returned a HTTP 404. This usually indicates that your chef_server_url is incorrect. ") error_description.section("Relevant Config Settings:","chef_server_url "#{server_url}" ") end
humanize_http_exception(error_description)
click to toggle source
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 61 def humanize_http_exception(error_description) response = exception.response case response when Net::HTTPUnauthorized # TODO: this is where you'd see conflicts b/c of username/clientname stuff describe_401_error(error_description) when Net::HTTPForbidden # TODO: we're rescuing errors from Node.find_or_create # * could be no write on nodes container # * could be no read on the node error_description.section("Authorization Error","Your client is not authorized to load the node data (HTTP 403). ") error_description.section("Server Response:", format_rest_error) error_description.section("Possible Causes:","* Your client (#{username}) may have misconfigured authorization permissions. ") when Net::HTTPBadRequest describe_400_error(error_description) when Net::HTTPNotFound describe_404_error(error_description) when Net::HTTPInternalServerError describe_500_error(error_description) when Net::HTTPBadGateway, Net::HTTPServiceUnavailable describe_503_error(error_description) else describe_http_error(error_description) end end
server_url()
click to toggle source
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 113 def server_url config[:chef_server_url] end
username()
click to toggle source
# File lib/chef/formatters/error_inspectors/node_load_error_inspector.rb, line 105 def username config[:node_name] end