aws 2.3.4 → 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/awsbase/right_awsbase.rb +90 -80
  2. metadata +2 -2
@@ -410,12 +410,26 @@ module Aws
410
410
  :protocol => lib_params[:protocol] }
411
411
  end
412
412
 
413
- # def get_conn(connection_name, lib_params, logger)
413
+ def get_conn(connection_name, lib_params, logger)
414
414
  # thread = lib_params[:multi_thread] ? Thread.current : Thread.main
415
415
  # thread[connection_name] ||= Rightscale::HttpConnection.new(:exception => Aws::AwsError, :logger => logger)
416
416
  # conn = thread[connection_name]
417
417
  # return conn
418
- # end
418
+ http_conn = nil
419
+ conn_mode = lib_params[:connection_mode]
420
+ if conn_mode == :per_request
421
+ http_conn = Rightscale::HttpConnection.new(:exception => AwsError, :logger => logger)
422
+
423
+ elsif conn_mode == :per_thread || conn_mode == :single
424
+ thread = conn_mode == :per_thread ? Thread.current : Thread.main
425
+ thread[connection_name] ||= Rightscale::HttpConnection.new(:exception => AwsError, :logger => logger)
426
+ http_conn = thread[connection_name]
427
+ # ret = request_info_impl(http_conn, bench, request, parser, &block)
428
+ end
429
+ return http_conn
430
+
431
+ end
432
+
419
433
  #
420
434
  # def request_info2(request, parser, lib_params, connection_name, logger, bench)
421
435
  # t = get_conn(connection_name, lib_params, logger)
@@ -426,32 +440,24 @@ module Aws
426
440
  # Raises AwsError if any banana happened
427
441
  def request_info2(request, parser, lib_params, connection_name, logger, bench, &block) #:nodoc:
428
442
  ret = nil
429
- conn_mode = lib_params[:connection_mode]
430
- if conn_mode == :per_request
431
- http_conn = Rightscale::HttpConnection.new(:exception => AwsError, :logger => logger)
432
- begin
433
- retry_count = 1
434
- count = 0
435
- while count < retry_count
436
- puts 'RETRYING QUERY due to QueryTimeout...' if count > 0
437
- begin
438
- ret = request_info_impl(http_conn, bench, request, parser)
439
- break
440
- rescue Aws::AwsError => ex
441
- if !ex.include?(/QueryTimeout/)
442
- raise ex
443
- end
443
+ http_conn = get_conn(connection_name, lib_params, logger)
444
+ begin
445
+ retry_count = 1
446
+ count = 0
447
+ while count <= retry_count
448
+ puts 'RETRYING QUERY due to QueryTimeout...' if count > 0
449
+ begin
450
+ ret = request_info_impl(http_conn, bench, request, parser, &block)
451
+ break
452
+ rescue Aws::AwsError => ex
453
+ if !ex.include?(/QueryTimeout/) || count == retry_count
454
+ raise ex
444
455
  end
445
- count += 1
446
456
  end
447
- ensure
448
- http_conn.finish if http_conn
457
+ count += 1
449
458
  end
450
- elsif conn_mode == :per_thread || conn_mode == :single
451
- thread = conn_mode == :per_thread ? Thread.current : Thread.main
452
- thread[connection_name] ||= Rightscale::HttpConnection.new(:exception => AwsError, :logger => logger)
453
- http_conn = thread[connection_name]
454
- ret = request_info_impl(http_conn, bench, request, parser, &block)
459
+ ensure
460
+ http_conn.finish if http_conn && lib_params[:connection_mode] == :per_request
455
461
  end
456
462
  ret
457
463
  end
@@ -465,73 +471,77 @@ module Aws
465
471
  def request_info_xml_simple(connection_name, lib_params, request, logger, params = {})
466
472
 
467
473
  @connection = get_conn(connection_name, lib_params, logger)
468
- @last_request = request[:request]
469
- @last_response = nil
474
+ begin
475
+ @last_request = request[:request]
476
+ @last_response = nil
470
477
 
471
- response = @connection.request(request)
472
- # puts "response=" + response.body
478
+ response = @connection.request(request)
479
+ # puts "response=" + response.body
473
480
  # benchblock.service.add!{ response = @connection.request(request) }
474
- # check response for errors...
475
- @last_response = response
476
- if response.is_a?(Net::HTTPSuccess)
477
- @error_handler = nil
481
+ # check response for errors...
482
+ @last_response = response
483
+ if response.is_a?(Net::HTTPSuccess)
484
+ @error_handler = nil
478
485
  # benchblock.xml.add! { parser.parse(response) }
479
486
  # return parser.result
