aws 2.2.5 → 2.2.6

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.
data/lib/aws.rb CHANGED
@@ -16,6 +16,7 @@ $:.unshift(File.dirname(__FILE__))
16
16
  require 'awsbase/benchmark_fix'
17
17
  require 'awsbase/support'
18
18
  require 'awsbase/right_awsbase'
19
+ require 'awsbase/aws_response_array'
19
20
  require 'ec2/right_ec2'
20
21
  require 'ec2/right_mon_interface'
21
22
  require 's3/right_s3_interface'
@@ -0,0 +1,30 @@
1
+ module Aws
2
+
3
+ # This class is a special array to hold a bit of extra information about a response like:
4
+ # <ResponseMetadata>
5
+ # <RequestId>4f1fae46-bf3d-11de-a88b-7b5b3d23b3a7</RequestId>
6
+ # </ResponseMetadata>
7
+ #
8
+ # Which can be accessed directly from the array using array.response_metadata
9
+ #
10
+ class AwsResponseArray < Array
11
+
12
+ attr_accessor :response_metadata
13
+
14
+ def initialize(response_metadata)
15
+ @response_metadata = response_metadata
16
+ end
17
+
18
+ end
19
+
20
+ # Used when pulling out a single response object
21
+ class AwsResponseObjectHash < Hash
22
+
23
+ attr_accessor :response_metadata
24
+
25
+ def initialize(response_metadata)
26
+ @response_metadata = response_metadata
27
+ end
28
+
29
+ end
30
+ end
@@ -28,6 +28,7 @@ module Aws
28
28
  require 'cgi'
29
29
  require 'uri'
30
30
  require 'xmlsimple'
31
+ require 'active_support'
31
32
 
32
33
  class AwsUtils #:nodoc:
33
34
  @@digest1 = OpenSSL::Digest::Digest.new("sha1")
@@ -321,15 +322,16 @@ module Aws
321
322
  end
322
323
 
323
324
  # This is the direction we should head instead of writing our own parsers for everything, much simpler
325
+ # params:
326
+ # - :group_tags => hash of indirection to eliminate, see: http://xml-simple.rubyforge.org/
327
+ # - :force_array => true for all or an array of tag names to force
328
+ # - :pull_out_array => an array of levels to dig into when generating return value (see rds.rb for example)
324
329
  def request_info_xml_simple(connection_name, lib_params, request, logger, params = {})
325
330
 
326
331
  @connection = get_conn(connection_name, lib_params, logger)
327
332
  @last_request = request[:request]
328
333
  @last_response = nil
329
334
 
330
- response = nil
331
- blockexception = nil
332
-
333
335
  response = @connection.request(request)
334
336
  # benchblock.service.add!{ response = @connection.request(request) }
335
337
  # check response for errors...
@@ -339,7 +341,51 @@ module Aws
339
341
  # benchblock.xml.add! { parser.parse(response) }
340
342
  # return parser.result
341
343
  force_array = params[:force_array] || false
342
- return XmlSimple.xml_in(response.body, {"KeyToSymbol"=>false, 'ForceArray' => force_array})
344
+ # Force_array and group_tags don't work nice together so going to force array manually
345
+ xml_simple_options = {"KeyToSymbol"=>false, 'ForceArray' => false}
346
+ xml_simple_options["GroupTags"] = params[:group_tags] if params[:group_tags]
347
+
348
+ # { 'GroupTags' => { 'searchpath' => 'dir' }
349
+ # 'ForceArray' => %r(_list$)
350
+ parsed = XmlSimple.xml_in(response.body, xml_simple_options)
351
+ # todo: we may want to consider stripping off a couple of layers when doing this, for instance:
352
+ # <DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
353
+ # <DescribeDBInstancesResult>
354
+ # <DBInstances>
355
+ # <DBInstance>....
356
+ # Strip it off and only return an array or hash of <DBInstance>'s (hash by identifier).
357
+ # would have to be able to make the RequestId available somehow though, perhaps some special array subclass which included that?
358
+ unless force_array.is_a? Array
359
+ force_array = []
360
+ end
361
+ parsed = symbolize(parsed, force_array)
362
+ # puts 'parsed=' + parsed.inspect
363
+ if params[:pull_out_array]
364
+ ret = Aws::AwsResponseArray.new(parsed[:response_metadata])
365
+ level_hash = parsed
366
+ params[:pull_out_array].each do |x|
367
+ level_hash = level_hash[x]
368
+ end
369
+ if level_hash.is_a? Hash # When there's only one
370
+ ret << level_hash
371
+ else # should be array
372
+ level_hash.each do |x|
373
+ ret << x
374
+ end
375
+ end
376
+ elsif params[:pull_out_single]
377
+ # returns a single object
378
+ ret = AwsResponseObjectHash.new(parsed[:response_metadata])
379
+ level_hash = parsed
380
+ params[:pull_out_single].each do |x|
381
+ level_hash = level_hash[x]
382
+ end
383
+ ret.merge!(level_hash)
384
+ else
385
+ ret = parsed
386
+ end
387
+ return ret
388
+
343
389
  else
