amazon-pricing 0.1.76 → 0.1.78

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d472ba3a48cd3e5079c816df71dbe2249607e02a
4
- data.tar.gz: 53d480512cdc7347d27ed0e5bc07b0791b8a91db
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NmM4Y2U2ZDE4NjQ3MjU5Y2NiYmEyMzdiNWNkZjg0Mjg5MjczMGVlNA==
5
+ data.tar.gz: !binary |-
6
+ YzY5ZmU2YjZjYzU4Nzc1NTVhNDY5MWE2ZjVkYjA5YTEzNTg5NDljYw==
5
7
  SHA512:
6
- metadata.gz: f37dfa9dc471b49204323ea8d631ab5ef1b5364e6fb692223ef56594afe5d43386b49cae7bcd43ba34274308ed56e259cf8ef4122d5b67d7c57d3305da008d92
7
- data.tar.gz: a09e9a05ca0f7a82f4a5e665bc8f77b946226890d073e60c88ab9feff1bb491f9dc808779546aefedc9b5cc1f99b3c3c2721403cbd522de905ef6f7a72adbe1d
8
+ metadata.gz: !binary |-
9
+ OWYwYWZhZDUzZWZjMGI1ZTE5MGRlNWZhYWFjODY1OGI0ZDBiMWFjZTZiOGE4
10
+ NmQyYjNhOTA1ZmExODkxOTZhNjlhZWFhZWRiMjU1N2UzOTFhMWY2ZWFjMWI0
11
+ ZDRmODYzZDRjMWQxZTRmYjViOGI0Yjk4NjhjN2U1NDM0OTAyNjY=
12
+ data.tar.gz: !binary |-
13
+ MDhmNTRlZjkwZWNhMWIxMzNiNTAzZDRiMGY0MmNkYTEyM2NhYzM5NTkzMTRi
14
+ MTUzZjZlZWI5ZGQ1MWI1YjAxOTk4OWMzMDIzMWE2NWE1N2ZjMzc1ZGM4ZTI4
15
+ MDg0NGUwYWFkNGE0NTY0MDQwMjJiOTE0ZGI4YTUyNjRkYjgwYzk=
@@ -1,20 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- amazon-pricing (0.1.76)
4
+ amazon-pricing (0.1.78)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- coderay (1.1.0)
9
+ coderay (1.1.1)
10
10
  diff-lcs (1.1.3)
11
11
  method_source (0.8.2)
12
- power_assert (0.2.3)
13
- pry (0.10.1)
14
- coderay (~> 1.1.0)
15
- method_source (~> 0.8.1)
16
- slop (~> 3.4)
17
- rake (10.4.2)
12
+ power_assert (0.3.0)
13
+ rake (11.1.2)
18
14
  rspec (2.11.0)
19
15
  rspec-core (~> 2.11.0)
20
16
  rspec-expectations (~> 2.11.0)
@@ -24,7 +20,7 @@ GEM
24
20
  diff-lcs (~> 1.1.3)
25
21
  rspec-mocks (2.11.3)
26
22
  slop (3.6.0)
27
- test-unit (3.0.9)
23
+ test-unit (3.1.9)
28
24
  power_assert
29
25
 
30
26
  PLATFORMS
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Amazon Web Services Pricing Ruby Gem
2
2
  ====================================
3
3
 
