From 61e7ec0ac30fd8bb42f5f5602daf45299d353539 Mon Sep 17 00:00:00 2001 From: geemus Date: Fri, 11 Jun 2010 23:11:02 -0700 Subject: [PATCH] consolidate error slurp/reraising a bit --- lib/fog/aws/ec2.rb | 9 +++------ lib/fog/bluebox.rb | 5 +---- lib/fog/errors.rb | 7 +++++++ lib/fog/rackspace/servers.rb | 5 +---- lib/fog/slicehost.rb | 5 +---- 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/lib/fog/aws/ec2.rb b/lib/fog/aws/ec2.rb index 4a3ffa92eb..f636438e6e 100644 --- a/lib/fog/aws/ec2.rb +++ b/lib/fog/aws/ec2.rb @@ -227,15 +227,12 @@ def request(params) }) rescue Excon::Errors::Error => error if match = error.message.match(/(.*)<\/Code>(.*)<\/Message>/) - new_error = case match[1].split('.').last + raise case match[1].split('.').last when 'NotFound' - Fog::AWS::EC2::NotFound.new(match[2]) + Fog::AWS::EC2::NotFound.slurp(error, match[2]) else - Fog::AWS::EC2::Error.new("#{match[1]} => #{match[2]}") + Fog::AWS::EC2::Error.slurp(error, "#{match[1]} => #{match[2]}") end - new_error.set_backtrace(error.backtrace) - new_error.verbose = error.message - raise new_error else raise error end diff --git a/lib/fog/bluebox.rb b/lib/fog/bluebox.rb index adc9959a5c..581d632731 100644 --- a/lib/fog/bluebox.rb +++ b/lib/fog/bluebox.rb @@ -84,10 +84,7 @@ def request(params) rescue Excon::Errors::Error => error raise case error when Excon::Errors::NotFound - new_error = Fog::Bluebox::NotFound - new_error.set_backtrace(error.backtrace) - new_error.verbose = error.message - new_error + Fog::Bluebox::NotFound.slurp(error) else error end diff --git a/lib/fog/errors.rb b/lib/fog/errors.rb index c94663a70c..e42d9a0620 100644 --- a/lib/fog/errors.rb +++ b/lib/fog/errors.rb @@ -3,6 +3,13 @@ module Errors class Error < StandardError attr_accessor :verbose + + def self.slurp(error, message = nil) + new_error = new(message) + new_error.set_backtrace(error.backtrace) + new_error.verbose = error.message + new_error + end end class MockNotImplemented < Fog::Errors::Error; end diff --git a/lib/fog/rackspace/servers.rb b/lib/fog/rackspace/servers.rb index 15953fb0f6..2615b8cc2c 100644 --- a/lib/fog/rackspace/servers.rb +++ b/lib/fog/rackspace/servers.rb @@ -105,10 +105,7 @@ def request(params) rescue Excon::Errors::Error => error raise case error when Excon::Errors::NotFound - new_error = Fog::Rackspace::Servers::NotFound - new_error.set_backtrace(error.backtrace) - new_error.verbose = error.message - new_error + Fog::Rackspace::Servers::NotFound.slurp(error) else error end diff --git a/lib/fog/slicehost.rb b/lib/fog/slicehost.rb index 08695bd035..9220606e43 100644 --- a/lib/fog/slicehost.rb +++ b/lib/fog/slicehost.rb @@ -88,10 +88,7 @@ def request(params) rescue Excon::Errors::Error => error raise case error when Excon::Errors::NotFound - new_error = Fog::Slicehost::NotFound.new - new_error.set_backtrace(error.backtrace) - new_error.verbose = error.message - new_error + Fog::Slicehost::NotFound.slurp(error) else error end