344
390
  @error_handler = AWSErrorHandler.new(self, nil, :errors_list => self.class.amazon_problems) unless @error_handler
345
391
  check_result = @error_handler.check(request)
@@ -353,38 +399,22 @@ module Aws
353
399
 
354
400
  end
355
401
 
356
- # FROM ELB
357
- =begin
358
- def generate_request2(action, params={})
359
- service_hash = {"Action" => action,
360
- "AWSAccessKeyId" => @aws_access_key_id,
361
- "Version" => @@api }
362
- service_hash.update(params)
363
- service_params = signed_service_params(@aws_secret_access_key, service_hash, :get, @params[:server], @params[:service])
364
-
365
- # use POST method if the length of the query string is too large
366
- if service_params.size > 2000
367
- if signature_version == '2'
368
- # resign the request because HTTP verb is included into signature
369
- service_params = signed_service_params(@aws_secret_access_key, service_hash, :post, @params[:server], @params[:service])
402
+ def symbolize(hash, force_array)
403
+ ret = {}
404
+ hash.keys.each do |key|
405
+ val = hash[key]
406
+ if val.is_a? Hash
407
+ val = symbolize(val, force_array)
408
+ if force_array.include? key
409
+ val = [val]
410
+ end
411
+ elsif val.is_a? Array
412
+ val = val.collect { |x| symbolize(x, force_array) }
370
413
  end
371
- request = Net::HTTP::Post.new(service)
372
- request.body = service_params
373
- request['Content-Type'] = 'application/x-www-form-urlencoded'
374
- else
375
- request = Net::HTTP::Get.new("#{@params[:service]}?#{service_params}")
414
+ ret[key.underscore.to_sym] = val
376
415
  end
377
-
378
- #puts "\n\n --------------- QUERY REQUEST TO AWS -------------- \n\n"
379
- #puts "#{@params[:service]}?#{service_params}\n\n"
380
-
381
- # prepare output hash
382
- { :request => request,
383
- :server => @params[:server],
384
- :port => @params[:port],
385
- :protocol => @params[:protocol] }
416
+ ret
386
417
  end
387
- =end
388
418
 
389
419
  # Returns +true+ if the describe_xxx responses are being cached
390
420
  def caching?
@@ -51,6 +51,24 @@ module Aws
51
51
  generate_request2(@aws_access_key_id, @aws_secret_access_key, action, @@api, @params, params)
52
52
  end
53
53
 
54
+ def do_request(action, params, options={})
55
+ link = generate_request(action, params)
56
+ resp = request_info_xml_simple(:rds_connection, @params, link, @logger,
57
+ :group_tags=>{"DBInstances"=>"DBInstance",
58
+ "DBParameterGroups"=>"DBParameterGroup",
59
+ "DBSecurityGroups"=>"DBSecurityGroup",
60
+ "EC2SecurityGroups"=>"EC2SecurityGroup",
61
+ "IPRanges"=>"IPRange"},
62
+ :force_array=>["DBInstances",
63
+ "DBParameterGroups",
64
+ "DBSecurityGroups",
65
+ "EC2SecurityGroups",
66
+ "IPRanges"],
67
+ :pull_out_array=>options[:pull_out_array],
68
+ :pull_out_single=>options[:pull_out_single],
69
+ :wrapper=>options[:wrapper])
70
+ end
71
+
54
72
 
