diff --git a/devops-service/app/api2/routes/v2.0.rb b/devops-service/app/api2/routes/v2.0.rb index 53310b3..aa41bb5 100644 --- a/devops-service/app/api2/routes/v2.0.rb +++ b/devops-service/app/api2/routes/v2.0.rb @@ -10,6 +10,7 @@ require "exceptions/dependency_error" require "exceptions/conflict_exception" require "exceptions/parser_error" require "exceptions/validation_error" +require "exceptions/knife_config_error" require 'core/devops-logger' require_relative "../helpers/version_2" @@ -58,8 +59,12 @@ module Devops # set current logger and call handlers def call env DevopsLogger.logger = @@logger - res = super(env) - @@access_logger.info(env["REQUEST_METHOD"] + " " + env["REQUEST_URI"] + " - from #{env["HTTP_USER_AGENT"]}") + begin + res = super(env) + rescue DevopsError => e + return [e.code, {}, e.message] + end + @@access_logger.info(env["REQUEST_METHOD"] + " " + env["REQUEST_URI"] + " - from #{env["HTTP_USER_AGENT"]} (#{env["REMOTE_USER"]}) / #{res.inspect}") res end @@ -75,6 +80,12 @@ module Devops halt_response(e.message, 400) end + error Devops::Exception::KnifeConfigError do + e = env["sinatra.error"] + logger.error e.message + halt_response(e.message, 500) + end + error RecordNotFound do e = env["sinatra.error"] logger.warn e.message diff --git a/devops-service/exceptions/knife_config_error.rb b/devops-service/exceptions/knife_config_error.rb new file mode 100644 index 0000000..fd77a8f --- /dev/null +++ b/devops-service/exceptions/knife_config_error.rb @@ -0,0 +1,9 @@ +require 'exceptions/devops_error' +module Devops + module Exception + class KnifeConfigError < DevopsError + + end + end +end + diff --git a/devops-service/exceptions/response_error.rb b/devops-service/exceptions/response_error.rb new file mode 100644 index 0000000..996ec04 --- /dev/null +++ b/devops-service/exceptions/response_error.rb @@ -0,0 +1,13 @@ +module Devops + module Exception + + class DevopsError < StandardError + + def code + 500 + end + + end + + end +end