def get_connection(aws_service, request)
server_url = "#{request[:protocol]}://#{request[:server]}:#{request[:port]}}"
case @params[:connections].to_s
when 'dedicated'
@connections_storage ||= {}
else
@connections_storage = (Thread.current[aws_service] ||= {})
end
@connections_storage[server_url] ||= {}
@connections_storage[server_url][:last_used_at] = Time.now
@connections_storage[server_url][:connection] ||= Rightscale::HttpConnection.new(:exception => RightAws::AwsError, :logger => @logger)
connections = 0
@connections_storage.to_a.sort{|i1, i2| i2[1][:last_used_at] <=> i1[1][:last_used_at]}.to_a.each do |i|
if i[0] != server_url && (@params[:max_connections] <= connections || i[1][:last_used_at] < Time.now - @params[:connection_lifetime])
@connections_storage.delete(i[0])
i[1][:connection].finish((@params[:max_connections] <= connections) ? "out-of-limit" : "out-of-date") rescue nil
else
connections += 1
end
end
@connections_storage[server_url][:connection]
end