55
73
  #-----------------------------------------------------------------
56
74
  # REQUESTS
@@ -81,8 +99,7 @@ module Aws
81
99
 
82
100
  @logger.info("Creating DB Instance called #{identifier}")
83
101
 
84
- link = generate_request("CreateDBInstance", params)
85
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
102
+ link = do_request("CreateDBInstance", params, :pull_out_single=>[:create_db_instance_result, :db_instance])
86
103
 
87
104
  rescue Exception
88
105
  on_exception
@@ -93,14 +110,16 @@ module Aws
93
110
  # DBInstanceIdentifier
94
111
  # MaxRecords
95
112
  # Marker
113
+ #
114
+ # Returns array of instances as hashes.
115
+ # Response metadata can be retreived by calling array.response_metadata on the returned array.
96
116
  def describe_db_instances(options={})
97
117
  params = {}
98
- params['DBInstanceIdentifier'] = options[:DBInstanceIdentifier] if options[:DBInstanceIdentifier]
99
- params['MaxRecords'] = options[:MaxRecords] if options[:MaxRecords]
100
- params['Marker'] = options[:Marker] if options[:Marker]
118
+ params['DBInstanceIdentifier'] = options[:db_instance_identifier] if options[:db_instance_identifier]
119
+ params['MaxRecords'] = options[:max_records] if options[:max_records]
120
+ params['Marker'] = options[:marker] if options[:marker]
101
121
 
102
- link = generate_request("DescribeDBInstances", params)
103
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
122
+ resp = do_request("DescribeDBInstances", params, :pull_out_array=>[:describe_db_instances_result, :db_instances])
104
123
 
105
124
  rescue Exception
106
125
  on_exception
@@ -120,21 +139,20 @@ module Aws
120
139
  params['SkipFinalSnapshot'] = true
121
140
  end
122
141
 
123
- link = generate_request("DeleteDBInstance", params)
124
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
142
+ link = do_request("DeleteDBInstance", params, :pull_out_single=>[:delete_db_instance_result, :db_instance])
125
143
 
126
144
  rescue Exception
127
145
  on_exception
128
146
  end
129
147
 
130
148
 
131
- def create_db_security_groups(group_name, description, options={})
149
+ def create_db_security_group(group_name, description, options={})
132
150
  params = {}
133
151
  params['DBSecurityGroupName'] = group_name
134
152
  params['DBSecurityGroupDescription'] = description
135
- params['Engine'] = options[:engine] || "MySQL5.1"
136
- link = generate_request("CreateDBSecurityGroup", params)
137
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
153
+
154
+ link = do_request("CreateDBSecurityGroup", params, :pull_out_single => [:create_db_security_group_result, :db_security_group])
155
+
138
156
  rescue Exception
139
157
  on_exception
140
158
  end
@@ -143,8 +161,9 @@ module Aws
143
161
  def delete_db_security_group(group_name, options={})
144
162
  params = {}
145
163
  params['DBSecurityGroupName'] = group_name
146
- link = generate_request("DeleteDBSecurityGroup", params)
147
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
164
+
165
+ link = do_request("DeleteDBSecurityGroup", params)
166
+
148
167
  rescue Exception
149
168
  on_exception
150
169
  end
@@ -155,10 +174,9 @@ module Aws
155
174
  params['DBSecurityGroupName'] = options[:DBSecurityGroupName] if options[:DBSecurityGroupName]
156
175
  params['MaxRecords'] = options[:MaxRecords] if options[:MaxRecords]
157
176
 
158
- force_array = options[:force_array].nil? ? false : options[:force_array]
177
+ link = do_request("DescribeDBSecurityGroups", params, :pull_out_array=>[:describe_db_security_groups_result, :db_security_groups], :wrapper=>:db_security_group)
178
+
159
179
 
160
- link = generate_request("DescribeDBSecurityGroups", params)
161
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger, :force_array => force_array)
162
180
  rescue Exception
163
181
  on_exception
164
182
  end
