amazon-pricing 0.1.98 → 0.1.99

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
- ZTczM2E3YTRhYmRjNTZjZjQzMTMzYjk4YzY5MzQ2OWNlYTFkODA2Mw==
4
+ YWU2NmQzMjliNzAyNjQ1MTk0ZTZjZmY1MjU0ZTEzM2YzM2Y3ZmE4Mg==
5
5
  data.tar.gz: !binary |-
6
- NTI3NDM1MTM4MTI4M2Y4OWZmNjY3MzM1ZDk4OWEzZTlhMGFlZDBlYQ==
6
+ NGQ1OTg5YjY5NjI2YzA1ZjNjNmZjM2U2NTczNzE0MjRlMzc3N2I3Mw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDk5MjczY2ZmZmM5NzBhZjExYTI3ZWI0MjIyMmMxYTk0MWYyNDQwOGRiZTY4
10
- NDZkOWQ5ZThhYTc1NDFkYzU5YTAxYTgwNzRlMWI4MDdhODQ1ZWQ1ZDU5NzYz
11
- NDkyN2E1ZTUwNjE0YmRjMmY0MjFlNzQwNGUxOTFkZjRjZjllNDk=
9
+ MmU4YTJjNWY0Mzk0NTA1OTM1MWI1NjczNDdiMWMzZTZlYTVhYWViYjVlY2Yx
10
+ MTBmYmVjNDA4NzZhMmMxYzJhYTM3ZDA4YjhmYWI4Y2ZlY2ZkZTg4YzgwYjRk
11
+ ZGE5M2I4MTBkZGU5MWU2ZThiYmExNWRlZmIzNDQ1NDljYTE2Zjc=
12
12
  data.tar.gz: !binary |-
13
- MTRkYjc2MDY5MDM3M2E2OGNjM2UyNzU4OTA2N2UwMWNiYzFiY2M3NjUwOGQy
14
- NGY3NTlmYzc2NTU4OGFkNDQwZWVmYmIzZTU4NTE4OGM0MzA0NmRiOWRlMDYz
15
- MGJkOGE3NjI0YzRmNzE4MjRkNmM3MGQ2MzUyYTgzOGRkODdmOGM=
13
+ MGI1N2QxOWZmMjI0NjgzZWIwMmZhNjQ3YjI5ODY5YTM4NDIwMDMyZmE0MGQ3
14
+ YjNiZjdmMWYyZWVjYTkxMmVkYmE3OGMzNTQ3NmEzYzQ5NzZkMDVhNzkzMjEx
15
+ OWJhMjk1NzhkNjM4ODJhNjRmZGRmOTAyYjJhMDgyYTkzYTEwMzQ=
@@ -13,75 +13,163 @@ require 'amazon-pricing/definitions/category-type'
13
13
  module AwsPricing
14
14
  class DatabaseType < CategoryType
15
15
 
