amazon-pricing 0.1.106 → 0.1.107
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/amazon-pricing/definitions/database-type.rb +22 -0
- data/lib/amazon-pricing/version.rb +1 -1
- data/solano.yml +2 -0
- data/spec/lib/amazon-pricing/rds_pricing_spec.rb +78 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDdiNTFmMjM1ZWFlYWU2ZTdiYjg2ZWE4ZmQ0ODcyNTA3OGQ3MmY0NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjJhNjA2ZjUyNjFkNTBmMjcwOGVhYmEwMWNkZDIzNzI2NTc3NGZjYQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Yjg5OTA4ZTk1YmZhZjFkNjQ3Y2YwMDQ4MjA5NmI1ZDQxZTRmZmE3MmE4ODVk
|
10
|
+
M2Q0NTRlMTYzMzhlNWYzYzRhODU0YWJhZjExOTdlYmM2ZDkwMDFlZDE4MWNh
|
11
|
+
OWY0NjJhODYzODE2ZGJhZWVkOGViNTk2M2M0Y2QxODkyOGE4Yjg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MmMxNGFkOTAzZjc4ZmE5ZTAwODMwYjc0ZTU5NTQwOTU0MWJmZmQzYjBjNTU5
|
14
|
+
MzIyNzA1Yjg4ZmM1ZTZiODgwMTg1OTc5NzJmODA4ZjNiNGVhOWNhYWFmNTcx
|
15
|
+
YmFjZDdjOTZiOWIxNDE1Mzg2YmQ0OTVkMjY3ODQ5YjgzYzkyMDE=
|
@@ -232,6 +232,28 @@ module AwsPricing
|
|
232
232
|
database_name.include? 'byol'
|
233
233
|
end
|
234
234
|
|
235
|
+
# example: database_sf_from_engine_name_and_license_type?('mysql', false) returns true
|
236
|
+
# Returns BOOL if database is RDS SF
|
237
|
+
# params:
|
238
|
+
# - engine_name[String]: product description database name string
|
239
|
+
# - is_byol[Bool]: true if the database is using a BYOL license
|
240
|
+
def self.database_sf_from_engine_name_and_license_type?(engine_name, is_byol)
|
241
|
+
engine_name_sym = engine_name.gsub('-', '_').to_sym
|
242
|
+
if @@DB_Deploy_Types[engine_name_sym] && @@DB_Deploy_Types[engine_name_sym].include?(:byol)
|
243
|
+
product_name = is_byol ? "#{engine_name}(byol)" : "#{engine_name}(li)"
|
244
|
+
else
|
245
|
+
product_name = engine_name
|
246
|
+
end
|
247
|
+
database_sf_from_product_name?(product_name)
|
248
|
+
end
|
249
|
+
# example: database_sf_from_product_name?('oracle-ee(byol)') returns true
|
250
|
+
# Returns BOOL if database is RDS SF
|
251
|
+
# params:
|
252
|
+
# - product_name[String]: product description database name string including license type
|
253
|
+
def self.database_sf_from_product_name?(product_name)
|
254
|
+
# Just look up by single-az because deployment type doesn't affect size-flex eligibility
|
255
|
+
database_sf?(db_mapping(product_name, false))
|
256
|
+
end
|
235
257
|
# example: database_sf?('MySQL Community Edition (Multi-AZ)') returns true
|
236
258
|
# Returns BOOL if database string is RDS SF
|
237
259
|
# params:
|
data/solano.yml
CHANGED
@@ -41,6 +41,8 @@ describe AwsPricing::RdsPriceList do
|
|
41
41
|
puts "rds_sf_database-1: display_name:#{display_name}"
|
42
42
|
#
|
43
43
|
expect(AwsPricing::DatabaseType.database_sf?(display_name)).to be true
|
44
|
+
expect(AwsPricing::DatabaseType.database_sf_from_product_name?(product_name)).to be true
|
45
|
+
expect(AwsPricing::DatabaseType.database_sf_from_engine_name_and_license_type?('oracle-se2', true)).to be true
|
44
46
|
expect(AwsPricing::DatabaseType.database_multiaz?(display_name)).to be true
|
45
47
|
expect(AwsPricing::DatabaseType.database_nf(display_name)).to eq(2)
|
46
48
|
|
@@ -50,15 +52,86 @@ describe AwsPricing::RdsPriceList do
|
|
50
52
|
puts "rds_sf_database-2: display_name:#{display_name}"
|
51
53
|
#
|
52
54
|
expect(AwsPricing::DatabaseType.database_sf?(display_name)).to be false
|
55
|
+
expect(AwsPricing::DatabaseType.database_sf_from_product_name?(product_name)).to be false
|
56
|
+
expect(AwsPricing::DatabaseType.database_sf_from_engine_name_and_license_type?('sqlserver-se', true)).to be false
|
57
|
+
expect(AwsPricing::DatabaseType.database_multiaz?(display_name)).to be false
|
58
|
+
expect(AwsPricing::DatabaseType.database_nf(display_name)).to eq(1)
|
59
|
+
|
60
|
+
product_name = 'sqlserver-se(li)' # known NOT RDS SF example: 'Microsoft SQL Server Standard Edition'
|
61
|
+
multiaz = false
|
62
|
+
display_name = AwsPricing::DatabaseType.db_mapping(product_name, multiaz)
|
63
|
+
puts "rds_sf_database-2: display_name:#{display_name}"
|
64
|
+
#
|
65
|
+
expect(AwsPricing::DatabaseType.database_sf?(display_name)).to be false
|
66
|
+
expect(AwsPricing::DatabaseType.database_sf_from_product_name?(product_name)).to be false
|
67
|
+
expect(AwsPricing::DatabaseType.database_sf_from_engine_name_and_license_type?('sqlserver-se', false)).to be false
|
53
68
|
expect(AwsPricing::DatabaseType.database_multiaz?(display_name)).to be false
|
54
69
|
expect(AwsPricing::DatabaseType.database_nf(display_name)).to eq(1)
|
55
70
|
|
56
71
|
display_name = 'NuoDB' # unknown db, returns default non RDS SF values
|
57
72
|
#
|
58
73
|
expect(AwsPricing::DatabaseType.database_sf?(display_name)).to be false
|
74
|
+
expect(AwsPricing::DatabaseType.database_sf_from_product_name?(product_name)).to be false
|
75
|
+
expect(AwsPricing::DatabaseType.database_sf_from_engine_name_and_license_type?('NuoDB', false)).to be false
|
59
76
|
expect(AwsPricing::DatabaseType.database_multiaz?(display_name)).to be false
|
60
77
|
expect(AwsPricing::DatabaseType.database_nf(display_name)).to eq(1)
|
61
78
|
end
|
79
|
+
|
80
|
+
it 'verifies RDS SF api for product name' do
|
81
|
+
product_name_to_size_flex_map = {
|
82
|
+
'mysql' => true,
|
83
|
+
'postgres' => true,
|
84
|
+
'postgresql' => true,
|
85
|
+
'oracle-se1(li)' => false,
|
86
|
+
'oracle-se1(byol)' => true,
|
87
|
+
'oracle-se2(li)' => false,
|
88
|
+
'oracle-se2(byol)' => true,
|
89
|
+
'oracle-se(byol)' => true,
|
90
|
+
'oracle-ee(byol)' => true,
|
91
|
+
'sqlserver-ex(li)' => false,
|
92
|
+
'sqlserver-web(li)' => false,
|
93
|
+
'sqlserver-se(li)' => false,
|
94
|
+
'sqlserver-se(byol)' => false,
|
95
|
+
'sqlserver-ee(li)' => false,
|
96
|
+
'sqlserver-ee(byol)' => false,
|
97
|
+
'aurora' => true,
|
98
|
+
'aurora-postgresql' => true,
|
99
|
+
'mariadb' => true
|
100
|
+
}
|
101
|
+
|
102
|
+
product_name_to_size_flex_map.each do |product_name, expected_value|
|
103
|
+
expect(AwsPricing::DatabaseType.database_sf_from_product_name?(product_name)).to be expected_value
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'verifies RDS SF api for engine name and license type' do
|
108
|
+
engine_name_and_license_type_to_size_flex_map = {
|
109
|
+
['mysql', false] => true,
|
110
|
+
['postgres', false] => true,
|
111
|
+
['postgresql', false] => true,
|
112
|
+
['oracle-se1', false] => false,
|
113
|
+
['oracle-se1', true] => true,
|
114
|
+
['oracle-se2', false] => false,
|
115
|
+
['oracle-se2', true] => true,
|
116
|
+
['oracle-se', true] => true,
|
117
|
+
['oracle-ee', true] => true,
|
118
|
+
['sqlserver-ex', false] => false,
|
119
|
+
['sqlserver-web', false] => false,
|
120
|
+
['sqlserver-se', false] => false,
|
121
|
+
['sqlserver-se', true] => false,
|
122
|
+
['sqlserver-ee', false] => false,
|
123
|
+
['sqlserver-ee', true] => false,
|
124
|
+
['aurora', false] => true,
|
125
|
+
['aurora-postgresql', false] => true,
|
126
|
+
['mariadb', false] => true
|
127
|
+
}
|
128
|
+
|
129
|
+
engine_name_and_license_type_to_size_flex_map.each do |engine_and_license, expected_value|
|
130
|
+
engine = engine_and_license.first
|
131
|
+
license = engine_and_license.last
|
132
|
+
expect(AwsPricing::DatabaseType.database_sf_from_engine_name_and_license_type?(engine, license)).to be expected_value
|
133
|
+
end
|
134
|
+
end
|
62
135
|
end
|
63
136
|
|
64
137
|
describe 'rds_sf_operation' do
|
@@ -93,7 +166,7 @@ describe AwsPricing::RdsPriceList do
|
|
93
166
|
end
|
94
167
|
end
|
95
168
|
|
96
|
-
describe 'get_breakeven_months' do
|
169
|
+
describe 'get_breakeven_months' do
|
97
170
|
it "test_fetch_all_breakeven_months" do
|
98
171
|
@pricing.regions.each do |region|
|
99
172
|
region.rds_instance_types.each do |instance|
|
@@ -112,15 +185,15 @@ describe AwsPricing::RdsPriceList do
|
|
112
185
|
if deploy_type == :byol_multiaz
|
113
186
|
next if not instance.available?(db, res_type, true, true)
|
114
187
|
instance.get_breakeven_month(db, res_type, term, true, true).should_not be_nil
|
115
|
-
else
|
188
|
+
else
|
116
189
|
next if not instance.available?(db, res_type, deploy_type == :multiaz, deploy_type == :byol)
|
117
190
|
instance.get_breakeven_month(db, res_type, term, deploy_type == :multiaz, deploy_type == :byol).should_not be_nil
|
118
|
-
end
|
191
|
+
end
|
119
192
|
end
|
120
|
-
end
|
193
|
+
end
|
121
194
|
end
|
122
195
|
end
|
123
|
-
end
|
196
|
+
end
|
124
197
|
end
|
125
198
|
end
|
126
199
|
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.107
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Kinsella
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-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:
|