@@ -169,8 +187,7 @@ module Aws
169
187
  params['DBSecurityGroupName'] = group_name
170
188
  params['EC2SecurityGroupOwnerId'] = ec2_group_owner_id
171
189
  params['EC2SecurityGroupName'] = ec2_group_name
172
- link = generate_request("AuthorizeDBSecurityGroupIngress", params)
173
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
190
+ link = do_request("AuthorizeDBSecurityGroupIngress", params)
174
191
  rescue Exception
175
192
  on_exception
176
193
  end
@@ -180,8 +197,7 @@ module Aws
180
197
  params = {}
181
198
  params['DBSecurityGroupName'] = group_name
182
199
  params['CIDRIP'] = ip_range
183
- link = generate_request("AuthorizeDBSecurityGroupIngress", params)
184
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
200
+ link = do_request("AuthorizeDBSecurityGroupIngress", params)
185
201
  rescue Exception
186
202
  on_exception
187
203
  end
@@ -191,13 +207,13 @@ module Aws
191
207
  params = {}
192
208
  params['DBSecurityGroupName'] = group_name
193
209
  params['CIDRIP'] = ip_range
194
- link = generate_request("RevokeDBSecurityGroupIngress", params)
195
- resp = request_info_xml_simple(:rds_connection, @params, link, @logger)
210
+ link = do_request("RevokeDBSecurityGroupIngress", params)
196
211
  rescue Exception
197
212
  on_exception
198
213
  end
199
214
 
200
215
 
216
+
201
217
  end
202
218
 
203
219
  end
@@ -15,7 +15,7 @@ class TestRds < Test::Unit::TestCase
15
15
  @rds = Aws::Rds.new(TestCredentials.aws_access_key_id,
16
16
  TestCredentials.aws_secret_access_key)
17
17
 
18
- @identifier = 'test-db-instance1'
18
+ @identifier = 'test-db-instance1b'
19
19
  # deleting this one....
20
20
  #@identifier2 = 'my-db-instance2'
21
21
  end
@@ -23,61 +23,69 @@ class TestRds < Test::Unit::TestCase
23
23
 
24
24
  def test_01_create_db_instance
25
25
  begin
26
- db_instance3 = @rds.create_db_instance('right_ec2_awesome_test_key', "db.m1.small", 5, "master", "masterpass")
26
+ db_instance3 = @rds.create_db_instance('bad_test_key', "db.m1.small", 5, "master", "masterpass")
27
27
  rescue => ex
28
28
  #puts "msg=" + ex.message
29
29
  #puts "response=" + ex.response
30
30
  assert ex.message[0, "InvalidParameterValue".size] == "InvalidParameterValue"
31
31
  end
32
32
 
33
- #db_instance = @rds.create_db_instance(@identifier, "db.m1.small", 5, "master", "masterpass")
33
+ db_instance = @rds.create_db_instance(@identifier, "db.m1.small", 5, "master", "masterpass")
34
+ assert db_instance[:db_instance_status] == "creating"
34
35
 
36
+ start = Time.now
35
37
  tries=0
36
- while tries < 100
37
- instances_result = @rds.describe_db_instances
38
- instances = instances_result["DescribeDBInstancesResult"]["DBInstances"]["DBInstance"]
39
-
40
- #puts "INSTANCES -----> " + instances.inspect
41
-
42
- instances.each do |i|
43
- next unless i["DBInstanceIdentifier"] == @identifier
44
- break if i["DBInstanceStatus"] == "available"
45
- puts "Database not ready yet.... attempt #{tries.to_s} of 100, db state --> #{i["DBInstanceStatus"].to_s}"
46
- tries += 1
47
- sleep 5
38
+ catch (:done) do
39
+ while tries < 100
40
+ instances = @rds.describe_db_instances
41
+
42
+ #puts "INSTANCES -----> " + instances.inspect
43
+
44
+ instances.each do |i|
45
+ db_status = i[:db_instance_status]
46
+ puts 'i=' + db_status.to_s
47
+ next unless i[:db_instance_identifier] == @identifier
48
+ throw :done if db_status == "available"
49
+ puts "Database not ready yet.... attempt #{tries.to_s} of 100, db state --> #{i[:db_instance_status].to_s}"
50
+ tries += 1
51
+ sleep 5
52
+ end
48
53
  end
