diff --git a/lib/fog.rb b/lib/fog.rb index 9e6472a2b..fd7c9514f 100644 --- a/lib/fog.rb +++ b/lib/fog.rb @@ -29,7 +29,9 @@ require 'fog/ssh' module Fog module Errors - class Error < StandardError; end + class Error < StandardError + attr_accessor :verbose + end class MockNotImplemented < Fog::Errors::Error; end diff --git a/lib/fog/aws/ec2.rb b/lib/fog/aws/ec2.rb index ba6e4b851..4a3ffa92e 100644 --- a/lib/fog/aws/ec2.rb +++ b/lib/fog/aws/ec2.rb @@ -234,6 +234,7 @@ module Fog Fog::AWS::EC2::Error.new("#{match[1]} => #{match[2]}") end new_error.set_backtrace(error.backtrace) + new_error.verbose = error.message raise new_error else raise error diff --git a/lib/fog/bluebox.rb b/lib/fog/bluebox.rb index feca79820..adc9959a5 100644 --- a/lib/fog/bluebox.rb +++ b/lib/fog/bluebox.rb @@ -82,11 +82,14 @@ module Fog begin response = @connection.request(params.merge!({:host => @host})) rescue Excon::Errors::Error => error - case error + raise case error when Excon::Errors::NotFound - raise Fog::Bluebox::NotFound + new_error = Fog::Bluebox::NotFound + new_error.set_backtrace(error.backtrace) + new_error.verbose = error.message + new_error else - raise error + error end end unless response.body.empty? diff --git a/lib/fog/rackspace/servers.rb b/lib/fog/rackspace/servers.rb index 13ad31a3d..9002e7a4c 100644 --- a/lib/fog/rackspace/servers.rb +++ b/lib/fog/rackspace/servers.rb @@ -99,11 +99,14 @@ module Fog :path => "#{@path}/#{params[:path]}" })) rescue Excon::Errors::Error => error - case error + raise case error when Excon::Errors::NotFound - raise Fog::Rackspace::Servers::NotFound + new_error = Fog::Rackspace::Servers::NotFound + new_error.set_backtrace(error.backtrace) + new_error.verbose = error.message + new_error else - raise error + error end end unless response.body.empty? diff --git a/lib/fog/slicehost.rb b/lib/fog/slicehost.rb index 44e63ed7a..08695bd03 100644 --- a/lib/fog/slicehost.rb +++ b/lib/fog/slicehost.rb @@ -86,11 +86,14 @@ module Fog begin response = @connection.request(params.merge!({:host => @host})) rescue Excon::Errors::Error => error - case error + raise case error when Excon::Errors::NotFound - raise Fog::Slicehost::NotFound + new_error = Fog::Slicehost::NotFound.new + new_error.set_backtrace(error.backtrace) + new_error.verbose = error.message + new_error else - raise error + error end end