4
- [![](https://api.tddium.com:443/cloudhealthtech/amazon-pricing/badges/48071.png?badge_token=26071a8988b20f68cb9723defd7012fc33a180bc)](https://api.tddium.com:443/cloudhealthtech/amazon-pricing/suites/48071)
4
+ [![Test Report](https://ci.solanolabs.com/cloudhealthtech/amazon-pricing/badges/branches/master)](https://ci.solanolabs.com/cloudhealthtech/amazon-pricing/suites/48198)
5
5
  [![Gem Version](https://badge.fury.io/rb/amazon-pricing.svg)](http://badge.fury.io/rb/amazon-pricing)
6
6
  [![Code Climate](https://codeclimate.com/github/CloudHealth/amazon-pricing/badges/gpa.svg)](https://codeclimate.com/github/CloudHealth/amazon-pricing)
7
7
  [![Coverage Status](https://coveralls.io/repos/CloudHealth/amazon-pricing/badge.svg?branch=master)](https://coveralls.io/r/CloudHealth/amazon-pricing?branch=master)
@@ -42,9 +42,9 @@ module AwsPricing
42
42
  end
43
43
  reg['instanceTypes'].each do |type|
44
44
  api_name = type["type"]
45
- instance_type = region.get_instance_type(api_name)
45
+ instance_type = ensure_existence_of_instance_type(region, region_name, api_name, operating_system, type)
46
46
  if instance_type.nil?
47
- $stderr.puts "[fetch_ec2_instance_pricing_ri_v2] WARNING: new reserved instances not found for #{api_name} in #{region_name}"
47
+ $stderr.puts "[fetch_ec2_instance_pricing_ri_v2] WARNING: new reserved instances not found for #{api_name} in #{region_name} using #{url}"
48
48
  next
49
49
  end
50
50
 
@@ -69,9 +69,65 @@ module AwsPricing
69
69
  instance_type.update_pricing_new(operating_system, reservation_type, price, duration, false) unless reservation_type == :allupfront || price == "N/A"
70
70
  end
71
71
  end
72
+ end
73
+ end
74
+ end
72
75
 
76
+ # let's make sure instance_type for this region has been setup correctly
77
+ def ensure_existence_of_instance_type(region, region_name, api_name, operating_system, type_json)
78
+ # input: region
79
+ # region_name
80
+ # api_name
81
+ # operating_system
82
+ # json: ri_v2 which describes instance_type (under region)
83
+ instance_type = find_or_create_instance_type(region, api_name, operating_system)
84
+ if not instance_type.nil?
85
+ set_od_price_if_missing(region, region_name, api_name, operating_system, instance_type, type_json)
86
+ end
87
+ instance_type
88
+ end
89
+
90
+ # see if instance_type is missing; normally fetch_ec2_instance_pricing() adds instance_type and od-pricing;
91
+ # but if there's AWS inconsistency, make sure we add instance_type now.
92
+ def find_or_create_instance_type(region, api_name, operating_system)
93
+ if not region.instance_type_available?(api_name, :ondemand, operating_system)
94
+ api_name, name = Ec2InstanceType.get_name("", #unused
95
+ api_name,
96
+ false) #!:ondemand
97
+ instance_type = region.add_or_update_ec2_instance_type(api_name, name)
98
+ elsif
99
+ instance_type = region.get_ec2_instance_type(api_name)
100
+ end
101
+ instance_type
102
+ end
103
+
104
+ # OnDemand pricing might be missing, and it's a prerequisite for it to be there for our model.
105
+ # one reason it's missing, is AWS added a new instance type, and we only find it now in ri
106
+ def set_od_price_if_missing(region, region_name, api_name, operating_system, instance_type, type_json)
107
+ type_json["terms"].each do |term|
108
+ # handle case of ondemand pricing missing; turns out od-pricing is also in ri-pricing
109
+ # (assumes od pricing has been set, iff both api_name+os are available)
110
+ if not region.instance_type_available?(api_name, :ondemand, operating_system)
111
+ # nb: we actually don't each-iterate below, and ignore extraneous iterations
112
+ term["onDemandHourly"].each do |od_option|
113
+ # handle case of ondemand pricing missing from non-ri case, let's try populating it here
114
+ # [{purchaseOption:"ODHourly",rate:"perhr",prices:{USD:"13.338"}}],
115
+ if od_option["purchaseOption"] != "ODHourly" || od_option["rate"] != "perhr"
116
+ $stderr.puts "[set_od_price_if_missing] WARNING unexpected od_option #{od_option}"
117
+ end
118
+ price = od_option["prices"]["USD"]
119
+ instance_type.update_pricing_new(operating_system, :ondemand, price)
120
+ logger.debug "od pricing update #{api_name} price #{price} for #{region_name}/#{operating_system}"
121
+ # prevent iteration, since it doesn't make sense, noting it's (theoretically) possible
122
+ break
123
+ end
73
124
  end
74
125
  end
126
+ # assert if we're still missing :ondemand, we'll eventually fail in our model
127
+ if not region.instance_type_available?(api_name, :ondemand, operating_system)
128
+ raise "new reserved instances missing ondemand for #{api_name} in #{region_name}/#{operating_system}}"
129
+ end
75
130
  end
131
+
76
132
  end
77
133
  end
@@ -98,6 +98,23 @@ module AwsPricing
98
98
  @category_types
99
99
  end
100
100
 
101
+ # aws does not provide any json-sourced network_capacity, so for now we provide this hardcoded lookup
102
+ # see https://aws.amazon.com/ec2/instance-types/, under 'Instance Types Matrix', under 'Networking Performance'
103
+ def self.get_network_capacity(api_name)
104
+ throughput = @Network_Performance[api_name]
105
+ if not throughput
106
+ logger.warn "Unknown network throughput for instance type #{api_name}"
107
+ end
108
+ throughput
109
+ end
110
+ def self.get_network_mbps(throughput)
111
+ network_mbps = @Network_Throughput_MBits_Per_Second[throughput]
112
+ if not network_mbps
113
+ logger.warn "Unknown network throughput for #{throughput}"
114
+ end
115
+ network_mbps
116
+ end
117
+
101
118
  protected
102
119
  # Returns [api_name, name]
103
120
  def self.get_name(instance_type, api_name, is_reserved = false)
@@ -114,5 +131,130 @@ module AwsPricing
114
131
  [api_name, name]
115
132
  end
116
133
 
134
+ # throughput values for performance ratings
135
+ # Amazon informally tells customers that they translate as follows:
136
+ # Low = 100 Mbps
137
+ # Medium = 500 Mbps
138
+ # High = 1 Gbps
139
+ # 10Gig = 10 Gbps (obviously)
140
+ @Network_Throughput_MBits_Per_Second = {
141
+ :very_low => 50,
142
+ :low => 100,
143
+ :low_to_moderate => 250,
144
+ :moderate => 500,
145
+ :high => 1000,
146
+ :ten_gigabit => 10000
147
+ }
148
+
149
+ @Network_Performance = {
150
+ 'c1.medium' => :moderate,
151
+ 'c1.xlarge' => :high,
152
+ 'c3.2xlarge' => :high,
153
+ 'c3.4xlarge' => :high,
154
+ 'c3.8xlarge' => :ten_gigabit,
155
+ 'c3.large' => :moderate,
156
+ 'c3.xlarge' => :moderate,
157
+ 'c4.2xlarge' => :high,
158
+ 'c4.4xlarge' => :high,
159
+ 'c4.8xlarge' => :ten_gigabit,
160
+ 'c4.large' => :moderate,
161
+ 'c4.xlarge' => :high,
162
+ 'cache.c1.xlarge' => :high,
163
+ 'cache.m1.large' => :moderate,
164
+ 'cache.m1.medium' => :moderate,
165
+ 'cache.m1.small' => :low,
166
+ 'cache.m1.xlarge' => :high,
167
+ 'cache.m2.2xlarge' => :moderate,
168
+ 'cache.m2.4xlarge' => :high,
169
+ 'cache.m2.xlarge' => :moderate,
170
+ 'cache.m3.2xlarge' => :high,
171
+ 'cache.m3.large' => :moderate,
172
+ 'cache.m3.medium' => :moderate,
173
+ 'cache.m3.xlarge' => :high,
174
+ 'cache.r3.2xlarge' => :high,
175
+ 'cache.r3.4xlarge' => :high,
176
+ 'cache.r3.8xlarge' => :ten_gigabit,
177
+ 'cache.r3.large' => :moderate,
178
+ 'cache.r3.xlarge' => :moderate,
179
+ 'cache.x1.32xlarge' => :ten_gigabit,
180
+ 'cache.t1.micro' => :very_low,
181
+ 'cache.t2.medium' => :low_to_moderate,
182
+ 'cache.t2.micro' => :low_to_moderate,
183
+ 'cache.t2.small' => :low_to_moderate,
184
+ 'cc1.4xlarge' => :ten_gigabit,
185
+ 'cc2.8xlarge' => :ten_gigabit,
186
+ 'cg1.4xlarge' => :ten_gigabit,
187
+ 'cr1.8xlarge' => :ten_gigabit,
188
+ 'd2.2xlarge' => :high,
189
+ 'd2.4xlarge' => :high,
190
+ 'd2.8xlarge' => :ten_gigabit,
191
+ 'd2.xlarge' => :moderate,
192
+ 'db.cr1.8xlarge' => :ten_gigabit,
193
+ 'db.m1.large' => :moderate,
194
+ 'db.m1.medium' => :moderate,
195
+ 'db.m1.small' => :low,
196
+ 'db.m1.xlarge' => :high,
197
+ 'db.m2.2xlarge' => :moderate,
198
+ 'db.m2.4xlarge' => :high,
199
+ 'db.m2.xlarge' => :moderate,
200
+ 'db.m3.2xlarge' => :high,
201
+ 'db.m3.large' => :moderate,
202
+ 'db.m3.medium' => :moderate,
203
+ 'db.m3.xlarge' => :high,
204
+ 'db.m4.10xlarge' => :ten_gigabit,
205
+ 'db.m4.2xlarge' => :high,
206
+ 'db.m4.4xlarge' => :high,
207
+ 'db.m4.large' => :moderate,
208
+ 'db.m4.xlarge' => :high,
209
+ 'db.r3.2xlarge' => :high,
210
+ 'db.r3.4xlarge' => :high,
211
+ 'db.r3.8xlarge' => :ten_gigabit,
212
+ 'db.r3.large' => :moderate,
213
+ 'db.r3.xlarge' => :moderate,
214
+ 'db.t1.micro' => :very_low,
215
+ 'db.t2.large' => :low_to_moderate,
216
+ 'db.t2.medium' => :low_to_moderate,
217
+ 'db.t2.micro' => :low,
218
+ 'db.t2.small' => :low_to_moderate,
219
+ 'db.x1.32xlarge' => :ten_gigabit,
220
+ 'g2.2xlarge' => :high,
221
+ 'g2.8xlarge' => :ten_gigabit,
222
+ 'hi1.4xlarge' => :ten_gigabit,
223
+ 'hs1.8xlarge' => :ten_gigabit,
224
+ 'i2.2xlarge' => :high,
225
+ 'i2.4xlarge' => :high,
226
+ 'i2.8xlarge' => :ten_gigabit,
227
+ 'i2.xlarge' => :moderate,
228
+ 'm1.large' => :moderate,
229
+ 'm1.medium' => :moderate,
230
+ 'm1.small' => :low,
231
+ 'm1.xlarge' => :high,
232
+ 'm2.2xlarge' => :moderate,
233
+ 'm2.4xlarge' => :high,
234
+ 'm2.xlarge' => :moderate,
235
+ 'm3.2xlarge' => :high,
236
+ 'm3.large' => :moderate,
237
+ 'm3.medium' => :moderate,
238
+ 'm3.xlarge' => :high,
239
+ 'm4.10xlarge' => :ten_gigabit,
240
+ 'm4.2xlarge' => :high,
241
+ 'm4.4xlarge' => :high,
242
+ 'm4.large' => :moderate,
243
+ 'm4.xlarge' => :high,
244
+ 'r3.2xlarge' => :high,
245
+ 'r3.4xlarge' => :high,
246
+ 'r3.8xlarge' => :ten_gigabit,
247
+ 'r3.large' => :moderate,
248
+ 'r3.xlarge' => :moderate,
249
+ 't1.micro' => :very_low,
250
+ 't2.large' => :low_to_moderate,
251
+ 't2.medium' => :low_to_moderate,
252
+ 't2.micro' => :low_to_moderate,
253
+ 't2.nano' => :low,
254
+ 't2.small' => :low_to_moderate,
255
+ 'x1.32xlarge' => :ten_gigabit,
256
+ }
257
+
117
258
  end
259
+
118
260
  end
@@ -181,6 +181,7 @@ module AwsPricing
181
181
  'r3.large' => 'Memory Optimized Large', 'r3.xlarge' => 'Memory Optimized Extra Large', 'r3.2xlarge' => 'Memory Optimized Double Extra Large', 'r3.4xlarge' => 'Memory Optimized Quadruple Extra Large', 'r3.8xlarge' => 'Memory Optimized Eight Extra Large',
182
182
  't2.nano' => 'Burstable Performance Instance Nano', 't2.micro' => 'Burstable Performance Instance Micro', 't2.small' => 'Burstable Performance Instance Small', 't2.medium' => 'Burstable Performance Instance Medium', 't2.large' => 'Burstable Performance Instance Large',
183
183
  'c4.large' => 'Compute Optimized Large', 'c4.xlarge' => 'Compute Optimized Extra Large', 'c4.2xlarge' => 'Compute Optimized Double Extra Large', 'c4.4xlarge' => 'Compute Optimized Quadruple Extra Large', 'c4.8xlarge' => 'Compute Optimized Eight Extra Large',
184
+ 'x1.32xlarge' => 'Memory Optimized Large-scale Enterprise-class',
184
185
  }
185
186
  @@Disk_Lookup = {
186
187
  'm1.small' => 160, 'm1.medium' => 410, 'm1.large' =>850, 'm1.xlarge' => 1690,
@@ -204,6 +205,7 @@ module AwsPricing
204
205
  'r3.large' => 32, 'r3.xlarge' => 80, 'r3.2xlarge' => 160, 'r3.4xlarge' => 320, 'r3.8xlarge' => 640,
205
206
  't2.nano' => 0, 't2.micro' => 0, 't2.small' => 0, 't2.medium' => 0, 't2.large' => 0,
206
207
  'c4.large' => 0, 'c4.xlarge' => 0, 'c4.2xlarge' => 0, 'c4.4xlarge' => 0, 'c4.8xlarge' => 0,
208
+ 'x1.32xlarge' => 3840,
207
209
  }
208
210
  @@Platform_Lookup = {
209
211
  'm1.small' => 32, 'm1.medium' => 32, 'm1.large' => 64, 'm1.xlarge' => 64,
@@ -227,6 +229,7 @@ module AwsPricing
227
229
  'r3.large' => 64, 'r3.xlarge' => 64, 'r3.2xlarge' => 64, 'r3.4xlarge' => 64, 'r3.8xlarge' => 64,
228
230
  't2.nano' => 64, 't2.micro' => 64, 't2.small' => 64, 't2.medium' => 64, 't2.large' => 64,
229
231
  'c4.large' => 64, 'c4.xlarge' => 64, 'c4.2xlarge' => 64, 'c4.4xlarge' => 64, 'c4.8xlarge' => 64,
232
+ 'x1.32xlarge' => 64,
230
233
  }
231
234
  @@Disk_Type_Lookup = {
232
235
  'm1.small' => :ephemeral, 'm1.medium' => :ephemeral, 'm1.large' => :ephemeral, 'm1.xlarge' => :ephemeral,
@@ -251,6 +254,7 @@ module AwsPricing
251
254
  'r3.large' => :ssd, 'r3.xlarge' => :ssd, 'r3.2xlarge' => :ssd, 'r3.4xlarge' => :ssd, 'r3.8xlarge' => :ssd,
252
255
  't2.nano' => :ebs, 't2.micro' => :ebs, 't2.small' => :ebs, 't2.medium' => :ebs, 't2.large' => :ebs,
253
256
  'c4.large' => :ebs, 'c4.xlarge' => :ebs, 'c4.2xlarge' => :ebs, 'c4.4xlarge' => :ebs, 'c4.8xlarge' => :ebs,
257
+ 'x1.32xlarge' => :ssd,
254
258
  }
255
259
 
256
260
  # NOTE: These are populated by "populate_lookups"
@@ -6,6 +6,8 @@ module AwsPricing
6
6
  super
7
7
  InstanceType.populate_lookups
8
8
  get_ec2_di_od_pricing
9
+ # assumption is above/di_od populates all InstanceType's, but it missing entries e.g. x1.32xlarge;
10
+ # the fix is we now allow fetch_ec2_instance_pricing_ri_v2 to add instance_types
9
11
  get_ec2_reserved_di_pricing
10
12
  end
11
13
 
@@ -29,7 +29,8 @@ module AwsPricing
29
29
  },
30
30
  'MemoryOptimized' => {
31
31
  'CurrentGen' => {
32
- 'R3' => ['r3.large', 'r3.xlarge', 'r3.2xlarge', 'r3.4xlarge', 'r3.8xlarge']
32
+ 'R3' => ['r3.large', 'r3.xlarge', 'r3.2xlarge', 'r3.4xlarge', 'r3.8xlarge'],
33
+ 'X1' => ['x1.32xlarge']
33
34
  },
34
35
  'PreviousGen' => {
35
36
  'M2' => ['m2.xlarge', 'm2.2xlarge', 'm2.4xlarge'],
@@ -171,7 +172,8 @@ module AwsPricing
171
172
  "2xlarge" => 16,
172
173
  "4xlarge" => 32,
173
174
  "8xlarge" => 64,
174
- "10xlarge" => 80
175
+ "10xlarge" => 80,
176
+ "32xlarge" => 256
175
177
  }
176
178
  NF_TO_SIZE_TABLE = SIZE_TO_NF_TABLE.invert
177
179
 
@@ -8,5 +8,5 @@
8
8
  # Home:: http://github.com/CloudHealth/amazon-pricing
9
9
  #++
10
10
  module AwsPricing
11
- VERSION = '0.1.76'
11
+ VERSION = '0.1.78'
12
12
  end
@@ -45,6 +45,14 @@ class TestEc2InstanceTypes < Test::Unit::TestCase
45
45
  assert region.instance_type_available?('m3.large')
46
46
  end
47
47
 
48
+ def test_available_x1
49
+ # Validate instance types in specific regions are available
50
+ region = @@ec2_pricing.get_region('us-east')
51
+ assert !region.instance_type_available?('x1.99xlarge') #bogus x1
52
+ assert region.instance_type_available?('x1.32xlarge') #test valid x1 available
53
+ end
54
+
55
+
48
56
  def test_fetch_all_breakeven_months
49
57
  @@ec2_pricing.regions.each do |region|
50
58
  region.ec2_instance_types.each do |instance|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amazon-pricing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.76
4
+ version: 0.1.78
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Kinsella
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-13 00:00:00.000000000 Z
11
+ date: 2016-06-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Ruby library for retrieving pricing for Amazon Web Services
14
14
  email:
@@ -19,7 +19,7 @@ extra_rdoc_files:
19
19
  - LICENSE
20
20
  - README.md
21
21
  files:
22
- - ".gitignore"
22
+ - .gitignore
23
23
  - CHANGELOG.md
24
24
  - Gemfile
25
25
  - Gemfile.lock
@@ -31,7 +31,6 @@ files:
31
31
  - archive/ec2-2014-05-22.csv
32
32
  - archive/rds-2014-03-18.csv
33
33
  - archive/rds-2014-05-22.csv
34
- - lib/.DS_Store
35
34
  - lib/amazon-pricing.rb
36
35
  - lib/amazon-pricing/aws-price-list.rb
37
36
  - lib/amazon-pricing/common/ec2_common.rb
@@ -65,21 +64,21 @@ licenses:
65
64
  metadata: {}
66
65
  post_install_message:
67
66
  rdoc_options:
68
- - "--title"
67
+ - --title
69
68
  - amazon-pricing documentation
70
- - "--line-numbers"
71
- - "--main"
69
+ - --line-numbers
70
+ - --main
72
71
  - README.md
73
72
  require_paths:
74
73
  - lib
75
74
  required_ruby_version: !ruby/object:Gem::Requirement
76
75
  requirements:
77
- - - ">="
76
+ - - ! '>='
78
77
  - !ruby/object:Gem::Version
79
78
  version: '0'
80
79
  required_rubygems_version: !ruby/object:Gem::Requirement
81
80
  requirements:
82
- - - ">="
81
+ - - ! '>='
83
82
  - !ruby/object:Gem::Version
84
83
  version: '0'
85
84
  requirements: []
@@ -88,4 +87,12 @@ rubygems_version: 2.4.8
88
87
  signing_key:
89
88
  specification_version: 4
90
89
  summary: Amazon Web Services Pricing Ruby gem
91
- test_files: []
90
+ test_files:
91
+ - spec/lib/amazon-pricing/definitions/database-type_spec.rb
92
+ - spec/lib/amazon-pricing/elasticache_pricing_spec.rb
93
+ - spec/lib/amazon-pricing/rds_pricing_spec.rb
94
+ - spec/spec_helper.rb
95
+ - spec/support/.gitignore
96
+ - test/ec2_instance_types_test.rb
97
+ - test/helper.rb
98
+ has_rdoc:
Binary file