49
-
50
-
51
54
  end
55
+ puts "Duration to start db instance: #{Time.now-start}"
52
56
  end
53
57
 
54
58
 
55
59
  def test_02_describe_db_instances
56
- instances_result = @rds.describe_db_instances
57
- #puts "instances_result=" + instances_result.inspect
58
- instances = instances_result["DescribeDBInstancesResult"]["DBInstances"]["DBInstance"]
59
- #puts "\n\ninstances count = " + instances.count.to_s + " \n\n "
60
-
60
+ instances = @rds.describe_db_instances
61
+ # puts "instances_result=" + instances_result.inspect
62
+ # instances = instances_result["DescribeDBInstancesResult"]["DBInstances"]["DBInstance"]
63
+ puts "instances count = " + instances.count.to_s
64
+ puts 'instances=' + instances.inspect
61
65
  assert instances.size > 0
66
+ i_describe = nil
67
+ instances.each do |x|
68
+ i_describe = x if x[:db_instance_identifier] == @identifier
69
+ end
70
+ assert i_describe
71
+
72
+ puts 'response_metadata=' + instances.response_metadata.inspect
73
+ assert instances.response_metadata
74
+ assert instances.response_metadata[:request_id]
62
75
  end
63
76
 
64
77
 
65
78
  def test_03_describe_security_groups
66
- security_result = @rds.describe_db_security_groups()
67
- #puts "security_result=" + security_result.inspect
68
- security_groups=security_result["DescribeDBSecurityGroupsResult"]["DBSecurityGroups"]["DBSecurityGroup"]
79
+ security_groups = @rds.describe_db_security_groups()
80
+ puts "security_groups=" + security_groups.inspect
69
81
  default_present = false
70
- if security_groups.is_a?(Array)
71
- security_groups.each do |security_group|
72
- security_group.inspect
73
- if security_group["DBSecurityGroupName"]=="default"
74
- default_present=true
75
- end
76
- end
77
- else
78
- if security_groups["DBSecurityGroupName"]=="default"
82
+ assert security_groups.is_a?(Array)
83
+ security_groups.each do |security_group|
84
+ security_group.inspect
85
+ if security_group[:db_security_group_name] == "default"
79
86
  default_present=true
80
87
  end
88
+ assert security_group[:ec2_security_groups].is_a? Array
81
89
  end
82
90
  assert default_present
83
91
  end
@@ -85,11 +93,13 @@ class TestRds < Test::Unit::TestCase
85
93
 
86
94
  def test_04_authorize_security_groups_ingress
87
95
  # Create
88
- @security_info = @rds.describe_db_security_groups({:force_array => ["DBSecurityGroup", "IPRange"]})["DescribeDBSecurityGroupsResult"]["DBSecurityGroups"]["DBSecurityGroup"]
96
+ # security_groups = @rds.describe_db_security_groups
97
+ # @security_info = security_groups[0]
89
98
  @rds.authorize_db_security_group_ingress_range("default", "122.122.122.122/12")
90
99
 
91
100
  # Check
92
- @security_info = @rds.describe_db_security_groups({:force_array => ["DBSecurityGroup", "IPRange"]})["DescribeDBSecurityGroupsResult"]["DBSecurityGroups"]["DBSecurityGroup"]
101
+ security_groups = @rds.describe_db_security_groups
102
+ @security_info = security_groups[0]
93
103
 
94
104
  ip_found = @security_info.inspect.include? "122.122.122.122/12"
95
105
  assert ip_found
@@ -97,31 +107,34 @@ class TestRds < Test::Unit::TestCase
97
107
 
98
108
 
99
109
  def test_05_delete_db_instance
100
- @rds.delete_db_instance(@identifier)
110
+ @rds.delete_db_instance(@identifier) # todo: can't delete unless it's in "available" state
101
111
  #@rds.delete_db_instance(@identifier2)
102
112
  sleep 3
103
113
 
104
- instances_result = @rds.describe_db_instances
114
+ instances = @rds.describe_db_instances(:db_instance_identifier=>@identifier)
105
115
  #puts "instances_result=" + instances_result.inspect
