You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2011/08/19 13:16:48 UTC
svn commit: r1159592 - in /incubator/deltacloud/trunk/server/lib/deltacloud:
base_driver/exceptions.rb drivers/rhevm/rhevm_driver.rb
helpers/application_helper.rb
Author: mfojtik
Date: Fri Aug 19 11:16:48 2011
New Revision: 1159592
URL: http://svn.apache.org/viewvc?rev=1159592&view=rev
Log:
Improved exception handling for RHEV-M
Modified:
incubator/deltacloud/trunk/server/lib/deltacloud/base_driver/exceptions.rb
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb
incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/base_driver/exceptions.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/base_driver/exceptions.rb?rev=1159592&r1=1159591&r2=1159592&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/base_driver/exceptions.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/base_driver/exceptions.rb Fri Aug 19 11:16:48 2011
@@ -28,6 +28,13 @@ module Deltacloud
end
end
+ class MethodNotAllowed < DeltacloudException
+ def initialize(e, message=nil)
+ message ||= e.message
+ super(405, e.class.name, message, e.backtrace)
+ end
+ end
+
class ValidationFailure < DeltacloudException
def initialize(e, message=nil)
message ||= e.message
@@ -49,6 +56,13 @@ module Deltacloud
end
end
+ class ObjectNotFound < DeltacloudException
+ def initialize(e, message)
+ message ||= e.message
+ super(404, e.class.name, message, e.backtrace)
+ end
+ end
+
class ExceptionDef
attr_accessor :status
attr_accessor :message
@@ -86,6 +100,9 @@ module Deltacloud
return @handler if @handler
case @status
when 401 then Deltacloud::ExceptionHandler::AuthenticationFailure.new(e, @message)
+ when 404 then Deltacloud::ExceptionHandler::ObjectNotFound.new(e, @message)
+ when 406 then Deltacloud::ExceptionHandler::UnknownMediaTypeError.new(e, @message)
+ when 405 then Deltacloud::ExceptionHandler::MethodNotAllowed.new(e, @message)
when 400 then Deltacloud::ExceptionHandler::ValidationFailure.new(e, @message)
when 500 then Deltacloud::ExceptionHandler::BackendError.new(e, @message)
when 502 then Deltacloud::ExceptionHandler::ProviderError.new(e, @message)
@@ -121,11 +138,12 @@ module Deltacloud
Deltacloud::ExceptionHandler::exceptions.each do |exdef|
if exdef.match?($!)
$stderr.send(report_method, "#{[$!.class.to_s, $!.message].join(':')}\n#{$!.backtrace.join("\n")}")
- raise exdef.handler($!)
+ new_exception = exdef.handler($!)
+ raise exdef.handler($!) if new_exception
end
end
$stderr.send(report_method, "[NO HANDLED] #{[$!.class.to_s, $!.message].join(': ')}\n#{$!.backtrace.join("\n")}")
- raise BackendError.new($!, $!.message)
+ raise Deltacloud::ExceptionHandler::BackendError.new($!, "Unhandled exception or status code (#{$!.message})")
end
end
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb?rev=1159592&r1=1159591&r2=1159592&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rhevm/rhevm_driver.rb Fri Aug 19 11:16:48 2011
@@ -321,6 +321,10 @@ class RHEVMDriver < Deltacloud::BaseDriv
status 401
end
+ on /RestClient::ResourceNotFound/ do
+ status 404
+ end
+
on /RestClient::InternalServerError/ do
status 502
end
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb?rev=1159592&r1=1159591&r2=1159592&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb Fri Aug 19 11:16:48 2011
@@ -258,7 +258,7 @@ module ApplicationHelper
def address_type(address)
case address
when /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?$/; :ipv4
- when /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?:([\-\d]+)$/; :vnc
+ when /^.*:([\-\d]+)$/; :vnc
when /^(\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2})?$/; :mac
else :hostname
end