lib/fog/rackspace/compute.rb in fog-1.12.1 vs lib/fog/rackspace/compute.rb in fog-1.13.0
- old
+ new
@@ -188,11 +188,10 @@
@rackspace_username = options[:rackspace_username]
@rackspace_auth_url = options[:rackspace_auth_url]
@rackspace_servicenet = options[:rackspace_servicenet]
@rackspace_auth_token = options[:rackspace_auth_token]
@rackspace_endpoint = Fog::Rackspace.normalize_url(options[:rackspace_compute_v1_url] || options[:rackspace_management_url])
- @rackspace_must_reauthenticate = false
@connection_options = options[:connection_options] || {}
authenticate
Excon.defaults[:ssl_verify_peer] = false if service_net?
@persistent = options[:persistent] || false
@connection = Fog::Connection.new(endpoint_uri.to_s, @persistent, @connection_options)
@@ -200,59 +199,32 @@
def reload
@connection.reset
end
- def request(params)
- begin
- response = @connection.request(params.merge({
- :headers => {
- 'Content-Type' => 'application/json',
- 'X-Auth-Token' => auth_token
- }.merge!(params[:headers] || {}),
- :host => endpoint_uri.host,
- :path => "#{endpoint_uri.path}/#{params[:path]}",
- }))
- rescue Excon::Errors::Unauthorized => error
- if error.response.body != 'Bad username or password' # token expiration
- @rackspace_must_reauthenticate = true
- authenticate
- retry
- else # bad credentials
- raise error
- end
- rescue Excon::Errors::HTTPStatusError => error
- raise case error
- when Excon::Errors::NotFound
- NotFound.slurp(error, region)
- else
- error
- end
- end
- unless response.body.empty?
- response.body = Fog::JSON.decode(response.body)
- end
- response
+ def request(params, parse_json = true, &block)
+ super(params, parse_json, &block)
+ rescue Excon::Errors::NotFound => error
+ raise NotFound.slurp(error, region)
+ rescue Excon::Errors::BadRequest => error
+ raise BadRequest.slurp error
+ rescue Excon::Errors::InternalServerError => error
+ raise InternalServerError.slurp error
+ rescue Excon::Errors::HTTPStatusError => error
+ raise ServiceError.slurp error
end
-
def service_net?
@rackspace_servicenet == true
end
- def authenticate
- if @rackspace_must_reauthenticate || @rackspace_auth_token.nil?
- options = {
- :rackspace_api_key => @rackspace_api_key,
- :rackspace_username => @rackspace_username,
- :rackspace_auth_url => @rackspace_auth_url,
- :connection_options => @connection_options
- }
- super(options)
- else
- @auth_token = @rackspace_auth_token
- @uri = URI.parse(@rackspace_endpoint)
- end
+ def authenticate(options={})
+ super({
+ :rackspace_api_key => @rackspace_api_key,
+ :rackspace_username => @rackspace_username,
+ :rackspace_auth_url => @rackspace_auth_url,
+ :connection_options => @connection_options
+ })
end
def service_name
:cloudServers
end