You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2011/10/10 14:46:24 UTC

[PATCH core] Client: Added error handler for 502 code

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 client/lib/deltacloud.rb |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/client/lib/deltacloud.rb b/client/lib/deltacloud.rb
index fcf6e49..55cd854 100644
--- a/client/lib/deltacloud.rb
+++ b/client/lib/deltacloud.rb
@@ -359,7 +359,7 @@ module DeltaCloud
       if conf[:method].eql?(:post)
         resource = RestClient::Resource.new(conf[:path], :open_timeout => conf[:open_timeout], :timeout => conf[:timeout])
         resource.send(:post, conf[:form_data], default_headers.merge(extended_headers)) do |response, request, block|
-          handle_backend_error(response) if response.code.eql?(500)
+          handle_backend_error(response) if [500, 502].include? response.code
           if response.respond_to?('body')
             yield response.body if block_given?
           else
@@ -369,7 +369,7 @@ module DeltaCloud
       else
         resource = RestClient::Resource.new(conf[:path], :open_timeout => conf[:open_timeout], :timeout => conf[:timeout])
         resource.send(conf[:method], default_headers.merge(extended_headers)) do |response, request, block|
-          handle_backend_error(response) if response.code.eql?(500)
+          handle_backend_error(response) if [500, 502].include? response.code
           if conf[:method].eql?(:get) and [301, 302, 307].include? response.code
             response.follow_redirection(request) do |response, request, block|
               if response.respond_to?('body')
@@ -393,7 +393,7 @@ module DeltaCloud
     # backend
     class BackendError < StandardError
       def initialize(opts={})
-        @message = opts[:message]
+        @message = "[#{opts[:code]}] #{opts[:message]}"
       end
       def message
         @message
@@ -401,7 +401,7 @@ module DeltaCloud
     end
 
     def handle_backend_error(response)
-      raise BackendError.new(:message => (Nokogiri::XML(response)/'error/message').text)
+      raise BackendError.new(:message => (Nokogiri::XML(response)/'error/message').text, :code => response.code)
     end
 
     # Check if specified collection have wanted feature
-- 
1.7.4.4