amazon-pricing 0.1.94 → 0.1.95
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Rakefile +50 -0
- data/lib/amazon-pricing.rb +2 -0
- data/lib/amazon-pricing/aws-price-list.rb +1 -0
- data/lib/amazon-pricing/common/ec2_common.rb +2 -0
- data/lib/amazon-pricing/definitions/ec2-dh-type.rb +36 -0
- data/lib/amazon-pricing/definitions/ec2-instance-type.rb +16 -0
- data/lib/amazon-pricing/definitions/instance-type.rb +1 -1
- data/lib/amazon-pricing/definitions/region.rb +19 -1
- data/lib/amazon-pricing/ec2-dh-price-list.rb +52 -0
- data/lib/amazon-pricing/ec2-dhi-price-list.rb +74 -0
- data/lib/amazon-pricing/version.rb +1 -1
- data/spec/lib/amazon-pricing/ec2_dh_pricing_spec.rb +26 -0
- data/spec/lib/amazon-pricing/ec2_dhi_pricing_spec.rb +37 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDk2N2NkZjYwYzAxOTAyYzk2ZWM4ZmNhNzFhZWRlMmQ0YTQzMmM3Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTBkNWNkYzNlOWRkOTAyZmUwZjZmYjFhYjkzMWFlOGFmZmMyMGQ1Yw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjExYTkzMjQ4ZWFkZmMzODMxZTIzYjUzNWM5YjlkNTI5ZjllOTlmYjEyYjg2
|
10
|
+
MmFiMDU0N2Q4MTljZDVmMTM2Y2RjN2Q2OGNmZDE3YTY0ZjllYzdhNWNkZWM3
|
11
|
+
ODMxYmYxYzBjMTNhYzVhZDhhOGJiOThlYjc5YjlhZDI1ZGRlOTg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDZjOTRjMmZmMTc3MjEyOTQyNjJjN2RmYTlhNDE3NTllMTI1M2FjMzIxZWQ2
|
14
|
+
OTlhNTUzNTM3NWFkMjE0MTE2NjI3YWY2OWNiNDQ3MjExNDE3MGJiYjNkMGVh
|
15
|
+
YzVjYmY5NjI1Y2MyMTJjMGRkZTUxMDVlYzY5ODFmMjY0YWMzMDY=
|
data/Rakefile
CHANGED
@@ -34,6 +34,27 @@ task :print_ec2_price_list do
|
|
34
34
|
print_ec2_table(pricing)
|
35
35
|
end
|
36
36
|
|
37
|
+
desc "Prints current EC2 DI pricing in CSV format"
|
38
|
+
task :print_ec2_di_price_list do
|
39
|
+
require 'amazon-pricing'
|
40
|
+
pricing = AwsPricing::Ec2DiPriceList.new
|
41
|
+
print_ec2_table(pricing)
|
42
|
+
end
|
43
|
+
|
44
|
+
desc "Prints current EC2 Dedicated Host Instance pricing in CSV format"
|
45
|
+
task :print_ec2_dhi_price_list do
|
46
|
+
require 'amazon-pricing'
|
47
|
+
pricing = AwsPricing::Ec2DedicatedHostInstancePriceList.new
|
48
|
+
print_ec2_table(pricing)
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "Prints current EC2 Dedicated Host pricing in CSV format"
|
52
|
+
task :print_ec2_dh_price_list do
|
53
|
+
require 'amazon-pricing'
|
54
|
+
pricing = AwsPricing::Ec2DedicatedHostPriceList.new
|
55
|
+
print_ec2_dh_table(pricing)
|
56
|
+
end
|
57
|
+
|
37
58
|
desc "Prints current RDS pricing in CSV format"
|
38
59
|
task :print_rds_price_list do
|
39
60
|
require 'amazon-pricing'
|
@@ -95,6 +116,35 @@ def print_ec2_table(pricing, target_region = nil)
|
|
95
116
|
end
|
96
117
|
end
|
97
118
|
|
119
|
+
def print_ec2_dh_table(pricing, target_region = nil)
|
120
|
+
line = "Region,Instance Type,API Name,Memory (MB),Disk (GB),Compute Units,Virtual Cores,Disk Type,OD Linux PPH,OD Windows PPH,OD RHEL PPH,OD SLES PPH,OD MsWinSQL PPH,OD MsWinSQLWeb PPH,"
|
121
|
+
[:year1, :year3].each do |term|
|
122
|
+
[:light, :medium, :heavy, :allupfront, :partialupfront, :noupfront].each do |res_type|
|
123
|
+
[:linux, :mswin, :rhel, :sles, :mswinSQL, :mswinSQLWeb].each do |os|
|
124
|
+
line += "#{term} #{res_type} #{os} Prepay,#{term} #{res_type} #{os} PPH,"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
puts line.chop
|
129
|
+
pricing.regions.each do |region|
|
130
|
+
next if region.name != target_region if target_region
|
131
|
+
region.ec2_dh_types.each do |t|
|
132
|
+
line = "#{region.name},#{t.name},#{t.api_name},#{t.memory_in_mb},#{t.disk_in_gb},#{t.compute_units},#{t.virtual_cores},#{t.disk_type},"
|
133
|
+
[:linux, :mswin, :rhel, :sles, :mswinSQL, :mswinSQLWeb].each do |os|
|
134
|
+
line += "#{t.price_per_hour(os, :ondemand)},"
|
135
|
+
end
|
136
|
+
[:year1, :year3].each do |term|
|
137
|
+
[:light, :medium, :heavy, :allupfront, :partialupfront, :noupfront].each do |res_type|
|
138
|
+
[:linux, :mswin, :rhel, :sles, :mswinSQL, :mswinSQLWeb].each do |os|
|
139
|
+
line += "#{t.prepay(os, res_type, term)},#{t.price_per_hour(os, res_type, term)},"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
puts line.chop
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
98
148
|
def print_elasticache_table(pricing, target_region = nil)
|
99
149
|
line = "Region,Node Type,API Name,Memmory (MB),Virtual Cores,Disk Type,OD PPH,"
|
100
150
|
[:year1, :year3].each do |term|
|
data/lib/amazon-pricing.rb
CHANGED
@@ -8,6 +8,8 @@ require 'amazon-pricing/common/ec2_common'
|
|
8
8
|
require 'amazon-pricing/aws-price-list'
|
9
9
|
require 'amazon-pricing/ec2-price-list'
|
10
10
|
require 'amazon-pricing/ec2-di-price-list'
|
11
|
+
require 'amazon-pricing/ec2-dhi-price-list'
|
12
|
+
require 'amazon-pricing/ec2-dh-price-list'
|
11
13
|
require 'amazon-pricing/rds-price-list'
|
12
14
|
require 'amazon-pricing/dynamo-db-price-list'
|
13
15
|
require 'amazon-pricing/elasticache-price-list'
|
@@ -104,6 +104,7 @@ module AwsPricing
|
|
104
104
|
ELASTICACHE_BASE_URL = "http://a0.awsstatic.com/pricing/1/elasticache/"
|
105
105
|
|
106
106
|
DI_OD_BASE_URL = "http://a0.awsstatic.com/pricing/1/dedicated-instances/"
|
107
|
+
DH_OD_BASE_URL = "http://a0.awsstatic.com/pricing/1/dedicated-hosts/"
|
107
108
|
RESERVED_DI_BASE_URL = "http://a0.awsstatic.com/pricing/1/ec2/ri-v2/"
|
108
109
|
RESERVED_DI_PREV_GEN_BASE_URL = "http://a0.awsstatic.com/pricing/1/ec2/previous-generation/ri-v2/"
|
109
110
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'amazon-pricing/definitions/instance-type'
|
2
|
+
|
3
|
+
module AwsPricing
|
4
|
+
class Ec2DedicatedHostType < InstanceType
|
5
|
+
|
6
|
+
def initialize(region, family_name)
|
7
|
+
@category_types = {}
|
8
|
+
@region = region
|
9
|
+
@name = ''
|
10
|
+
@api_name = family_name
|
11
|
+
end
|
12
|
+
|
13
|
+
def category_types
|
14
|
+
@category_types
|
15
|
+
end
|
16
|
+
|
17
|
+
def region
|
18
|
+
@region
|
19
|
+
end
|
20
|
+
|
21
|
+
def update_dh_pricing(operating_system, dhprice)
|
22
|
+
os = get_category_type(operating_system)
|
23
|
+
if os.nil?
|
24
|
+
os = OperatingSystem.new(self, operating_system)
|
25
|
+
@category_types[operating_system] = os
|
26
|
+
end
|
27
|
+
|
28
|
+
category = operating_system.to_s
|
29
|
+
values = { category => dhprice }
|
30
|
+
price = coerce_price(values[category])
|
31
|
+
os.set_price_per_hour(:ondemand, nil, price)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -88,6 +88,22 @@ module AwsPricing
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
+
# operating_system = :linux, :mswin, :rhel, :sles, :mswinSQL, :mswinSQLWeb
|
92
|
+
# dhprice is a string representing the price per hour for the Dedicated Host
|
93
|
+
# capacity is the number of this type of instancess supported on this Dedicated Host
|
94
|
+
def update_dhi_pricing(operating_system, dhprice, capacity)
|
95
|
+
os = get_category_type(operating_system)
|
96
|
+
if os.nil?
|
97
|
+
os = OperatingSystem.new(self, operating_system)
|
98
|
+
@category_types[operating_system] = os
|
99
|
+
end
|
100
|
+
|
101
|
+
category = operating_system.to_s
|
102
|
+
values = { category => dhprice }
|
103
|
+
price = coerce_price(values[category])
|
104
|
+
os.set_price_per_hour(:ondemand, nil, price/capacity)
|
105
|
+
end
|
106
|
+
|
91
107
|
def update_pricing2(operating_system, res_type, ondemand_pph = nil, year1_prepay = nil, year3_prepay = nil, year1_pph = nil, year3_pph = nil)
|
92
108
|
|
93
109
|
os = get_category_type(operating_system)
|
@@ -15,13 +15,14 @@ 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, :elasticache_node_types
|
18
|
+
attr_accessor :name, :ebs_price, :ec2_instance_types, :rds_instance_types, :elasticache_node_types, :ec2_dh_types
|
19
19
|
|
20
20
|
def initialize(name)
|
21
21
|
@name = name
|
22
22
|
@ec2_instance_types = {}
|
23
23
|
@rds_instance_types = {}
|
24
24
|
@elasticache_node_types = {}
|
25
|
+
@ec2_dh_types = {}
|
25
26
|
end
|
26
27
|
|
27
28
|
# Maintained for backward compatibility reasons (retrieves EC2 instance type)
|
@@ -41,6 +42,10 @@ module AwsPricing
|
|
41
42
|
@elasticache_node_types.values
|
42
43
|
end
|
43
44
|
|
45
|
+
def ec2_dh_types
|
46
|
+
@ec2_dh_types.values
|
47
|
+
end
|
48
|
+
|
44
49
|
# Returns whether an instance_type is available.
|
45
50
|
# operating_system = :linux, :mswin, :rhel, :sles, :mswinSQL, :mswinSQLWeb
|
46
51
|
# type_of_instance = :ondemand, :light, :medium, :heavy
|
@@ -78,6 +83,15 @@ module AwsPricing
|
|
78
83
|
current
|
79
84
|
end
|
80
85
|
|
86
|
+
def add_or_update_ec2_dh_type(family)
|
87
|
+
current = get_ec2_dh_type(family)
|
88
|
+
if current.nil?
|
89
|
+
current = Ec2DedicatedHostType.new(self, family)
|
90
|
+
@ec2_dh_types[family] = current
|
91
|
+
end
|
92
|
+
current
|
93
|
+
end
|
94
|
+
|
81
95
|
# Maintained for backward compatibility reasons (retrieves EC2 instance type)
|
82
96
|
def get_instance_type(api_name)
|
83
97
|
get_ec2_instance_type(api_name)
|
@@ -95,6 +109,10 @@ module AwsPricing
|
|
95
109
|
@elasticache_node_types[api_name]
|
96
110
|
end
|
97
111
|
|
112
|
+
def get_ec2_dh_type(family)
|
113
|
+
@ec2_dh_types[family]
|
114
|
+
end
|
115
|
+
|
98
116
|
end
|
99
117
|
|
100
118
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module AwsPricing
|
2
|
+
class Ec2DedicatedHostPriceList < PriceList
|
3
|
+
include AwsPricing::Ec2Common
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
InstanceType.populate_lookups
|
8
|
+
get_ec2_dh_od_pricing
|
9
|
+
end
|
10
|
+
|
11
|
+
def os_types
|
12
|
+
@@OS_TYPES
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
@@OS_TYPES = [ 'linux', 'rhel', 'sles', 'mswin', 'mswinSQL', 'mswinSQLWeb', 'mswinSQLEnterprise' ]
|
18
|
+
|
19
|
+
def get_ec2_dh_od_pricing
|
20
|
+
@@OS_TYPES.each do |os|
|
21
|
+
fetch_ec2_dedicated_host_pricing(DH_OD_BASE_URL + "dh-od.min.js", os.to_sym)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def fetch_ec2_dedicated_host_pricing(url, operating_system)
|
26
|
+
res = PriceList.fetch_url(url)
|
27
|
+
begin
|
28
|
+
res['config']['regions'].each do |reg|
|
29
|
+
region_name = reg['region']
|
30
|
+
region = get_region(region_name)
|
31
|
+
if region.nil?
|
32
|
+
$stderr.puts "[fetch_ec2_dedicated_host_pricing] WARNING: unable to find region #{region_name}"
|
33
|
+
next
|
34
|
+
end
|
35
|
+
reg['types'].each do |type|
|
36
|
+
type_name = type['name']
|
37
|
+
tiers = type['tiers']
|
38
|
+
tiers.each do |tier|
|
39
|
+
family = tier['name']
|
40
|
+
api_name = family
|
41
|
+
dhprice = tier['prices']['USD']
|
42
|
+
dh_type = region.add_or_update_ec2_dh_type(family)
|
43
|
+
dh_type.update_dh_pricing(operating_system, dhprice)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
rescue UnknownTypeError
|
48
|
+
$stderr.puts "[fetch_ec2_dedicated_host_pricing] WARNING: encountered #{$!.message}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module AwsPricing
|
2
|
+
class Ec2DedicatedHostInstancePriceList < PriceList
|
3
|
+
include AwsPricing::Ec2Common
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
InstanceType.populate_lookups
|
8
|
+
get_ec2_dhi_od_pricing
|
9
|
+
end
|
10
|
+
|
11
|
+
def os_types
|
12
|
+
@@OS_TYPES
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
@@OS_TYPES = [ 'linux', 'rhel', 'sles', 'mswin', 'mswinSQL', 'mswinSQLWeb', 'mswinSQLEnterprise' ]
|
18
|
+
|
19
|
+
@@CAPACITY_HASH = {
|
20
|
+
'c3' => { "large"=>16, "xlarge"=>8, "2xlarge"=>4, "4xlarge"=>2, "8xlarge"=>1 },
|
21
|
+
'c4' => { "large"=>16, "xlarge"=>8, "2xlarge"=>4, "4xlarge"=>2, "8xlarge"=>1 },
|
22
|
+
'p2' => { "xlarge"=>16, "8xlarge"=>2, "16xlarge"=>1 },
|
23
|
+
'g2' => { "2xlarge"=>4, "8xlarge"=>1 },
|
24
|
+
'm3' => { "medium"=>32, "large"=>16, "xlarge"=>8, "2xlarge"=>4 },
|
25
|
+
'd2' => { "xlarge"=>8, "2xlarge"=>4, "4xlarge"=>2, "8xlarge"=>1 },
|
26
|
+
'r4' => { "large"=>32, "xlarge"=>16, "2xlarge"=>8, "4xlarge"=>4, "8xlarge"=>2, "16xlarge"=>1 },
|
27
|
+
'r3' => { "large"=>16, "xlarge"=>8, "2xlarge"=>4, "4xlarge"=>2, "8xlarge"=>1 },
|
28
|
+
'm4' => { "large"=>22, "xlarge"=>11, "2xlarge"=>5, "4xlarge"=>4, "10xlarge"=>1, "16xlarge"=>1 },
|
29
|
+
'i2' => { "xlarge"=>8, "2xlarge"=>4, "4xlarge"=>2, "8xlarge"=>1, "16xlarge"=>1 },
|
30
|
+
'i3' => { "large"=>32, "xlarge"=>16, "2xlarge"=>8, "4xlarge"=>4, "8xlarge"=>2, "16xlarge"=>1 },
|
31
|
+
'x1' => { "16xlarge"=>2, "32xlarge"=>1 }
|
32
|
+
}
|
33
|
+
|
34
|
+
def get_ec2_dhi_od_pricing
|
35
|
+
@@OS_TYPES.each do |os|
|
36
|
+
fetch_ec2_dedicated_host_instance_pricing(DH_OD_BASE_URL + "dh-od.min.js", os.to_sym)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def fetch_ec2_dedicated_host_instance_pricing(url, operating_system)
|
41
|
+
res = PriceList.fetch_url(url)
|
42
|
+
res['config']['regions'].each do |reg|
|
43
|
+
begin
|
44
|
+
region_name = reg['region']
|
45
|
+
region = get_region(region_name)
|
46
|
+
if region.nil?
|
47
|
+
$stderr.puts "[fetch_ec2_dedicated_host_instance_pricing] WARNING: unable to find region #{region_name}"
|
48
|
+
next
|
49
|
+
end
|
50
|
+
reg['types'].each do |type|
|
51
|
+
type_name = type['name']
|
52
|
+
tiers = type['tiers']
|
53
|
+
tiers.each do |tier|
|
54
|
+
family = tier['name']
|
55
|
+
|
56
|
+
# hack for now until I can get capacity for fpga instances
|
57
|
+
next if family == 'f1'
|
58
|
+
|
59
|
+
dhprice = tier['prices']['USD']
|
60
|
+
@@CAPACITY_HASH[family].each do |inst_size,capacity|
|
61
|
+
api_name, name = Ec2InstanceType.get_name(family, "#{family}.#{inst_size}", false)
|
62
|
+
instance_type = region.add_or_update_ec2_instance_type(api_name, name)
|
63
|
+
instance_type.update_dhi_pricing(operating_system, dhprice, capacity)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
rescue UnknownTypeError
|
69
|
+
$stderr.puts "[fetch_ec2_dedicated_host_instance_pricing] WARNING: encountered #{$!.message}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AwsPricing::Ec2DedicatedHostPriceList do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@pricing = AwsPricing::Ec2DedicatedHostPriceList.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def validate_price_in_region region
|
10
|
+
# Result have valid node name
|
11
|
+
region.ec2_dh_types.each do |dh_type|
|
12
|
+
expect(dh_type.api_name).to have(2).characters
|
13
|
+
expect(dh_type.region.ec2_dh_types[0].category_types[:linux].name).to eq(:linux)
|
14
|
+
expect(dh_type.region.ec2_dh_types[0].category_types[:linux].ondemand_price_per_hour.class).to eq(Float)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'new' do
|
19
|
+
it 'Ec2DedicatedHostPriceList.new should return valid response' do
|
20
|
+
@pricing.regions.each do |region|
|
21
|
+
validate_price_in_region region
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AwsPricing::Ec2DedicatedHostInstancePriceList do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@pricing = AwsPricing::Ec2DedicatedHostInstancePriceList.new
|
7
|
+
@dh_pricing = AwsPricing::Ec2DedicatedHostPriceList.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def validate_price_in_region region
|
11
|
+
# Result have valid node name
|
12
|
+
region.ec2_instance_types.each do |inst_type|
|
13
|
+
expect(inst_type.api_name).to match(/[[:alpha:]][[:alpha:]]./)
|
14
|
+
expect(inst_type.category_types).to have_exactly(@pricing.os_types.length).items
|
15
|
+
expect(inst_type.category_types[0].price_per_hour.class).to eq(Float)
|
16
|
+
|
17
|
+
family_name = inst_type.api_name.split('.').first
|
18
|
+
dh_region_arr = @dh_pricing.regions.select { |reg| reg.name == region.name }
|
19
|
+
expect(dh_region_arr).to have_exactly(1).items
|
20
|
+
dh_region = dh_region_arr[0]
|
21
|
+
dh_price_per_hour = dh_region.ec2_dh_types[0].price_per_hour(:linux, :ondemand)
|
22
|
+
dh_dh_type_arr = dh_region.ec2_dh_types.select { |type| type.api_name == family_name }
|
23
|
+
expect(dh_dh_type_arr).to have_exactly(1).items
|
24
|
+
dh_dh_type = dh_dh_type_arr[0]
|
25
|
+
expect(inst_type.category_types[0].price_per_hour).to be <= dh_dh_type.category_types[:linux].ondemand_price_per_hour
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'new' do
|
30
|
+
it 'Ec2DedicatedHostInstancePriceList.new should return valid response' do
|
31
|
+
@pricing.regions.each do |region|
|
32
|
+
validate_price_in_region region
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
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.95
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Kinsella
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A Ruby library for retrieving pricing for Amazon Web Services
|
14
14
|
email:
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- lib/amazon-pricing/definitions/category-type.rb
|
39
39
|
- lib/amazon-pricing/definitions/database-type.rb
|
40
40
|
- lib/amazon-pricing/definitions/ebs-price.rb
|
41
|
+
- lib/amazon-pricing/definitions/ec2-dh-type.rb
|
41
42
|
- lib/amazon-pricing/definitions/ec2-instance-type.rb
|
42
43
|
- lib/amazon-pricing/definitions/elasticache_node_type.rb
|
43
44
|
- lib/amazon-pricing/definitions/instance-type.rb
|
@@ -45,6 +46,8 @@ files:
|
|
45
46
|
- lib/amazon-pricing/definitions/rds-instance-type.rb
|
46
47
|
- lib/amazon-pricing/definitions/region.rb
|
47
48
|
- lib/amazon-pricing/dynamo-db-price-list.rb
|
49
|
+
- lib/amazon-pricing/ec2-dh-price-list.rb
|
50
|
+
- lib/amazon-pricing/ec2-dhi-price-list.rb
|
48
51
|
- lib/amazon-pricing/ec2-di-price-list.rb
|
49
52
|
- lib/amazon-pricing/ec2-price-list.rb
|
50
53
|
- lib/amazon-pricing/elasticache-price-list.rb
|
@@ -52,6 +55,8 @@ files:
|
|
52
55
|
- lib/amazon-pricing/rds-price-list.rb
|
53
56
|
- lib/amazon-pricing/version.rb
|
54
57
|
- spec/lib/amazon-pricing/definitions/database-type_spec.rb
|
58
|
+
- spec/lib/amazon-pricing/ec2_dh_pricing_spec.rb
|
59
|
+
- spec/lib/amazon-pricing/ec2_dhi_pricing_spec.rb
|
55
60
|
- spec/lib/amazon-pricing/elasticache_pricing_spec.rb
|
56
61
|
- spec/lib/amazon-pricing/helpers/instance-type-spec.rb
|
57
62
|
- spec/lib/amazon-pricing/rds_pricing_spec.rb
|
@@ -90,6 +95,8 @@ specification_version: 4
|
|
90
95
|
summary: Amazon Web Services Pricing Ruby gem
|
91
96
|
test_files:
|
92
97
|
- spec/lib/amazon-pricing/definitions/database-type_spec.rb
|
98
|
+
- spec/lib/amazon-pricing/ec2_dh_pricing_spec.rb
|
99
|
+
- spec/lib/amazon-pricing/ec2_dhi_pricing_spec.rb
|
93
100
|
- spec/lib/amazon-pricing/elasticache_pricing_spec.rb
|
94
101
|
- spec/lib/amazon-pricing/helpers/instance-type-spec.rb
|
95
102
|
- spec/lib/amazon-pricing/rds_pricing_spec.rb
|