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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjgyZGM4MjYwMDliZDYxOTA0ZDVlNWQ1MTcxY2Q2NzNkMGRjOGVkYg==
4
+ MDdiNTFmMjM1ZWFlYWU2ZTdiYjg2ZWE4ZmQ0ODcyNTA3OGQ3MmY0NQ==
5
5
  data.tar.gz: !binary |-
6
- NGZjYjBjODg3ZjUxZDZhODcyNmY2MzI2ZDUzZjdjMjk2ZjMwZDk2Ng==
6
+ ZjJhNjA2ZjUyNjFkNTBmMjcwOGVhYmEwMWNkZDIzNzI2NTc3NGZjYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjAyZGIyZTJlMDExYzhjMDQ3ZjExMzY0OTkzZDkyNDNlOTFhZTUyNjQ0M2Ey
10
- NzNiYmE2NWY5OWEwZmUzNTRlMTg2MGViMzYxNmJmOGY1ZGI0ODdmMDVmMWZl
11
- ODIzOWIyZDhmNWFlMDVjNDNiNzM0ZWE2NzFmNWE1M2E1NGU4NzI=
9
+ Yjg5OTA4ZTk1YmZhZjFkNjQ3Y2YwMDQ4MjA5NmI1ZDQxZTRmZmE3MmE4ODVk
10
+ M2Q0NTRlMTYzMzhlNWYzYzRhODU0YWJhZjExOTdlYmM2ZDkwMDFlZDE4MWNh
11
+ OWY0NjJhODYzODE2ZGJhZWVkOGViNTk2M2M0Y2QxODkyOGE4Yjg=
12
12
  data.tar.gz: !binary |-
13
- M2NlOWU4NThiOWU1NWJkYTc1MWVjMDY0ZmM3NmE2NGRhZDE5MTYyNWRjZmUw
14
- ZTU5MDgzOGE4ODFiYzIwODg1NjNkMTg2OGNiMTQ5NDFmMWU3MWQyMWYwZThl
15
- ZGM4OWFiNDRiYjEyMjZjNGE2ODI5ZmY5YTE4ZWViNTE3NDkyNTA=
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:
@@ -8,5 +8,5 @@
8
8
  # Home:: http://github.com/CloudHealth/amazon-pricing
9
9
  #++
10
10
  module AwsPricing
11
- VERSION = '0.1.106' # [major,minor.fix]: adding eu-west-3
11
+ VERSION = '0.1.107' # [major,minor.fix]: adding more methods for rds sf
12
12
  end
data/solano.yml CHANGED
@@ -2,3 +2,5 @@
2
2
  coverage:
3
3
  version: 2
4
4
  enabled: true
5
+ environment:
6
+ TZ: UTC
@@ -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.106
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: 2017-12-19 00:00:00.000000000 Z
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: