class HammerCLIForeman::ExceptionHandler
Public Instance Methods
mappings()
click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/exception_handler.rb, line 7 def mappings super + [ [HammerCLIForeman::OperationNotSupportedError, :handle_unsupported_operation], [RestClient::InternalServerError, :handle_internal_error], [RestClient::Forbidden, :handle_forbidden], [RestClient::UnprocessableEntity, :handle_unprocessable_entity], [RestClient::MovedPermanently, :handle_moved_permanently], [ArgumentError, :handle_argument_error], ] end
Protected Instance Methods
handle_apipie_docloading_error(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 86 def handle_apipie_docloading_error(e) rake_command = 'foreman-rake apipie:cache' print_error _("Could not load the API description from the server") + "\n - " + _("is the server down?") + "\n - " + _("was '%s' run on the server when using apipie cache? (typical production settings)") % rake_command log_full_error e HammerCLI::EX_CONFIG end
handle_argument_error(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 46 def handle_argument_error(e) print_error e.message log_full_error e HammerCLI::EX_USAGE end
handle_forbidden(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 53 def handle_forbidden(e) print_error _("Forbidden - server refused to process the request") log_full_error e HammerCLI::EX_NOPERM end
handle_foreman_error(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 73 def handle_foreman_error(e) begin response = JSON.parse(e.response) response = HammerCLIForeman.record_to_common_format(response) unless response.has_key?('message') message = response['message'] || e.message rescue JSON::ParserError => parse_e message = e.message end print_error message log_full_error e end
handle_internal_error(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 40 def handle_internal_error(e) handle_foreman_error(e) HammerCLI::EX_SOFTWARE end
handle_moved_permanently(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 28 def handle_moved_permanently(e) error = [_("Redirection of API call detected.")] https_message = _("It seems hammer is configured to use HTTP and the server prefers HTTPS.") error << https_message if strip_protocol(e.response.headers[:location]) == strip_protocol(e.response.request.url) error << _("Update your server url configuration") error << _("you can set 'follow_redirects' to one of :default or :always to enable redirects following") print_error error.join("\n") log_full_error e HammerCLI::EX_CONFIG end
handle_not_found(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 67 def handle_not_found(e) handle_foreman_error(e) HammerCLI::EX_NOT_FOUND end
handle_unprocessable_entity(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 20 def handle_unprocessable_entity(e) response = JSON.parse(e.response) response = HammerCLIForeman.record_to_common_format(response) unless response.has_key?('message') print_error response['message'] || response['full_messages'] HammerCLI::EX_DATAERR end
handle_unsupported_operation(e)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 60 def handle_unsupported_operation(e) print_error e.message log_full_error e HammerCLI::EX_UNAVAILABLE end
Private Instance Methods
strip_protocol(url)
click to toggle source
# File lib/hammer_cli_foreman/exception_handler.rb, line 97 def strip_protocol(url) url.gsub(%r'^http(s)?://','').gsub(%r'//', '/') end