106
116
 
107
- instances_result["DescribeDBInstancesResult"]["DBInstances"]["DBInstance"].each do |i|
108
- puts "Trying to delete and getting i[DBInstanceStatus] -----------> " + i["DBInstanceStatus"]
109
- assert i["DBInstanceStatus"] == "deleting"
117
+ instances.each do |i|
118
+ next unless i[:db_instance_identifier] == @identifier
119
+ db_status = i[:db_instance_status]
120
+ puts "Trying to delete and getting i[DBInstanceStatus] -----------> " + db_status
121
+ @rds.delete_db_instance(i[:db_instance_identifier]) if db_status == "available"
122
+ assert db_status == "deleting"
110
123
  end
124
+ sleep 2
111
125
 
112
- assert instances_result["DescribeDBInstancesResult"]["DBInstances"]["DBInstance"].size < 2
113
126
  end
114
127
 
115
128
 
116
129
  def test_06_create_security_groups
117
130
  group_present=false
118
131
 
119
- @rds.create_db_security_groups("new_sample_group", "new_sample_group_description")
132
+ @rds.create_db_security_group("new_sample_group", "new_sample_group_description")
120
133
 
121
- @security_info = @rds.describe_db_security_groups({:force_array => ["DBSecurityGroup", "IPRange"]})["DescribeDBSecurityGroupsResult"]["DBSecurityGroups"]["DBSecurityGroup"]
134
+ security_groups = @rds.describe_db_security_groups
122
135
 
123
- @security_info.each do |security_group|
124
- if (security_group["DBSecurityGroupName"]=="new_sample_group")&&(security_group["DBSecurityGroupDescription"]=="new_sample_group_description")
136
+ security_groups.each do |security_group|
137
+ if (security_group[:db_security_group_name]=="new_sample_group")&&(security_group[:db_security_group_description]=="new_sample_group_description")
125
138
  group_present = true
126
139
  end
127
140
  end
@@ -131,23 +144,22 @@ class TestRds < Test::Unit::TestCase
131
144
 
132
145
 
133
146
  def test_07_revoking_security_groups_ingress
134
- sleep 15
147
+ # sleep 15
135
148
  @rds.revoke_db_security_group_ingress("default", "122.122.122.122/12")
136
149
  sleep 2
137
- @security_info = @rds.describe_db_security_groups({:force_array => ["DBSecurityGroup", "IPRange"]})["DescribeDBSecurityGroupsResult"]["DBSecurityGroups"]["DBSecurityGroup"]
138
- revoking = @security_info[0].inspect.include? "revoking"
150
+ security_groups = @rds.describe_db_security_groups
151
+ revoking = security_groups[0].inspect.include? "revoking"
139
152
  assert revoking
140
153
  end
141
154
 
142
155
 
143
-
144
156
  def test_08_delete_security_group
145
157
  group_present=false
146
158
  @rds.delete_db_security_group("new_sample_group")
147
159
  sleep 2
148
- @security_info = @rds.describe_db_security_groups({:force_array => ["DBSecurityGroup", "IPRange"]})["DescribeDBSecurityGroupsResult"]["DBSecurityGroups"]["DBSecurityGroup"]
149
- @security_info.each do |security_group|
150
- if (security_group["DBSecurityGroupName"]=="new_sample_group")
160
+ security_groups = @rds.describe_db_security_groups
161
+ security_groups.each do |security_group|
162
+ if (security_group[:db_security_group_name]=="new_sample_group")
151
163
  group_present=true
152
164
  end
153
165
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.5
4
+ version: 2.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Reeder
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2010-02-13 00:00:00 -08:00
14
+ date: 2010-02-15 00:00:00 -08:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -55,6 +55,7 @@ extra_rdoc_files:
55
55
  files:
56
56
  - lib/acf/right_acf_interface.rb
57
57
  - lib/aws.rb
58
+ - lib/awsbase/aws_response_array.rb
58
59
  - lib/awsbase/benchmark_fix.rb
59
60
  - lib/awsbase/right_awsbase.rb
60
61
  - lib/awsbase/support.rb