16
+ # Display Name, as seen in DBR/CUR
17
+ MYSQL_STANDARD = 'MySQL Community Edition'.freeze
18
+ MYSQL_MULTIAZ = 'MySQL Community Edition (Multi-AZ)'.freeze
19
+ POSTGRESQL_STANDARD = 'PostgreSql Community Edition(Beta)'.freeze
20
+ POSTGRESQL_MULTIAZ = 'PostgreSql Community Edition(Beta) (Multi-AZ)'.freeze
21
+ ORACLE_SE1_STANDARD = 'Oracle Database Standard Edition One'.freeze
22
+ ORACLE_SE1_MULTIAZ = 'Oracle Database Standard Edition One (Multi-AZ)'.freeze
23
+ ORACLE_SE1_BYOL_STANDARD = 'Oracle Database Standard Edition One (BYOL)'.freeze
24
+ ORACLE_SE1_BYOL_MULTIAZ = 'Oracle Database Standard Edition One (BYOL Multi-AZ)'.freeze
25
+ ORACLE_SE2_STANDARD = 'Oracle Database Standard Edition Two'.freeze
26
+ ORACLE_SE2_MULTIAZ = 'Oracle Database Standard Edition Two (Multi-AZ)'.freeze
27
+ ORACLE_SE2_BYOL_STANDARD = 'Oracle Database Standard Edition Two (BYOL)'.freeze
28
+ ORACLE_SE2_BYOL_MULTIAZ = 'Oracle Database Standard Edition Two (BYOL Multi-AZ)'.freeze
29
+ ORACLE_SE_BYOL_STANDARD = 'Oracle Database Standard Edition (BYOL)'.freeze
30
+ ORACLE_SE_BYOL_MULTIAZ = 'Oracle Database Standard Edition (BYOL Multi-AZ)'.freeze
31
+ ORACLE_EE_BYOL_STANDARD = 'Oracle Database Enterprise Edition (BYOL)'.freeze
32
+ ORACLE_EE_BYOL_MULTIAZ = 'Oracle Database Enterprise Edition (BYOL Multi-AZ)'.freeze
33
+ SQLSERVER_EX = 'Microsoft SQL Server Express Edition'.freeze
34
+ SQLSERVER_WEB = 'Microsoft SQL Server Web Edition'.freeze
35
+ SQLSERVER_SE_STANDARD = 'Microsoft SQL Server Standard Edition'.freeze
36
+ SQLSERVER_SE_MULTIAZ = 'Microsoft SQL Server Standard Edition (Multi-AZ)'.freeze
37
+ SQLSERVER_SE_BYOL_STANDARD= 'Microsoft SQL Server Standard Edition (BYOL)'.freeze
38
+ SQLSERVER_SE_BYOL_MULTIAZ = 'Microsoft SQL Server Standard Edition (BYOL Multi-AZ)'.freeze
39
+ SQLSERVER_EE_STANDARD = 'Microsoft SQL Server Enterprise Edition'.freeze
40
+ SQLSERVER_EE_MULTIAZ = 'Microsoft SQL Server Enterprise Edition (Multi-AZ)'.freeze
41
+ SQLSERVER_EE_BYOL_STANDARD= 'Microsoft SQL Server Enterprise Edition (BYOL)'.freeze
42
+ SQLSERVER_EE_BYOL_MULTIAZ = 'Microsoft SQL Server Enterprise Edition (BYOL Multi-AZ)'
43
+ AURORA_MYSQL = 'Amazon Aurora'.freeze # multiaz not distinguished, MySQL not distinguished
44
+ AURORA_POSTGRESQL = 'Amazon Aurora PostgreSQL'.freeze # multiaz not distinguished
45
+ MARIADB_STANDARD = 'MariaDB'.freeze
46
+ MARIADB_MULTIAZ = 'MariaDB (Multi-AZ)'.freeze
47
+
48
+ # maps RDS description to [ engine, license, multiaz, sizeflex ]
49
+ @@DB_ENGINE_MAP = {
50
+ MYSQL_STANDARD => { engine: "mysql", license: "none", multiaz: false, sizeflex: true },
51
+ MYSQL_MULTIAZ => { engine: "mysql", license: "none", multiaz: true, sizeflex: true },
52
+ POSTGRESQL_STANDARD => { engine: "postgresql", license: "none", multiaz: false, sizeflex: true },
53
+ POSTGRESQL_MULTIAZ => { engine: "postgresql", license: "none", multiaz: true, sizeflex: true },
54
+ ORACLE_SE1_STANDARD => { engine: "oracle-se1", license: "li", multiaz: false, sizeflex: false },
55
+ ORACLE_SE1_MULTIAZ => { engine: "oracle-se1", license: "li", multiaz: true, sizeflex: false },
56
+ ORACLE_SE1_BYOL_STANDARD => { engine: "oracle-se1", license: "byol", multiaz: false, sizeflex: true },
57
+ ORACLE_SE1_BYOL_MULTIAZ => { engine: "oracle-se1", license: "byol", multiaz: true, sizeflex: true },
58
+ ORACLE_SE2_STANDARD => { engine: "oracle-se2", license: "li", multiaz: false, sizeflex: false },
59
+ ORACLE_SE2_MULTIAZ => { engine: "oracle-se2", license: "li", multiaz: true, sizeflex: false },
60
+ ORACLE_SE2_BYOL_STANDARD => { engine: "oracle-se2", license: "byol", multiaz: false, sizeflex: true },
61
+ ORACLE_SE2_BYOL_MULTIAZ => { engine: "oracle-se2", license: "byol", multiaz: true, sizeflex: true },
62
+ ORACLE_SE_BYOL_STANDARD => { engine: "oracle-se", license: "byol", multiaz: false, sizeflex: true },
63
+ ORACLE_SE_BYOL_MULTIAZ => { engine: "oracle-se", license: "byol", multiaz: true, sizeflex: true },
64
+ ORACLE_EE_BYOL_STANDARD => { engine: "oracle-ee", license: "byol", multiaz: false, sizeflex: true },
65
+ ORACLE_EE_BYOL_MULTIAZ => { engine: "oracle-ee", license: "byol", multiaz: true, sizeflex: true },
66
+ SQLSERVER_EX => { engine: "sqlserver-ex", license: "li", multiaz: false, sizeflex: false },
67
+ SQLSERVER_WEB => { engine: "sqlserver-web", license: "li", multiaz: false, sizeflex: false },
68
+ SQLSERVER_SE_STANDARD => { engine: "sqlserver-se", license: "li", multiaz: false, sizeflex: false },
69
+ SQLSERVER_SE_MULTIAZ => { engine: "sqlserver-se", license: "li", multiaz: true, sizeflex: false },
70
+ SQLSERVER_SE_BYOL_STANDARD=> { engine: "sqlserver-se", license: "byol", multiaz: false, sizeflex: false },
71
+ SQLSERVER_SE_BYOL_MULTIAZ => { engine: "sqlserver-se", license: "byol", multiaz: true, sizeflex: false },
72
+ SQLSERVER_EE_STANDARD => { engine: "sqlserver-ee", license: "li", multiaz: false, sizeflex: false },
73
+ SQLSERVER_EE_MULTIAZ => { engine: "sqlserver-ee", license: "li", multiaz: true, sizeflex: false },
74
+ SQLSERVER_EE_BYOL_STANDARD=> { engine: "sqlserver-ee", license: "byol", multiaz: false, sizeflex: false },
75
+ SQLSERVER_EE_BYOL_MULTIAZ => { engine: "sqlserver-ee", license: "byol", multiaz: true, sizeflex: false },
76
+ AURORA_MYSQL => { engine: "aurora", license: "none", multiaz: true, sizeflex: true },
77
+ AURORA_POSTGRESQL => { engine: "aurora-postgresql", license: "none", multiaz: true, sizeflex: true },
78
+ MARIADB_STANDARD => { engine: "mariadb", license: "none", multiaz: false, sizeflex: true },
79
+ MARIADB_MULTIAZ => { engine: "mariadb", license: "none", multiaz: true, sizeflex: true },
80
+ }.freeze
81
+ # maps Operation to Description
82
+ @@DB_OPERATION_TO_DESCRIPTION = {
83
+ 'CreateDBInstance:0002'.freeze => MYSQL_STANDARD, # MySQL
84
+ 'CreateDBInstance:0003'.freeze => ORACLE_SE1_BYOL_STANDARD, # Oracle SE1 (BYOL)
85
+ 'CreateDBInstance:0004'.freeze => ORACLE_SE_BYOL_STANDARD, # Oracle SE (BYOL)
86
+ 'CreateDBInstance:0005'.freeze => ORACLE_EE_BYOL_STANDARD, # Oracle EE (BYOL)
87
+ 'CreateDBInstance:0006'.freeze => ORACLE_SE1_STANDARD, # Oracle SE1 (LI)
88
+ 'CreateDBInstance:0008'.freeze => SQLSERVER_SE_BYOL_STANDARD, # SQL Server SE (BYOL)
89
+ 'CreateDBInstance:0009'.freeze => SQLSERVER_EE_BYOL_STANDARD, # SQL Server EE (BYOL)
90
+ 'CreateDBInstance:0010'.freeze => SQLSERVER_EX, # SQL Server Exp (LI)
91
+ 'CreateDBInstance:0011'.freeze => SQLSERVER_WEB, # SQL Server Web (LI)
92
+ 'CreateDBInstance:0012'.freeze => SQLSERVER_SE_STANDARD, # SQL Server SE (LI)
93
+ 'CreateDBInstance:0014'.freeze => POSTGRESQL_STANDARD, # PostgreSQL
94
+ 'CreateDBInstance:0015'.freeze => SQLSERVER_EE_STANDARD, # SQL Server EE (LI)
95
+ 'CreateDBInstance:0016'.freeze => AURORA_MYSQL, # Aurora MySQL
96
+ 'CreateDBInstance:0018'.freeze => MARIADB_STANDARD, # MariaDB
97
+ 'CreateDBInstance:0019'.freeze => ORACLE_SE2_BYOL_STANDARD, # Oracle SE2 (BYOL)
98
+ 'CreateDBInstance:0020'.freeze => ORACLE_SE2_STANDARD, # Oracle SE2 (LI)
99
+ 'CreateDBInstance:0021'.freeze => AURORA_POSTGRESQL, # Aurora PostgreSQL
100
+ }.freeze
101
+
16
102
  @@Database_Name_Lookup = {
17
- 'mysql_standard' => 'MySQL Community Edition',
18
- 'mysql_multiaz' => 'MySQL Community Edition (Multi-AZ)',
19
- 'postgresql_standard' => 'PostgreSql Community Edition(Beta)',
20
- 'postgresql_multiaz' => 'PostgreSql Community Edition(Beta) (Multi-AZ)',
21
- 'oracle_se1_standard' => 'Oracle Database Standard Edition One',
22
- 'oracle_se1_multiaz' => 'Oracle Database Standard Edition One (Multi-AZ)',
23
- 'oracle_se1_byol' => 'Oracle Database Standard Edition One (BYOL)',
24
- 'oracle_se1_byol_multiaz' => 'Oracle Database Standard Edition One (BYOL Multi-AZ)',
25
- 'oracle_se_byol' => 'Oracle Database Standard Edition (BYOL)',
26
- 'oracle_se_byol_multiaz' => 'Oracle Database Standard Edition (BYOL Multi-AZ)',
27
- 'oracle_ee_byol' => 'Oracle Database Enterprise Edition (BYOL)',
28
- 'oracle_ee_byol_multiaz' => 'Oracle Database Enterprise Edition (BYOL Multi-AZ)',
29
- 'sqlserver_ex' => 'Microsoft SQL Server Express Edition',
30
- 'sqlserver_web' => 'Microsoft SQL Server Web Edition',
31
- 'sqlserver_se_standard' => 'Microsoft SQL Server Standard Edition',
32
- 'sqlserver_se_multiaz' => 'Microsoft SQL Server Standard Edition (Multi-AZ)',
33
- 'sqlserver_se_byol' => 'Microsoft SQL Server Standard Edition (BYOL)',
34
- 'sqlserver_se_byol_multiaz' => 'Microsoft SQL Server Standard Edition (BYOL Multi-AZ)',
35
- 'sqlserver_ee_standard' => 'Microsoft SQL Server Enterprise Edition',
36
- 'sqlserver_ee_multiaz' => 'Microsoft SQL Server Enterprise Edition (Multi-AZ)',
37
- 'sqlserver_ee_byol' => 'Microsoft SQL Server Enterprise Edition (BYOL)',
38
- 'sqlserver_ee_byol_multiaz' => 'Microsoft SQL Server Enterprise Edition (BYOL Multi-AZ)',
39
- 'aurora_standard' => 'Amazon Aurora',
40
- 'mariadb_standard' => 'MariaDB',
41
- 'mariadb_multiaz' => 'MariaDB (Multi-AZ)',
42
-
43
- 'oracle_se2_standard' => 'Oracle Database Standard Edition Two',
44
- 'oracle_se2_multiaz' => 'Oracle Database Standard Edition Two (Multi-AZ)',
103
+ 'mysql_standard'.freeze => MYSQL_STANDARD,
104
+ 'mysql_multiaz'.freeze => MYSQL_MULTIAZ,
105
+ 'postgresql_standard'.freeze => POSTGRESQL_STANDARD,
106
+ 'postgresql_multiaz'.freeze => POSTGRESQL_MULTIAZ,
107
+ 'oracle_se1_standard'.freeze => ORACLE_SE1_STANDARD,
108
+ 'oracle_se1_multiaz'.freeze => ORACLE_SE1_MULTIAZ,
109
+ 'oracle_se1_byol'.freeze => ORACLE_SE1_BYOL_STANDARD,
110
+ 'oracle_se1_byol_multiaz'.freeze => ORACLE_SE1_BYOL_MULTIAZ,
111
+ 'oracle_se_byol'.freeze => ORACLE_SE_BYOL_STANDARD,
112
+ 'oracle_se_byol_multiaz'.freeze => ORACLE_SE_BYOL_MULTIAZ,
113
+ 'oracle_ee_byol'.freeze => ORACLE_EE_BYOL_STANDARD,
114
+ 'oracle_ee_byol_multiaz'.freeze => ORACLE_EE_BYOL_MULTIAZ,
115
+ 'sqlserver_ex'.freeze => SQLSERVER_EX,
116
+ 'sqlserver_web'.freeze => SQLSERVER_WEB,
117
+ 'sqlserver_se_standard'.freeze => SQLSERVER_SE_STANDARD,
118
+ 'sqlserver_se_multiaz'.freeze => SQLSERVER_SE_MULTIAZ,
119
+ 'sqlserver_se_byol'.freeze => SQLSERVER_SE_BYOL_STANDARD,
120
+ 'sqlserver_se_byol_multiaz'.freeze => SQLSERVER_SE_BYOL_MULTIAZ,
121
+ 'sqlserver_ee_standard'.freeze => SQLSERVER_EE_STANDARD,
122
+ 'sqlserver_ee_multiaz'.freeze => SQLSERVER_EE_MULTIAZ,
123
+ 'sqlserver_ee_byol'.freeze => SQLSERVER_EE_BYOL_STANDARD,
124
+ 'sqlserver_ee_byol_multiaz'.freeze => SQLSERVER_EE_BYOL_MULTIAZ,
125
+ 'aurora_standard'.freeze => AURORA_MYSQL,
126
+ 'aurora_postgresql_standard'.freeze=> AURORA_POSTGRESQL,
127
+ 'mariadb_standard'.freeze => MARIADB_STANDARD,
128
+ 'mariadb_multiaz'.freeze => MARIADB_MULTIAZ,
129
+
130
+ 'oracle_se2_standard'.freeze => ORACLE_SE2_STANDARD,
131
+ 'oracle_se2_multiaz'.freeze => ORACLE_SE2_MULTIAZ,
45
132
  # Oracle SE2 BYOL prices are copied from Enterprise BYOL prices and not collected
46
133
  # (so no need to add rds-price-list.rb)
47
- 'oracle_se2_byol' => 'Oracle Database Standard Edition Two (BYOL)',
48
- 'oracle_se2_byol_multiaz' => 'Oracle Database Standard Edition Two (BYOL Multi-AZ)',
134
+ 'oracle_se2_byol'.freeze => ORACLE_SE2_BYOL_STANDARD,
135
+ 'oracle_se2_byol_multiaz'.freeze => ORACLE_SE2_BYOL_MULTIAZ,
49
136
  }
