amazon-pricing 0.1.65 → 0.1.66
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.
- checksums.yaml +8 -8
- data/Gemfile.lock +1 -1
- data/Rakefile +36 -0
- data/lib/amazon-pricing.rb +1 -0
- data/lib/amazon-pricing/aws-price-list.rb +5 -4
- data/lib/amazon-pricing/definitions/cache-type.rb +16 -0
- data/lib/amazon-pricing/definitions/elasticache_node_type.rb +74 -0
- data/lib/amazon-pricing/definitions/instance-type.rb +10 -1
- data/lib/amazon-pricing/definitions/region.rb +22 -4
- data/lib/amazon-pricing/elasticache-price-list.rb +89 -0
- data/lib/amazon-pricing/version.rb +1 -1
- data/spec/lib/amazon-pricing/elasticache_pricing_spec.rb +48 -0
- metadata +15 -5
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDFiYTIxOTk0ZDIyMTJiNDhlZGIzYTMyY2NhYmZkMTIzYTQyNTk4Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NjVhMTVjNDEyNDRlZTM0ZjhhY2Q5YWZjNzNmMTJmOTkxODE3NTI3MA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTJkMzAyMWJiNDI0ZTUzMWI2N2JiMzRhNDEwYzc4OGNkMGU4MDExYTg3MGVi
|
10
|
+
ZDk2MjJhODFkOWEwN2FkZWRlNzM3N2NhNmEyZTgxODQ0MDdlYjNiZTJmOTFm
|
11
|
+
Mzg4MGYwNTE1ZjE3ZGYyOWYyMTJmY2FiN2JiZDQ2YjI3NWNmYzQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDNkZjI5MGU5Mjk4MDYzMTVhMjIwZTk1NTQ1NTRjNzQwZTM2ZTNhMjQxMjQ3
|
14
|
+
NDhkOGYxMzFkNWE5MGExNTNmZGViYWYzOTIyYTg3ODhjMzMwYjQyMzc0NjA2
|
15
|
+
OTM4ODNjZWIyZDVlOTE0NGFiYmI5MzE3NGY1NWYzMGI2ZDEzOTA=
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -41,6 +41,13 @@ task :print_rds_price_list do
|
|
41
41
|
print_rds_table(pricing)
|
42
42
|
end
|
43
43
|
|
44
|
+
desc "Prints current ElastiCache pricing to CSV format"
|
45
|
+
task :print_elasticache_price_list do
|
46
|
+
require 'amazon-pricing'
|
47
|
+
pricing = AwsPricing::ElastiCachePriceList.new
|
48
|
+
print_elasticache_table(pricing)
|
49
|
+
end
|
50
|
+
|
44
51
|
desc "Prints current GovCloud EC2 pricing in CSV format"
|
45
52
|
task :print_govcloud_ec2_price_list do
|
46
53
|
require 'amazon-pricing'
|
@@ -88,6 +95,35 @@ def print_ec2_table(pricing, target_region = nil)
|
|
88
95
|
end
|
89
96
|
end
|
90
97
|
|
98
|
+
def print_elasticache_table(pricing, target_region = nil)
|
99
|
+
line = "Region,Node Type,API Name,Memmory (MB),Virtual Cores,Disk Type,OD PPH,"
|
100
|
+
[:year1, :year3].each do |term|
|
101
|
+
[:partialupfront].each do |res_type|
|
102
|
+
[:memcached].each do |cache|
|
103
|
+
line += "#{term} #{res_type} #{cache} Prepay,#{term} #{res_type} #{cache} PPH,"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
puts line.chop
|
108
|
+
pricing.regions.each do |region|
|
109
|
+
next if region.name != target_orgion if target_region
|
110
|
+
region.elasticache_node_types.each do |t|
|
111
|
+
line = "#{region.name},#{t.name},#{t.api_name},#{t.memory_in_mb},#{t.virtual_cores},"
|
112
|
+
[:memcached].each do |cache|
|
113
|
+
line += "#{t.price_per_hour(cache, :ondemand)},"
|
114
|
+
end
|
115
|
+
[:year1, :year3].each do |term|
|
116
|
+
[:partialupfront].each do |res_type|
|
117
|
+
[:memcached].each do |cache|
|
118
|
+
line += "#{t.prepay(cache, res_type, term)},#{t.price_per_hour(cache, res_type, term)},"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
puts line.chop
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
91
127
|
def print_rds_table(pricing, target_region = nil)
|
92
128
|
line = "Region,Instance Type,API Name,Memory (MB),Disk (GB),Compute Units,Virtual Cores,Disk Type,"
|
93
129
|
|
data/lib/amazon-pricing.rb
CHANGED
@@ -97,9 +97,10 @@ module AwsPricing
|
|
97
97
|
# region
|
98
98
|
#end
|
99
99
|
|
100
|
-
EC2_BASE_URL
|
101
|
-
EBS_BASE_URL
|
102
|
-
RDS_BASE_URL
|
100
|
+
EC2_BASE_URL = "http://a0.awsstatic.com/pricing/1/ec2/"
|
101
|
+
EBS_BASE_URL = "http://a0.awsstatic.com/pricing/1/ebs/"
|
102
|
+
RDS_BASE_URL = "http://a0.awsstatic.com/pricing/1/rds/"
|
103
|
+
ELASTICACHE_BASE_URL = "http://a0.awsstatic.com/pricing/1/elasticache/"
|
103
104
|
|
104
105
|
DI_OD_BASE_URL = "http://a0.awsstatic.com/pricing/1/dedicated-instances/"
|
105
106
|
RESERVED_DI_BASE_URL = "http://a0.awsstatic.com/pricing/1/ec2/ri-v2/"
|
@@ -129,4 +130,4 @@ module AwsPricing
|
|
129
130
|
end
|
130
131
|
|
131
132
|
|
132
|
-
end
|
133
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#--
|
2
|
+
# Amazon Web Services Pricing Ruby library
|
3
|
+
#
|
4
|
+
# Ruby Gem Name:: amazon-pricing
|
5
|
+
# Author:: Joe Kinsella (mailto:joe.kinsella@gmail.com)
|
6
|
+
# Copyright:: Copyright (c) 2011-2013 CloudHealth
|
7
|
+
# License:: Distributes under the same terms as Ruby
|
8
|
+
# Home:: http://github.com/CloudHealth/amazon-pricing
|
9
|
+
#++
|
10
|
+
|
11
|
+
require 'amazon-pricing/definitions/category-type'
|
12
|
+
|
13
|
+
module AwsPricing
|
14
|
+
class Cache < CategoryType
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'amazon-pricing/definitions/instance-type'
|
2
|
+
|
3
|
+
module AwsPricing
|
4
|
+
class ElastiCacheNodeType < InstanceType
|
5
|
+
|
6
|
+
def initialize(region, api_name, name)
|
7
|
+
@category_types = {}
|
8
|
+
|
9
|
+
@region = region
|
10
|
+
@name = name
|
11
|
+
@api_name = api_name
|
12
|
+
|
13
|
+
api_name_for_lookup = api_name.sub("cache.", "")
|
14
|
+
|
15
|
+
@memory_in_mb = InstanceType.get_memory(api_name)
|
16
|
+
@virtual_cores = InstanceType.get_virtual_cores(api_name_for_lookup)
|
17
|
+
end
|
18
|
+
|
19
|
+
def available?(cache_type = :memcached, type_of_instance = :ondemand)
|
20
|
+
cache = get_category_type(cache_type)
|
21
|
+
return false if cache.nil?
|
22
|
+
cache.available?(type_of_instance)
|
23
|
+
end
|
24
|
+
|
25
|
+
def update_pricing(cache_type, type_of_instance, json)
|
26
|
+
cache = get_category_type(cache_type)
|
27
|
+
if cache.nil?
|
28
|
+
cache = Cache.new(self, cache_type)
|
29
|
+
@category_types[cache_type] = cache
|
30
|
+
end
|
31
|
+
|
32
|
+
if type_of_instance == :ondemand
|
33
|
+
values = ElastiCacheNodeType::get_values(json, cache_type)
|
34
|
+
price = coerce_price(values[cache_type.to_s])
|
35
|
+
cache.set_price_per_hour(type_of_instance, nil, price)
|
36
|
+
else
|
37
|
+
json['valueColumns'].each do |val|
|
38
|
+
|
39
|
+
if val['prices']['USD'].empty?
|
40
|
+
next
|
41
|
+
end
|
42
|
+
|
43
|
+
price = coerce_price(val['prices']['USD'])
|
44
|
+
|
45
|
+
case val['name']
|
46
|
+
when "yrTerm1"
|
47
|
+
cache.set_prepay(type_of_instance, :year1, price)
|
48
|
+
when "yrTerm3"
|
49
|
+
cache.set_prepay(type_of_instance, :year3, price)
|
50
|
+
when "yearTerm1Hourly"
|
51
|
+
cache.set_price_per_hour(type_of_instance, :year1, price)
|
52
|
+
when "yearTerm3Hourly"
|
53
|
+
cache.set_price_per_hour(type_of_instance, :year3, price)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
protected
|
60
|
+
|
61
|
+
def self.get_name(instance_type, api_name, is_reserved = false)
|
62
|
+
api_name.sub!(" *", "")
|
63
|
+
|
64
|
+
unless @@Name_Lookup.has_key? api_name
|
65
|
+
raise UnknownTypeError, "Unknown instance type #{instance_type} #{api_name}", caller
|
66
|
+
end
|
67
|
+
|
68
|
+
name = @@Name_Lookup.has_key? api_name
|
69
|
+
|
70
|
+
[api_name, name]
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
@@ -86,6 +86,7 @@ module AwsPricing
|
|
86
86
|
case category
|
87
87
|
when 'os'; 'ec2'
|
88
88
|
when 'db'; 'rds'
|
89
|
+
when 'cache'; 'elasticache'
|
89
90
|
else
|
90
91
|
''
|
91
92
|
end
|
@@ -253,10 +254,18 @@ module AwsPricing
|
|
253
254
|
}
|
254
255
|
|
255
256
|
# NOTE: These are populated by "populate_lookups"
|
256
|
-
# But... AWS does not always provide memory info (e.g. t2, r3), so those are hardcoded below
|
257
|
+
# But... AWS does not always provide memory info (e.g. t2, r3, cache.*), so those are hardcoded below
|
257
258
|
@@Memory_Lookup = {
|
259
|
+
'cache.r3.large' => 13500, 'cache.r3.xlarge' => 28400, 'cache.r3.2xlarge' => 58200, 'cache.r3.4xlarge' => 118000, 'cache.r3.8xlarge' => 237000,
|
258
260
|
'r3.large' => 15250, 'r3.xlarge' => 30500, 'r3.2xlarge' => 61000, 'r3.4xlarge' => 122000, 'r3.8xlarge' => 244000,
|
261
|
+
'cache.m3.medium' => 2780, 'cache.m3.large' => 6050, 'cache.m3.xlarge' => 13300, 'cache.m3.2xlarge' => 27900,
|
259
262
|
't2.micro' => 1000, 't2.small' => 2000, 't2.medium' => 4000, 't2.large' => 8000,
|
263
|
+
'cache.t2.micro' => 555, 'cache.t2.small' => 1550, 'cache.t2.medidium' => 3220,
|
264
|
+
|
265
|
+
'cache.m1.small' => 1300, 'cache.m1.medium' => 3350, 'cache.m1.large' => 7100, 'cache.m1.xlarge' => 14600,
|
266
|
+
'cache.m2.xlarge' => 16700, 'cache.m2.2xlarge' => 33800, 'cache.m2.4xlarge' => 68000,
|
267
|
+
'cache.c1.xlarge' => 6600,
|
268
|
+
'cache.t1.micro' => 213,
|
260
269
|
}
|
261
270
|
@@Virtual_Cores_Lookup = {
|
262
271
|
'r3.large' => 2, 'r3.xlarge' => 4, 'r3.2xlarge' => 8, 'r3.4xlarge' => 16, 'r3.8xlarge' => 32,
|
@@ -15,12 +15,13 @@ module AwsPricing
|
|
15
15
|
# e.g. us-east, us-west
|
16
16
|
#
|
17
17
|
class Region
|
18
|
-
attr_accessor :name, :ebs_price, :ec2_instance_types, :rds_instance_types
|
18
|
+
attr_accessor :name, :ebs_price, :ec2_instance_types, :rds_instance_types, :elasticache_node_types
|
19
19
|
|
20
20
|
def initialize(name)
|
21
21
|
@name = name
|
22
|
-
@ec2_instance_types
|
23
|
-
@rds_instance_types
|
22
|
+
@ec2_instance_types = {}
|
23
|
+
@rds_instance_types = {}
|
24
|
+
@elasticache_node_types = {}
|
24
25
|
end
|
25
26
|
|
26
27
|
# Maintained for backward compatibility reasons (retrieves EC2 instance type)
|
@@ -36,6 +37,10 @@ module AwsPricing
|
|
36
37
|
@rds_instance_types.values
|
37
38
|
end
|
38
39
|
|
40
|
+
def elasticache_node_types
|
41
|
+
@elasticache_node_types.values
|
42
|
+
end
|
43
|
+
|
39
44
|
# Returns whether an instance_type is available.
|
40
45
|
# operating_system = :linux, :mswin, :rhel, :sles, :mswinSQL, :mswinSQLWeb
|
41
46
|
# type_of_instance = :ondemand, :light, :medium, :heavy
|
@@ -64,6 +69,15 @@ module AwsPricing
|
|
64
69
|
current
|
65
70
|
end
|
66
71
|
|
72
|
+
def add_or_update_elasticache_node_type(api_name, name)
|
73
|
+
current = get_elasticache_node_type(api_name)
|
74
|
+
if current.nil?
|
75
|
+
current = ElastiCacheNodeType.new(self, api_name, name)
|
76
|
+
@elasticache_node_types[api_name] = current
|
77
|
+
end
|
78
|
+
current
|
79
|
+
end
|
80
|
+
|
67
81
|
# Maintained for backward compatibility reasons (retrieves EC2 instance type)
|
68
82
|
def get_instance_type(api_name)
|
69
83
|
get_ec2_instance_type(api_name)
|
@@ -77,6 +91,10 @@ module AwsPricing
|
|
77
91
|
@rds_instance_types[api_name]
|
78
92
|
end
|
79
93
|
|
94
|
+
def get_elasticache_node_type(api_name)
|
95
|
+
@elasticache_node_types[api_name]
|
96
|
+
end
|
97
|
+
|
80
98
|
end
|
81
99
|
|
82
|
-
end
|
100
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module AwsPricing
|
2
|
+
class ElastiCachePriceList < PriceList
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
super
|
6
|
+
get_elasticache_on_demand_node_pricing
|
7
|
+
get_elasticache_reserved_node_pricing
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
# for now all engines have the save cost
|
13
|
+
@@CACHE_TYPES = [:memcached]
|
14
|
+
|
15
|
+
def get_elasticache_on_demand_node_pricing
|
16
|
+
od_url = ELASTICACHE_BASE_URL + "pricing-standard-deployments-elasticache.min.js"
|
17
|
+
od_legacy_url = ELASTICACHE_BASE_URL + "previous-generation/pricing-standard-deployments-elasticache.min.js"
|
18
|
+
@@CACHE_TYPES.each do |type|
|
19
|
+
fetch_on_demand_elasticache_node_pricing(od_url, type)
|
20
|
+
|
21
|
+
# fetch again for legacy prices
|
22
|
+
fetch_on_demand_elasticache_node_pricing(od_legacy_url, type)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_elasticache_reserved_node_pricing
|
27
|
+
rc_url = ELASTICACHE_BASE_URL + "pricing-elasticache-heavy-standard-deployments.min.js"
|
28
|
+
rc_legacy_url = ELASTICACHE_BASE_URL + "previous-generation/pricing-elasticache-heavy-standard-deployments.min.js"
|
29
|
+
@@CACHE_TYPES.each do |type|
|
30
|
+
fetch_reserved_elasticache_node_pricing(rc_url, type)
|
31
|
+
|
32
|
+
# fetch again for legacy prices
|
33
|
+
fetch_reserved_elasticache_node_pricing(rc_legacy_url, type)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def fetch_on_demand_elasticache_node_pricing(url, cache_type)
|
38
|
+
res = PriceList.fetch_url(url)
|
39
|
+
res['config']['regions'].each do |reg|
|
40
|
+
region_name = reg['region']
|
41
|
+
region = get_region(region_name)
|
42
|
+
if region.nil?
|
43
|
+
$stderr.puts "[fetch_elasticache_od_node_pricing] WARNING: unable to find region #{region_name}"
|
44
|
+
next
|
45
|
+
end # region.nil?
|
46
|
+
|
47
|
+
reg['types'].each do |type|
|
48
|
+
name = type['name']
|
49
|
+
|
50
|
+
type['tiers'].each do |tier|
|
51
|
+
begin
|
52
|
+
api_name = tier['name']
|
53
|
+
node_type = region.add_or_update_elasticache_node_type(api_name, name)
|
54
|
+
node_type.update_pricing(cache_type, :ondemand, tier)
|
55
|
+
rescue UnknownTypeError
|
56
|
+
$stderr.puts "[fetch_on_demand_elasticache_node_pricing] WARNING: encountered #{$!.message}"
|
57
|
+
end # begin
|
58
|
+
end # do |tier|
|
59
|
+
end # do |type|
|
60
|
+
end # do |reg|
|
61
|
+
end
|
62
|
+
|
63
|
+
def fetch_reserved_elasticache_node_pricing(url, cache_type)
|
64
|
+
res = PriceList.fetch_url(url)
|
65
|
+
res['config']['regions'].each do |reg|
|
66
|
+
region_name = reg['region']
|
67
|
+
region = get_region(region_name)
|
68
|
+
if region.nil?
|
69
|
+
$stderr.puts "[fetch_elasticache_rc_node_pricing] WARNING: unable to find region #{region_name}"
|
70
|
+
next
|
71
|
+
end #region.nil?
|
72
|
+
|
73
|
+
reg['instanceTypes'].each do |type|
|
74
|
+
name = type['generation']
|
75
|
+
type['tiers'].each do |tier|
|
76
|
+
begin
|
77
|
+
api_name = tier['size']
|
78
|
+
node_type = region.add_or_update_elasticache_node_type(api_name, name)
|
79
|
+
node_type.update_pricing(cache_type, :partialupfront, tier)
|
80
|
+
rescue UnknownTypeError
|
81
|
+
$stderr.puts "[fetch_reserved_rds_instance_pricing] WARNING: encountered #{$!.message}"
|
82
|
+
end
|
83
|
+
end # do |tier|
|
84
|
+
end # do |type|
|
85
|
+
end # do |reg|
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AwsPricing::ElastiCachePriceList do
|
4
|
+
before(:all) do
|
5
|
+
@pricing = AwsPricing::ElastiCachePriceList.new
|
6
|
+
@node_types = [:memcached]
|
7
|
+
end
|
8
|
+
|
9
|
+
describe 'new' do
|
10
|
+
it 'ElastiCachePriceList.new should return the valid response' do
|
11
|
+
@pricing.regions.each do |region|
|
12
|
+
# Result have valid node name
|
13
|
+
expect(@node_types).to include(region.elasticache_node_types.first.category_types.first.name)
|
14
|
+
# values should not be nil
|
15
|
+
region.elasticache_node_types.first.category_types.first.ondemand_price_per_hour.should_not be_nil
|
16
|
+
# other prices per hour
|
17
|
+
region.elasticache_node_types.first.category_types.first.partialupfront_prepay_1_year.should_not be_nil
|
18
|
+
region.elasticache_node_types.first.category_types.first.partialupfront_prepay_3_year.should_not be_nil
|
19
|
+
region.elasticache_node_types.first.category_types.first.partialupfront_price_per_hour_1_year.should_not be_nil
|
20
|
+
region.elasticache_node_types.first.category_types.first.partialupfront_price_per_hour_3_year.should_not be_nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '::get_api_name' do
|
26
|
+
it "raises an UnknownTypeError on an unexpected instance type" do
|
27
|
+
expect {
|
28
|
+
AwsPricing::ElastiCacheNodeType::get_name 'IDK', 'MoreIDK'
|
29
|
+
}.to raise_error(AwsPricing::UnknownTypeError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'get_breakeven_months' do
|
34
|
+
it "test_fetch_all_breakeven_months" do
|
35
|
+
@pricing.regions.each do |region|
|
36
|
+
region.elasticache_node_types.each do |node|
|
37
|
+
[:year1, :year3].each do |term|
|
38
|
+
[:partialupfront].each do |res_type|
|
39
|
+
[:memcached].each do |cache|
|
40
|
+
node.get_breakeven_month(cache, res_type, term).should_not be_nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
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.
|
4
|
+
version: 0.1.66
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Kinsella
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A Ruby library for retrieving pricing for Amazon Web Services
|
14
14
|
email:
|
@@ -35,10 +35,12 @@ files:
|
|
35
35
|
- lib/amazon-pricing.rb
|
36
36
|
- lib/amazon-pricing/aws-price-list.rb
|
37
37
|
- lib/amazon-pricing/common/ec2_common.rb
|
38
|
+
- lib/amazon-pricing/definitions/cache-type.rb
|
38
39
|
- lib/amazon-pricing/definitions/category-type.rb
|
39
40
|
- lib/amazon-pricing/definitions/database-type.rb
|
40
41
|
- lib/amazon-pricing/definitions/ebs-price.rb
|
41
42
|
- lib/amazon-pricing/definitions/ec2-instance-type.rb
|
43
|
+
- lib/amazon-pricing/definitions/elasticache_node_type.rb
|
42
44
|
- lib/amazon-pricing/definitions/instance-type.rb
|
43
45
|
- lib/amazon-pricing/definitions/operating-system.rb
|
44
46
|
- lib/amazon-pricing/definitions/rds-instance-type.rb
|
@@ -46,10 +48,12 @@ files:
|
|
46
48
|
- lib/amazon-pricing/dynamo-db-price-list.rb
|
47
49
|
- lib/amazon-pricing/ec2-di-price-list.rb
|
48
50
|
- lib/amazon-pricing/ec2-price-list.rb
|
51
|
+
- lib/amazon-pricing/elasticache-price-list.rb
|
49
52
|
- lib/amazon-pricing/helpers/instance-type.rb
|
50
53
|
- lib/amazon-pricing/rds-price-list.rb
|
51
54
|
- lib/amazon-pricing/version.rb
|
52
55
|
- spec/lib/amazon-pricing/definitions/database-type_spec.rb
|
56
|
+
- spec/lib/amazon-pricing/elasticache_pricing_spec.rb
|
53
57
|
- spec/lib/amazon-pricing/rds_pricing_spec.rb
|
54
58
|
- spec/spec_helper.rb
|
55
59
|
- spec/support/.gitignore
|
@@ -80,9 +84,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
84
|
version: '0'
|
81
85
|
requirements: []
|
82
86
|
rubyforge_project: amazon-pricing
|
83
|
-
rubygems_version: 2.
|
87
|
+
rubygems_version: 2.4.6
|
84
88
|
signing_key:
|
85
89
|
specification_version: 4
|
86
90
|
summary: Amazon Web Services Pricing Ruby gem
|
87
|
-
test_files:
|
88
|
-
|
91
|
+
test_files:
|
92
|
+
- spec/lib/amazon-pricing/definitions/database-type_spec.rb
|
93
|
+
- spec/lib/amazon-pricing/elasticache_pricing_spec.rb
|
94
|
+
- spec/lib/amazon-pricing/rds_pricing_spec.rb
|
95
|
+
- spec/spec_helper.rb
|
96
|
+
- spec/support/.gitignore
|
97
|
+
- test/ec2_instance_types_test.rb
|
98
|
+
- test/helper.rb
|