amazon-pricing 0.1.106 → 0.1.107

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 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: