# 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