1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

OpenStack custom exception cleanup.

Fixes an exception class name error for the custom
OpenStack ServiceUnavailable exception. Previously the wrong
class name was being used.

Also cleans up and simplifies some other exceptions in the OpenStack
implementation. (We can simply use NotFound from Fog::Errors instead)
This commit is contained in:
Dan Prince 2012-12-09 16:51:07 -05:00
parent e099801d02
commit c544610791
3 changed files with 6 additions and 8 deletions

View file

@ -26,9 +26,6 @@ module Fog
end end
end end
class InternalServerError < ServiceError; end
class Conflict < ServiceError; end
class NotFound < ServiceError; end
class ServiceUnavailable < ServiceError; end class ServiceUnavailable < ServiceError; end
class BadRequest < ServiceError class BadRequest < ServiceError
@ -103,7 +100,7 @@ module Fog
body = Fog::JSON.decode(response.body) body = Fog::JSON.decode(response.body)
if body['tenants'].empty? if body['tenants'].empty?
raise Errors::NotFound.new('No Tenant Found') raise Fog::Errors::NotFound.new('No Tenant Found')
else else
options[:openstack_tenant] = body['tenants'].first['name'] options[:openstack_tenant] = body['tenants'].first['name']
end end
@ -127,12 +124,12 @@ module Fog
message = "Could not find service #{missing}. Have #{available}" message = "Could not find service #{missing}. Have #{available}"
raise Errors::NotFound, message raise Fog::Errors::NotFound, message
end end
if service['endpoints'].count > 1 if service['endpoints'].count > 1
regions = service["endpoints"].map{ |e| e['region'] }.uniq.join(',') regions = service["endpoints"].map{ |e| e['region'] }.uniq.join(',')
raise Errors::NotFound.new("Multiple regions available choose one of these '#{regions}'") raise Fog::Errors::NotFound.new("Multiple regions available choose one of these '#{regions}'")
end end
identity_service = body['access']['serviceCatalog']. identity_service = body['access']['serviceCatalog'].

View file

@ -372,6 +372,7 @@ module Fog
} }
if @openstack_auth_uri.path =~ /\/v2.0\// if @openstack_auth_uri.path =~ /\/v2.0\//
credentials = Fog::OpenStack.authenticate_v2(options, @connection_options) credentials = Fog::OpenStack.authenticate_v2(options, @connection_options)
else else
credentials = Fog::OpenStack.authenticate_v1(options, @connection_options) credentials = Fog::OpenStack.authenticate_v1(options, @connection_options)
@ -393,7 +394,7 @@ module Fog
@path.sub!(/\/$/, '') @path.sub!(/\/$/, '')
unless @path.match(/1\.1|v2/) unless @path.match(/1\.1|v2/)
raise Fog::Compute::OpenStack::ServiceUnavailable.new( raise Fog::OpenStack::Errors::ServiceUnavailable.new(
"OpenStack binding only supports version 2 (a.k.a. 1.1)") "OpenStack binding only supports version 2 (a.k.a. 1.1)")
end end

View file

@ -93,7 +93,7 @@ Shindo.tests('OpenStack | authenticate', ['openstack']) do
Excon.stub({ :method => 'POST', :path => "/v2.0/tokens" }, Excon.stub({ :method => 'POST', :path => "/v2.0/tokens" },
{ :status => 200, :body => Fog::JSON.encode(body) }) { :status => 200, :body => Fog::JSON.encode(body) })
raises(Fog::OpenStack::Errors::NotFound, raises(Fog::Errors::NotFound,
'Could not find service network. Have compute, image') do 'Could not find service network. Have compute, image') do
Fog::OpenStack.authenticate_v2( Fog::OpenStack.authenticate_v2(
:openstack_auth_uri => URI('http://example/v2.0/tokens'), :openstack_auth_uri => URI('http://example/v2.0/tokens'),