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