50
137
 
51
138
  @@Display_Name_To_Qualified_Database_Name = @@Database_Name_Lookup.invert
52
139
 
53
140
  @@ProductDescription = {
54
- 'mysql' => 'mysql_standard',
55
- 'mysql_multiaz' => 'mysql_multiaz',
56
- 'postgres' => 'postgresql_standard',
57
- 'postgres_multiaz' => 'postgresql_multiaz',
58
- 'postgresql' => 'postgresql_standard',
59
- 'postgresql_multiaz' => 'postgresql_multiaz',
60
- 'oracle-se(byol)' => 'oracle_se_byol',
61
- 'oracle-se(byol)_multiaz' => 'oracle_se_byol_multiaz',
62
- 'oracle-ee(byol)' => 'oracle_ee_byol',
63
- 'oracle-ee(byol)_multiaz' => 'oracle_ee_byol_multiaz',
64
- 'oracle-se1(li)' => 'oracle_se1_standard',
65
- 'oracle-se1(li)_multiaz' => 'oracle_se1_multiaz',
66
- 'oracle-se1(byol)' => 'oracle_se1_byol',
67
- 'oracle-se1(byol)_multiaz' => 'oracle_se1_byol_multiaz',
68
- 'oracle-se2(li)' => 'oracle_se2_standard',
69
- 'oracle-se2(li)_multiaz' => 'oracle_se2_multiaz',
70
- 'oracle-se2(byol)' => 'oracle_se2_byol',
71
- 'oracle-se2(byol)_multiaz' => 'oracle_se2_byol_multiaz',
72
- 'sqlserver-ee(byol)' => 'sqlserver_ee_byol',
73
- 'sqlserver-ee(byol)_multiaz' => 'sqlserver_ee_byol_multiaz',
74
- 'sqlserver-ee(li)' => 'sqlserver_ee_standard',
75
- 'sqlserver-ee(li)_multiaz' => 'sqlserver_ee_multiaz',
76
- 'sqlserver-ex(li)' => 'sqlserver_ex',
77
- 'sqlserver-se(byol)' => 'sqlserver_se_byol',
78
- 'sqlserver-se(byol)_multiaz' => 'sqlserver_se_byol_multiaz',
79
- 'sqlserver-se(li)' => 'sqlserver_se_standard',
80
- 'sqlserver-se(li)_multiaz' => 'sqlserver_se_multiaz',
81
- 'sqlserver-web(li)' => 'sqlserver_web',
82
- 'aurora' => 'aurora_standard',
83
- 'mariadb' => 'mariadb_standard',
84
- 'mariadb_multiaz' => 'mariadb_multiaz',
141
+ 'mysql'.freeze => 'mysql_standard'.freeze,
142
+ 'mysql_multiaz'.freeze => 'mysql_multiaz'.freeze,
143
+ 'postgres'.freeze => 'postgresql_standard'.freeze,
144
+ 'postgres_multiaz'.freeze => 'postgresql_multiaz'.freeze,
145
+ 'postgresql'.freeze => 'postgresql_standard'.freeze,
146
+ 'postgresql_multiaz'.freeze => 'postgresql_multiaz'.freeze,
147
+ 'oracle-se(byol)'.freeze => 'oracle_se_byol'.freeze,
148
+ 'oracle-se(byol)_multiaz'.freeze => 'oracle_se_byol_multiaz'.freeze,
149
+ 'oracle-ee(byol)'.freeze => 'oracle_ee_byol'.freeze,
150
+ 'oracle-ee(byol)_multiaz'.freeze => 'oracle_ee_byol_multiaz'.freeze,
151
+ 'oracle-se1(li)'.freeze => 'oracle_se1_standard'.freeze,
152
+ 'oracle-se1(li)_multiaz'.freeze => 'oracle_se1_multiaz'.freeze,
153
+ 'oracle-se1(byol)'.freeze => 'oracle_se1_byol'.freeze,
154
+ 'oracle-se1(byol)_multiaz'.freeze => 'oracle_se1_byol_multiaz'.freeze,
155
+ 'oracle-se2(li)'.freeze => 'oracle_se2_standard'.freeze,
156
+ 'oracle-se2(li)_multiaz'.freeze => 'oracle_se2_multiaz'.freeze,
157
+ 'oracle-se2(byol)'.freeze => 'oracle_se2_byol'.freeze,
158
+ 'oracle-se2(byol)_multiaz'.freeze => 'oracle_se2_byol_multiaz'.freeze,
159
+ 'sqlserver-ee(byol)'.freeze => 'sqlserver_ee_byol'.freeze,
160
+ 'sqlserver-ee(byol)_multiaz'.freeze => 'sqlserver_ee_byol_multiaz'.freeze,
161
+ 'sqlserver-ee(li)'.freeze => 'sqlserver_ee_standard'.freeze,
162
+ 'sqlserver-ee(li)_multiaz'.freeze => 'sqlserver_ee_multiaz'.freeze,
163
+ 'sqlserver-ex(li)'.freeze => 'sqlserver_ex'.freeze,
164
+ 'sqlserver-se(byol)'.freeze => 'sqlserver_se_byol'.freeze,
165
+ 'sqlserver-se(byol)_multiaz'.freeze => 'sqlserver_se_byol_multiaz'.freeze,
166
+ 'sqlserver-se(li)'.freeze => 'sqlserver_se_standard'.freeze,
167
+ 'sqlserver-se(li)_multiaz'.freeze => 'sqlserver_se_multiaz'.freeze,
168
+ 'sqlserver-web(li)'.freeze => 'sqlserver_web'.freeze,
169
+ 'aurora'.freeze => 'aurora_standard'.freeze,
170
+ 'aurora-postgresql'.freeze => 'aurora_postgresql_standard'.freeze,
171
+ 'mariadb'.freeze => 'mariadb_standard'.freeze,
172
+ 'mariadb_multiaz'.freeze => 'mariadb_multiaz'.freeze,
85
173
  }