480
- force_array = params[:force_array] || false
481
- # Force_array and group_tags don't work nice together so going to force array manually
482
- xml_simple_options = {"KeyToSymbol"=>false, 'ForceArray' => false}
483
- xml_simple_options["GroupTags"] = params[:group_tags] if params[:group_tags]
487
+ force_array = params[:force_array] || false
488
+ # Force_array and group_tags don't work nice together so going to force array manually
489
+ xml_simple_options = {"KeyToSymbol"=>false, 'ForceArray' => false}
490
+ xml_simple_options["GroupTags"] = params[:group_tags] if params[:group_tags]
484
491
 
485
492
  # { 'GroupTags' => { 'searchpath' => 'dir' }
486
493
  # 'ForceArray' => %r(_list$)
487
- parsed = XmlSimple.xml_in(response.body, xml_simple_options)
488
- # todo: we may want to consider stripping off a couple of layers when doing this, for instance:
489
- # <DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
490
- # <DescribeDBInstancesResult>
491
- # <DBInstances>
492
- # <DBInstance>....
493
- # Strip it off and only return an array or hash of <DBInstance>'s (hash by identifier).
494
- # would have to be able to make the RequestId available somehow though, perhaps some special array subclass which included that?
495
- unless force_array.is_a? Array
496
- force_array = []
497
- end
498
- parsed = symbolize(parsed, force_array)
499
- # puts 'parsed=' + parsed.inspect
500
- if params[:pull_out_array]
501
- ret = Aws::AwsResponseArray.new(parsed[:response_metadata])
502
- level_hash = parsed
503
- params[:pull_out_array].each do |x|
504
- level_hash = level_hash[x]
494
+ parsed = XmlSimple.xml_in(response.body, xml_simple_options)
495
+ # todo: we may want to consider stripping off a couple of layers when doing this, for instance:
496
+ # <DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
497
+ # <DescribeDBInstancesResult>
498
+ # <DBInstances>
499
+ # <DBInstance>....
500
+ # Strip it off and only return an array or hash of <DBInstance>'s (hash by identifier).
501
+ # would have to be able to make the RequestId available somehow though, perhaps some special array subclass which included that?
502
+ unless force_array.is_a? Array
503
+ force_array = []
505
504
  end
506
- if level_hash.is_a? Hash # When there's only one
507
- ret << level_hash
508
- else # should be array
509
- level_hash.each do |x|
510
- ret << x
505
+ parsed = symbolize(parsed, force_array)
506
+ # puts 'parsed=' + parsed.inspect
507
+ if params[:pull_out_array]
508
+ ret = Aws::AwsResponseArray.new(parsed[:response_metadata])
509
+ level_hash = parsed
510
+ params[:pull_out_array].each do |x|
511
+ level_hash = level_hash[x]
511
512
  end
513
+ if level_hash.is_a? Hash # When there's only one
514
+ ret << level_hash
515
+ else # should be array
516
+ level_hash.each do |x|
517
+ ret << x
518
+ end
519
+ end
520
+ elsif params[:pull_out_single]
521
+ # returns a single object
522
+ ret = AwsResponseObjectHash.new(parsed[:response_metadata])
523
+ level_hash = parsed
524
+ params[:pull_out_single].each do |x|
525
+ level_hash = level_hash[x]
526
+ end
527
+ ret.merge!(level_hash)
528
+ else
529
+ ret = parsed
512
530
  end
513
- elsif params[:pull_out_single]
514
- # returns a single object
515
- ret = AwsResponseObjectHash.new(parsed[:response_metadata])
516
- level_hash = parsed
517
- params[:pull_out_single].each do |x|
518
- level_hash = level_hash[x]
519
- end
520
- ret.merge!(level_hash)
521
- else
522
- ret = parsed
523
- end
524
- return ret
531
+ return ret
525
532
 
526
- else
527
- @error_handler = AWSErrorHandler.new(self, nil, :errors_list => self.class.amazon_problems) unless @error_handler
528
- check_result = @error_handler.check(request)
529
- if check_result
530
- @error_handler = nil
531
- return check_result
533
+ else
534
+ @error_handler = AWSErrorHandler.new(self, nil, :errors_list => self.class.amazon_problems) unless @error_handler
535
+ check_result = @error_handler.check(request)
536
+ if check_result
537
+ @error_handler = nil
538
+ return check_result
539
+ end
540
+ request_text_data = "#{request[:server]}:#{request[:port]}#{request[:request].path}"
541
+ raise AwsError2.new(@last_response.code, @last_request_id, request_text_data, @last_response.body)
532
542
  end
533
- request_text_data = "#{request[:server]}:#{request[:port]}#{request[:request].path}"
534
- raise AwsError2.new(@last_response.code, @last_request_id, request_text_data, @last_response.body)
543
+ ensure
544
+ @connection.finish if @connection && lib_params[:connection_mode] == :per_request
535
545
  end
536
546
 
537
547
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 2
7
7
  - 3
8
- - 4
9
- version: 2.3.4
8
+ - 5
9
+ version: 2.3.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Travis Reeder