Parent

Files

Class/Module Index [+]

Quicksearch

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 isreadable 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/
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

[Validate]

Generated with the Darkfish Rdoc Generator 2.