86
174
 
87
175
  @@DB_Deploy_Types = {
@@ -93,7 +181,8 @@ module AwsPricing
93
181
  :oracle_ee => [:byol, :byol_multiaz],
94
182
  :sqlserver_se => [:standard, :multiaz, :byol, :byol_multiaz],
95
183
  :sqlserver_ee => [:byol, :byol_multiaz, :standard, :multiaz],
96
- :aurora => [:standard],
184
+ :aurora => [:standard, :multiaz], # checking to see distinguished standard/multiaz
185
+ :aurora_postgresql => [:standard, :multiaz],
97
186
  :mariadb => [:standard, :multiaz],
98
187
  }
99
188
 
@@ -103,7 +192,7 @@ module AwsPricing
103
192
 
104
193
  def self.get_database_name
105
194
  [:mysql, :postgresql, :oracle_se1, :oracle_se, :oracle_ee, :sqlserver_ex, :sqlserver_web,
106
- :sqlserver_se, :sqlserver_ee, :aurora, :mariadb,
195
+ :sqlserver_se, :sqlserver_ee, :aurora, :aurora_postgresql, :mariadb,
107
196
  :oracle_se2 # oracle_se2 license included prices are collected, and BYOL prices are copied from oracle_se
108
197
  ]
109
198
  end
@@ -143,7 +232,63 @@ module AwsPricing
143
232
  database_name.include? 'byol'
144
233
  end
145
234
 
146
- def display_name
235
+ # example: database_sf?('MySQL Community Edition (Multi-AZ)') returns true
236
+ # Returns BOOL if database string is RDS SF
237
+ # params:
238
+ # - display_name[String]: fully qualified database string
239
+ def self.database_sf?(display_name)
240
+ db = @@DB_ENGINE_MAP[display_name]
241
+ return false unless db # unknown db is presumed non sf
242
+ db[:sizeflex]
243
+ end
244
+ # example: operation_sf?('CreateDBInstance:0016',true) returns true
245
+ # Returns BOOL if operation string is RDS SF
246
+ # params:
247
+ # - operation_name[String]: fully qualified operation string
248
+ # - multiaz[bool]: if operation is multi-az (api for consistency purposes)
249
+ def self.operation_sf?(operation_name,multiaz=false)
250
+ display_name = @@DB_OPERATION_TO_DESCRIPTION[operation_name]
251
+ return false unless display_name # unknown operation is presumed non sf
252
+ self.database_sf?(display_name)
253
+ end
254
+
255
+ # example: database_multiaz?('MySQL Community Edition (Multi-AZ)') returns true
256
+ # Returns BOOL if database string is RDS SF
257
+ # params:
258
+ # - operation_name[String]: fully qualified operation string
259
+ def self.database_multiaz?(display_name)
260
+ db = @@DB_ENGINE_MAP[display_name]
261
+ return false unless db # unknown db is presumed non sf
262
+ db[:multiaz]
263
+ end
264
+ # self.operation_multiaz? not possible since az not encoded in `operation`
265
+
266
+ # example: database_nf('MySQL Community Edition (Multi-AZ)') returns 2
267
+ # Returns INT (nf factor) for given database string
268
+ # params:
269
+ # - operation_name[String]: fully qualified operation string
270
+ def self.database_nf(display_name)
271
+ db = @@DB_ENGINE_MAP[display_name]
272
+ return 1 unless db # unknown db is presumed non sf
273
+ return 2 if db[:sizeflex] && db[:multiaz]
274
+
275
+ 1
276
+ end
277
+ # example: database_nf('MySQL Community Edition (Multi-AZ)',true) returns 2
278
+ # i.e. inst_nf = RDS_NF[inst_size] * operation_nf(operation_name,multiaz)
279
+ # Returns INT (nf factor) for given operation string and multiaz
280
+ # params:
281
+ # - operation_name[String]: fully qualified operation string
282
+ # - multiaz[bool]: if operation is multi-az
283
+ def self.operation_nf(operation_name, multiaz)
284
+ display_name = @@DB_OPERATION_TO_DESCRIPTION[operation_name]
285
+ return 1 unless display_name # unknown operation is presumed non sf
286
+ return 2 if self.operation_sf?(operation_name,multiaz) && multiaz
287
+
288
+ 1
289
+ end
290
+
291
+ def display_name
147
292
  self.class.display_name(name)
148
293
  end
149
294
  end
@@ -8,5 +8,5 @@
8
8
  # Home:: http://github.com/CloudHealth/amazon-pricing
9
9
  #++
10
10
  module AwsPricing
11
- VERSION = '0.1.98'
11
+ VERSION = '0.1.99'
12
12
  end
@@ -31,6 +31,68 @@ describe AwsPricing::RdsPriceList do
31
31
  end
32
32
  end
33
33
 
34
+ describe 'rds_sf_database' do
35
+ it "verifies RDS SF api for database name" do
36
+ # tests database display_name APIs {database_sf?, database_multiaz?, database_nf},
37
+ # and also adds indirect testing of #db_mapping too
38
+ product_name = 'oracle-se2(byol)' # known RDS SF multiaz example: 'Oracle Database Standard Edition Two (BYOL Multi-AZ)'
39
+ multiaz = true
40
+ display_name = AwsPricing::DatabaseType.db_mapping(product_name, multiaz)
41
+ puts "rds_sf_database-1: display_name:#{display_name}"
42
+ #
43
+ expect(AwsPricing::DatabaseType.database_sf?(display_name)).to be true
44
+ expect(AwsPricing::DatabaseType.database_multiaz?(display_name)).to be true
45
+ expect(AwsPricing::DatabaseType.database_nf(display_name)).to eq(2)
46
+
47
+ product_name = 'sqlserver-se(byol)' # known NOT RDS SF example: 'Microsoft SQL Server Standard Edition (BYOL)'
48
+ multiaz = false
49
+ display_name = AwsPricing::DatabaseType.db_mapping(product_name, multiaz)
50
+ puts "rds_sf_database-2: display_name:#{display_name}"
51
+ #
52
+ expect(AwsPricing::DatabaseType.database_sf?(display_name)).to be false
53
+ expect(AwsPricing::DatabaseType.database_multiaz?(display_name)).to be false
54
+ expect(AwsPricing::DatabaseType.database_nf(display_name)).to eq(1)
55
+
56
+ display_name = 'NuoDB' # unknown db, returns default non RDS SF values
57
+ #
58
+ expect(AwsPricing::DatabaseType.database_sf?(display_name)).to be false
59
+ expect(AwsPricing::DatabaseType.database_multiaz?(display_name)).to be false
60
+ expect(AwsPricing::DatabaseType.database_nf(display_name)).to eq(1)
61
+ end
62
+ end
63
+
64
+ describe 'rds_sf_operation' do
65
+ it "verifies RDS SF api for operation name" do
66
+ # tests operation name APIs {operation_sf?, operation_nf}
67
+ operation_name = 'CreateDBInstance:0002' # known RDS SF: 'MySQL Community Edition (Multi-AZ)'
68
+ multiaz = true
69
+ #
70
+ expect(AwsPricing::DatabaseType.operation_sf?(operation_name, multiaz)).to be true
71
+ expect(AwsPricing::DatabaseType.operation_nf(operation_name, multiaz)).to eq(2)
72
+ multiaz = false
73
+ expect(AwsPricing::DatabaseType.operation_sf?(operation_name, multiaz)).to be true
74
+ expect(AwsPricing::DatabaseType.operation_nf(operation_name, multiaz)).to eq(1) #multiaz *not* encoded in operation_name
75
+
76
+ operation_name = 'CreateDBInstance:0008' # known non RDS SF: 'Microsoft SQL Server Standard Edition (BYOL)'
77
+ multiaz = false
78
+ #
79
+ expect(AwsPricing::DatabaseType.operation_sf?(operation_name, multiaz)).to be false
80
+ expect(AwsPricing::DatabaseType.operation_nf(operation_name, multiaz)).to eq(1)
81
+ multiaz = true
82
+ expect(AwsPricing::DatabaseType.operation_sf?(operation_name, multiaz)).to be false
83
+ expect(AwsPricing::DatabaseType.operation_nf(operation_name, multiaz)).to eq(1) #multiaz *not* encoded in operation_name
84
+
85
+ operation_name = 'CreateDBInstance:9999' # unknown operation, returns default non RDS SF values
86
+ multiaz = false
87
+ #
88
+ expect(AwsPricing::DatabaseType.operation_sf?(operation_name, multiaz)).to be false
89
+ expect(AwsPricing::DatabaseType.operation_nf(operation_name,multiaz)).to eq(1)
90
+ multiaz = true
91
+ expect(AwsPricing::DatabaseType.operation_sf?(operation_name, multiaz)).to be false
92
+ expect(AwsPricing::DatabaseType.operation_nf(operation_name,multiaz)).to eq(1) #multiaz *not* encoded in operation_name
93
+ end
94
+ end
95
+
34
96
  describe 'get_breakeven_months' do
35
97
  it "test_fetch_all_breakeven_months" do
36
98
  @pricing.regions.each do |region|
@@ -63,4 +125,4 @@ describe AwsPricing::RdsPriceList do
63
125
  end
64
126
  end
65
127
  end
66
- end
128
+ 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.98
4
+ version: 0.1.99
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-09-19 00:00:00.000000000 Z
11
+ date: 2017-10-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Ruby library for retrieving pricing for Amazon Web Services
14
14
  email: