Class: AwsPricing::DatabaseType

Inherits:
CategoryType show all
Defined in:
lib/amazon-pricing/definitions/database-type.rb

Constant Summary collapse

MYSQL_STANDARD =

Display Name, as seen in DBR/CUR

'MySQL Community Edition'.freeze
MYSQL_MULTIAZ =
'MySQL Community Edition (Multi-AZ)'.freeze
POSTGRESQL_STANDARD =
'PostgreSql Community Edition(Beta)'.freeze
POSTGRESQL_MULTIAZ =
'PostgreSql Community Edition(Beta) (Multi-AZ)'.freeze
ORACLE_SE1_STANDARD =
'Oracle Database Standard Edition One'.freeze
ORACLE_SE1_MULTIAZ =
'Oracle Database Standard Edition One (Multi-AZ)'.freeze
ORACLE_SE1_BYOL_STANDARD =
'Oracle Database Standard Edition One (BYOL)'.freeze
ORACLE_SE1_BYOL_MULTIAZ =
'Oracle Database Standard Edition One (BYOL Multi-AZ)'.freeze
ORACLE_SE2_STANDARD =
'Oracle Database Standard Edition Two'.freeze
ORACLE_SE2_MULTIAZ =
'Oracle Database Standard Edition Two (Multi-AZ)'.freeze
ORACLE_SE2_BYOL_STANDARD =
'Oracle Database Standard Edition Two (BYOL)'.freeze
ORACLE_SE2_BYOL_MULTIAZ =
'Oracle Database Standard Edition Two (BYOL Multi-AZ)'.freeze
ORACLE_SE_BYOL_STANDARD =
'Oracle Database Standard Edition (BYOL)'.freeze
ORACLE_SE_BYOL_MULTIAZ =
'Oracle Database Standard Edition (BYOL Multi-AZ)'.freeze
ORACLE_EE_BYOL_STANDARD =
'Oracle Database Enterprise Edition (BYOL)'.freeze
ORACLE_EE_BYOL_MULTIAZ =
'Oracle Database Enterprise Edition (BYOL Multi-AZ)'.freeze
SQLSERVER_EX =
'Microsoft SQL Server Express Edition'.freeze
SQLSERVER_WEB =
'Microsoft SQL Server Web Edition'.freeze
SQLSERVER_SE_STANDARD =
'Microsoft SQL Server Standard Edition'.freeze
SQLSERVER_SE_MULTIAZ =
'Microsoft SQL Server Standard Edition (Multi-AZ)'.freeze
SQLSERVER_SE_BYOL_STANDARD =
'Microsoft SQL Server Standard Edition (BYOL)'.freeze
SQLSERVER_SE_BYOL_MULTIAZ =
'Microsoft SQL Server Standard Edition (BYOL Multi-AZ)'.freeze
SQLSERVER_EE_STANDARD =
'Microsoft SQL Server Enterprise Edition'.freeze
SQLSERVER_EE_MULTIAZ =
'Microsoft SQL Server Enterprise Edition (Multi-AZ)'.freeze
SQLSERVER_EE_BYOL_STANDARD =
'Microsoft SQL Server Enterprise Edition (BYOL)'.freeze
SQLSERVER_EE_BYOL_MULTIAZ =
'Microsoft SQL Server Enterprise Edition (BYOL Multi-AZ)'
AURORA_MYSQL =

multiaz not distinguished, MySQL not distinguished

'Amazon Aurora'.freeze
AURORA_POSTGRESQL =

multiaz not distinguished

'Amazon Aurora PostgreSQL'.freeze
MARIADB_STANDARD =
'MariaDB'.freeze
MARIADB_MULTIAZ =
'MariaDB (Multi-AZ)'.freeze
NEPTUNE_STANDARD =
'Amazon Neptune'.freeze
NEPTUNE_MULTIAZ =
'Amazon Neptune (Multi-AZ)'.freeze
@@DB_ENGINE_MAP =

maps RDS description to [ engine, license, multiaz, sizeflex ]

{
    MYSQL_STANDARD            => { engine: "mysql",         license: "none", multiaz: false, sizeflex: true },
    MYSQL_MULTIAZ             => { engine: "mysql",         license: "none", multiaz: true,  sizeflex: true },
    POSTGRESQL_STANDARD       => { engine: "postgresql",    license: "none", multiaz: false, sizeflex: true },
    POSTGRESQL_MULTIAZ        => { engine: "postgresql",    license: "none", multiaz: true,  sizeflex: true },
    ORACLE_SE1_STANDARD       => { engine: "oracle-se1",    license: "li",   multiaz: false, sizeflex: false },
    ORACLE_SE1_MULTIAZ        => { engine: "oracle-se1",    license: "li",   multiaz: true,  sizeflex: false },
    ORACLE_SE1_BYOL_STANDARD  => { engine: "oracle-se1",    license: "byol", multiaz: false, sizeflex: true },
    ORACLE_SE1_BYOL_MULTIAZ   => { engine: "oracle-se1",    license: "byol", multiaz: true,  sizeflex: true },
    ORACLE_SE2_STANDARD       => { engine: "oracle-se2",    license: "li",   multiaz: false, sizeflex: false },
    ORACLE_SE2_MULTIAZ        => { engine: "oracle-se2",    license: "li",   multiaz: true,  sizeflex: false },
    ORACLE_SE2_BYOL_STANDARD  => { engine: "oracle-se2",    license: "byol", multiaz: false, sizeflex: true },
    ORACLE_SE2_BYOL_MULTIAZ   => { engine: "oracle-se2",    license: "byol", multiaz: true,  sizeflex: true },
    ORACLE_SE_BYOL_STANDARD   => { engine: "oracle-se",     license: "byol", multiaz: false, sizeflex: true },
    ORACLE_SE_BYOL_MULTIAZ    => { engine: "oracle-se",     license: "byol", multiaz: true,  sizeflex: true },
    ORACLE_EE_BYOL_STANDARD   => { engine: "oracle-ee",     license: "byol", multiaz: false, sizeflex: true },
    ORACLE_EE_BYOL_MULTIAZ    => { engine: "oracle-ee",     license: "byol", multiaz: true,  sizeflex: true },
    SQLSERVER_EX              => { engine: "sqlserver-ex",  license: "li",   multiaz: false, sizeflex: false },
    SQLSERVER_WEB             => { engine: "sqlserver-web", license: "li",   multiaz: false, sizeflex: false },
    SQLSERVER_SE_STANDARD     => { engine: "sqlserver-se",  license: "li",   multiaz: false, sizeflex: false },
    SQLSERVER_SE_MULTIAZ      => { engine: "sqlserver-se",  license: "li",   multiaz: true,  sizeflex: false },
    SQLSERVER_SE_BYOL_STANDARD=> { engine: "sqlserver-se",  license: "byol", multiaz: false, sizeflex: false },
    SQLSERVER_SE_BYOL_MULTIAZ => { engine: "sqlserver-se",  license: "byol", multiaz: true,  sizeflex: false },
    SQLSERVER_EE_STANDARD     => { engine: "sqlserver-ee",  license: "li",   multiaz: false, sizeflex: false },
    SQLSERVER_EE_MULTIAZ      => { engine: "sqlserver-ee",  license: "li",   multiaz: true,  sizeflex: false },
    SQLSERVER_EE_BYOL_STANDARD=> { engine: "sqlserver-ee",  license: "byol", multiaz: false, sizeflex: false },
    SQLSERVER_EE_BYOL_MULTIAZ => { engine: "sqlserver-ee",  license: "byol", multiaz: true,  sizeflex: false },
    AURORA_MYSQL              => { engine: "aurora",        license: "none", multiaz: true,  sizeflex: true },
    AURORA_POSTGRESQL         => { engine: "aurora-postgresql", license: "none", multiaz: true, sizeflex: true },
    MARIADB_STANDARD          => { engine: "mariadb",       license: "none", multiaz: false, sizeflex: true },
    MARIADB_MULTIAZ           => { engine: "mariadb",       license: "none", multiaz: true,  sizeflex: true },
    # Neptune isn't SF, since it doesn't support RI's (yet)
    NEPTUNE_STANDARD          => { engine: "neptune",       license: "none", multiaz: false, sizeflex: false },
    NEPTUNE_MULTIAZ           => { engine: "neptune",       license: "none", multiaz: true,  sizeflex: false },
}.freeze
@@DB_OPERATION_TO_DESCRIPTION =

maps Operation to Description

{
    'CreateDBInstance:0002'.freeze => MYSQL_STANDARD,  # MySQL
    'CreateDBInstance:0003'.freeze => ORACLE_SE1_BYOL_STANDARD,  # Oracle SE1 (BYOL)
    'CreateDBInstance:0004'.freeze => ORACLE_SE_BYOL_STANDARD,  # Oracle SE (BYOL)
    'CreateDBInstance:0005'.freeze => ORACLE_EE_BYOL_STANDARD,  # Oracle EE (BYOL)
    'CreateDBInstance:0006'.freeze => ORACLE_SE1_STANDARD, # Oracle SE1 (LI)
    'CreateDBInstance:0008'.freeze => SQLSERVER_SE_BYOL_STANDARD, # SQL Server SE (BYOL)
    'CreateDBInstance:0009'.freeze => SQLSERVER_EE_BYOL_STANDARD, # SQL Server EE (BYOL)
    'CreateDBInstance:0010'.freeze => SQLSERVER_EX, # SQL Server Exp (LI)
    'CreateDBInstance:0011'.freeze => SQLSERVER_WEB, # SQL Server Web (LI)
    'CreateDBInstance:0012'.freeze => SQLSERVER_SE_STANDARD, # SQL Server SE (LI)
    'CreateDBInstance:0014'.freeze => POSTGRESQL_STANDARD,  # PostgreSQL
    'CreateDBInstance:0015'.freeze => SQLSERVER_EE_STANDARD, # SQL Server EE (LI)
    'CreateDBInstance:0016'.freeze => AURORA_MYSQL,  # Aurora MySQL
    'CreateDBInstance:0018'.freeze => MARIADB_STANDARD,  # MariaDB
    'CreateDBInstance:0019'.freeze => ORACLE_SE2_BYOL_STANDARD,  # Oracle SE2 (BYOL)
    'CreateDBInstance:0020'.freeze => ORACLE_SE2_STANDARD, # Oracle SE2 (LI)
    'CreateDBInstance:0021'.freeze => AURORA_POSTGRESQL,  # Aurora PostgreSQL
    'CreateDBInstance:0022'.freeze => NEPTUNE_STANDARD,  # Neptune
}.freeze
@@Database_Name_Lookup =
{
  'mysql_standard'.freeze          => MYSQL_STANDARD,
  'mysql_multiaz'.freeze           => MYSQL_MULTIAZ,
  'postgresql_standard'.freeze     => POSTGRESQL_STANDARD,
  'postgresql_multiaz'.freeze      => POSTGRESQL_MULTIAZ,
  'oracle_se1_standard'.freeze     => ORACLE_SE1_STANDARD,
  'oracle_se1_multiaz'.freeze      => ORACLE_SE1_MULTIAZ,
  'oracle_se1_byol'.freeze         => ORACLE_SE1_BYOL_STANDARD,
  'oracle_se1_byol_multiaz'.freeze => ORACLE_SE1_BYOL_MULTIAZ,
  'oracle_se_byol'.freeze          => ORACLE_SE_BYOL_STANDARD,
  'oracle_se_byol_multiaz'.freeze  => ORACLE_SE_BYOL_MULTIAZ,
  'oracle_ee_byol'.freeze          => ORACLE_EE_BYOL_STANDARD,
  'oracle_ee_byol_multiaz'.freeze  => ORACLE_EE_BYOL_MULTIAZ,
  'sqlserver_ex'.freeze            => SQLSERVER_EX,
  'sqlserver_web'.freeze           => SQLSERVER_WEB,
  'sqlserver_se_standard'.freeze   => SQLSERVER_SE_STANDARD,
  'sqlserver_se_multiaz'.freeze    => SQLSERVER_SE_MULTIAZ,
  'sqlserver_se_byol'.freeze       => SQLSERVER_SE_BYOL_STANDARD,
  'sqlserver_se_byol_multiaz'.freeze => SQLSERVER_SE_BYOL_MULTIAZ,
  'sqlserver_ee_standard'.freeze     => SQLSERVER_EE_STANDARD,
  'sqlserver_ee_multiaz'.freeze      => SQLSERVER_EE_MULTIAZ,
  'sqlserver_ee_byol'.freeze         => SQLSERVER_EE_BYOL_STANDARD,
  'sqlserver_ee_byol_multiaz'.freeze => SQLSERVER_EE_BYOL_MULTIAZ,
  'aurora_standard'.freeze           => AURORA_MYSQL,
  'aurora_postgresql_standard'.freeze=> AURORA_POSTGRESQL,
  'mariadb_standard'.freeze        => MARIADB_STANDARD,
  'mariadb_multiaz'.freeze         => MARIADB_MULTIAZ,
  'neptune_standard'.freeze        => NEPTUNE_STANDARD,
  'neptune_multiaz'.freeze         => NEPTUNE_MULTIAZ,
   'oracle_se2_standard'.freeze     => ORACLE_SE2_STANDARD,
  'oracle_se2_multiaz'.freeze      => ORACLE_SE2_MULTIAZ,
  # Oracle SE2 BYOL prices are copied from Enterprise BYOL prices and not collected
  # (so no need to add rds-price-list.rb)
  'oracle_se2_byol'.freeze         => ORACLE_SE2_BYOL_STANDARD,
  'oracle_se2_byol_multiaz'.freeze => ORACLE_SE2_BYOL_MULTIAZ,
}
@@Display_Name_To_Qualified_Database_Name =
@@Database_Name_Lookup.invert
@@ProductDescription =
{
  'mysql'.freeze                    => 'mysql_standard'.freeze,
  'mysql_multiaz'.freeze            => 'mysql_multiaz'.freeze,
  'postgres'.freeze                 => 'postgresql_standard'.freeze,
  'postgres_multiaz'.freeze         => 'postgresql_multiaz'.freeze,
  'postgresql'.freeze               => 'postgresql_standard'.freeze,
  'postgresql_multiaz'.freeze       => 'postgresql_multiaz'.freeze,
  'oracle-se(byol)'.freeze          => 'oracle_se_byol'.freeze,
  'oracle-se(byol)_multiaz'.freeze  => 'oracle_se_byol_multiaz'.freeze,
  'oracle-ee(byol)'.freeze          => 'oracle_ee_byol'.freeze,
  'oracle-ee(byol)_multiaz'.freeze  => 'oracle_ee_byol_multiaz'.freeze,
  'oracle-se1(li)'.freeze           => 'oracle_se1_standard'.freeze,
  'oracle-se1(li)_multiaz'.freeze   => 'oracle_se1_multiaz'.freeze,
  'oracle-se1(byol)'.freeze         => 'oracle_se1_byol'.freeze,
  'oracle-se1(byol)_multiaz'.freeze => 'oracle_se1_byol_multiaz'.freeze,
  'oracle-se2(li)'.freeze           => 'oracle_se2_standard'.freeze,
  'oracle-se2(li)_multiaz'.freeze   => 'oracle_se2_multiaz'.freeze,
  'oracle-se2(byol)'.freeze         => 'oracle_se2_byol'.freeze,
  'oracle-se2(byol)_multiaz'.freeze => 'oracle_se2_byol_multiaz'.freeze,
  'sqlserver-ee(byol)'.freeze       => 'sqlserver_ee_byol'.freeze,
  'sqlserver-ee(byol)_multiaz'.freeze => 'sqlserver_ee_byol_multiaz'.freeze,
  'sqlserver-ee(li)'.freeze         => 'sqlserver_ee_standard'.freeze,
  'sqlserver-ee(li)_multiaz'.freeze => 'sqlserver_ee_multiaz'.freeze,
  'sqlserver-ex(li)'.freeze         => 'sqlserver_ex'.freeze,
  'sqlserver-se(byol)'.freeze       => 'sqlserver_se_byol'.freeze,
  'sqlserver-se(byol)_multiaz'.freeze => 'sqlserver_se_byol_multiaz'.freeze,
  'sqlserver-se(li)'.freeze         => 'sqlserver_se_standard'.freeze,
  'sqlserver-se(li)_multiaz'.freeze => 'sqlserver_se_multiaz'.freeze,
  'sqlserver-web(li)'.freeze        => 'sqlserver_web'.freeze,
  'aurora'.freeze                   => 'aurora_standard'.freeze,
  'aurora-postgresql'.freeze        => 'aurora_postgresql_standard'.freeze,
  'mariadb'.freeze                  => 'mariadb_standard'.freeze,
  'mariadb_multiaz'.freeze          => 'mariadb_multiaz'.freeze,
  'neptune'.freeze                  => 'neptune_standard'.freeze,
  'neptune_multiaz'.freeze          => 'neptune_multiaz'.freeze,
}
@@DB_Deploy_Types =
{
  :mysql        => [:standard, :multiaz],
  :postgresql   => [:standard, :multiaz],
  :oracle_se1   => [:standard, :multiaz, :byol, :byol_multiaz],
  :oracle_se2   => [:standard, :multiaz, :byol, :byol_multiaz],
  :oracle_se    => [:byol, :byol_multiaz],
  :oracle_ee    => [:byol, :byol_multiaz],
  :sqlserver_se => [:standard, :multiaz, :byol, :byol_multiaz],
  :sqlserver_ee => [:byol, :byol_multiaz, :standard, :multiaz],
  :aurora       => [:standard, :multiaz], # checking to see distinguished standard/multiaz
  :aurora_postgresql => [:standard, :multiaz],
  :mariadb      => [:standard, :multiaz],
  :neptune      => [:standard, :multiaz],
}

Instance Attribute Summary

Attributes inherited from CategoryType

#allupfront_prepay_1_year, #allupfront_prepay_3_year, #convertible_allupfront_prepay_1_year, #convertible_allupfront_prepay_3_year, #convertible_noupfront_price_per_hour_1_year, #convertible_noupfront_price_per_hour_3_year, #convertible_partialupfront_prepay_1_year, #convertible_partialupfront_prepay_3_year, #convertible_partialupfront_price_per_hour_1_year, #convertible_partialupfront_price_per_hour_3_year, #heavy_prepay_1_year, #heavy_prepay_3_year, #heavy_price_per_hour_1_year, #heavy_price_per_hour_3_year, #instance_type, #light_prepay_1_year, #light_prepay_3_year, #light_price_per_hour_1_year, #light_price_per_hour_3_year, #medium_prepay_1_year, #medium_prepay_3_year, #medium_price_per_hour_1_year, #medium_price_per_hour_3_year, #name, #noupfront_price_per_hour_1_year, #noupfront_price_per_hour_3_year, #ondemand_price_per_hour, #partialupfront_prepay_1_year, #partialupfront_prepay_3_year, #partialupfront_price_per_hour_1_year, #partialupfront_price_per_hour_3_year

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from CategoryType

#allupfront_effective_rate_1_year, #allupfront_effective_rate_3_year, #available?, #get_breakeven_month, #initialize, #noupfront_effective_rate_1_year, #partialupfront_effective_rate_1_year, #partialupfront_effective_rate_3_year, #prepay, #price_per_hour, #set_prepay, #set_price_per_hour

Constructor Details

This class inherits a constructor from AwsPricing::CategoryType

Class Method Details

.database_multiaz?(display_name) ⇒ Boolean

example: database_multiaz?(‘MySQL Community Edition (Multi-AZ)’) returns true Returns BOOL if database string is RDS SF params:

Returns:

  • (Boolean)


303
304
305
306
307
# File 'lib/amazon-pricing/definitions/database-type.rb', line 303

def self.database_multiaz?(display_name)
  db = @@DB_ENGINE_MAP[display_name]
  return false unless db            # unknown db is presumed non sf
  db[:multiaz]
end

.database_nf(display_name) ⇒ Object

example: database_nf(‘MySQL Community Edition (Multi-AZ)’) returns 2 Returns INT (nf factor) for given database string params:



314
315
316
317
318
319
320
# File 'lib/amazon-pricing/definitions/database-type.rb', line 314

def self.database_nf(display_name)
  db = @@DB_ENGINE_MAP[display_name]
  return 1 unless db                # unknown db is presumed non sf
  return 2 if db[:sizeflex] && db[:multiaz]

  1
end

.database_sf?(display_name) ⇒ Boolean

example: database_sf?(‘MySQL Community Edition (Multi-AZ)’) returns true Returns BOOL if database string is RDS SF params:

Returns:

  • (Boolean)


273
274
275
276
277
# File 'lib/amazon-pricing/definitions/database-type.rb', line 273

def self.database_sf?(display_name)
  db = @@DB_ENGINE_MAP[display_name]
  return false unless db            # unknown db is presumed non sf
  db[:sizeflex]
end

.database_sf_from_engine_name_and_license_type?(engine_name, is_byol) ⇒ Boolean

example: database_sf_from_engine_name_and_license_type?(‘mysql’, false) returns true Returns BOOL if database is RDS SF params:

  • engine_name: product description database name string

  • is_byol: true if the database is using a BYOL license

Returns:

  • (Boolean)


252
253
254
255
256
257
258
259
260
# File 'lib/amazon-pricing/definitions/database-type.rb', line 252

def self.database_sf_from_engine_name_and_license_type?(engine_name, is_byol)
  engine_name_sym = engine_name.gsub('-', '_').to_sym
  if @@DB_Deploy_Types[engine_name_sym] && @@DB_Deploy_Types[engine_name_sym].include?(:byol)
    product_name = is_byol ? "#{engine_name}(byol)" : "#{engine_name}(li)"
  else
    product_name = engine_name
  end
  database_sf_from_product_name?(product_name)
end

.database_sf_from_product_name?(product_name) ⇒ Boolean

example: database_sf_from_product_name?(‘oracle-ee(byol)’) returns true Returns BOOL if database is RDS SF params:

  • product_name: product description database name string including license type

Returns:

  • (Boolean)


265
266
267
268
# File 'lib/amazon-pricing/definitions/database-type.rb', line 265

def self.database_sf_from_product_name?(product_name)
  # Just look up by single-az because deployment type doesn't affect size-flex eligibility
  database_sf?(db_mapping(product_name, false))
end

.databases_sfObject

example: databases_sf() returns [MYSQL_STANDARD, … ] Returns BOOL if operation string is RDS SF params: none



291
292
293
294
295
296
297
# File 'lib/amazon-pricing/definitions/database-type.rb', line 291

def self.databases_sf
  dbs = []
  @@DB_ENGINE_MAP.each do |key,value|
    dbs << key if value[:sizeflex]
  end
  dbs
end

.db_mapping(product, is_multi_az) ⇒ Object



215
216
217
218
219
220
221
222
# File 'lib/amazon-pricing/definitions/database-type.rb', line 215

def self.db_mapping(product, is_multi_az)
  product = product.gsub(/\s+/,"")  # remove extraneous spaces, e.g. sometimes AWS adds a SP before '(byol)'
  if is_multi_az
    display_name(@@ProductDescription["#{product}_multiaz"])
  else
    display_name(@@ProductDescription["#{product}"])
 end
end

.display_name(name) ⇒ Object



200
201
202
# File 'lib/amazon-pricing/definitions/database-type.rb', line 200

def self.display_name(name)
  @@Database_Name_Lookup[name]
end

.display_name_is_byol?(display_name) ⇒ Boolean

Returns:

  • (Boolean)


242
243
244
245
# File 'lib/amazon-pricing/definitions/database-type.rb', line 242

def self.display_name_is_byol?(display_name)
  database_name = self.display_name_to_qualified_database_name(display_name)
  database_name.include? 'byol'
end

.display_name_is_multi_az?(display_name) ⇒ Boolean

Returns:

  • (Boolean)


237
238
239
240
# File 'lib/amazon-pricing/definitions/database-type.rb', line 237

def self.display_name_is_multi_az?(display_name)
  database_name = self.display_name_to_qualified_database_name(display_name)
  database_name.include? 'multiaz'
end

.display_name_to_database_name(display_name) ⇒ Object



232
233
234
235
# File 'lib/amazon-pricing/definitions/database-type.rb', line 232

def self.display_name_to_database_name(display_name)
  database_name = self.display_name_to_qualified_database_name(display_name)
  database_name.gsub('_standard', '').gsub('_multiaz', '').gsub('_byol', '')
end

.display_name_to_qualified_database_name(display_name) ⇒ Object



224
225
226
227
228
229
230
# File 'lib/amazon-pricing/definitions/database-type.rb', line 224

def self.display_name_to_qualified_database_name(display_name)
  database_name = @@Display_Name_To_Qualified_Database_Name[display_name]
  if database_name.nil?
    raise "Unknown display_name '#{display_name}'.  Valid names are #{@@Display_Name_To_Qualified_Database_Name.keys.join(', ')}"
  end
  database_name
end

.get_available_types(db) ⇒ Object



211
212
213
# File 'lib/amazon-pricing/definitions/database-type.rb', line 211

def self.get_available_types(db)
  @@DB_Deploy_Types[db]
end

.get_database_nameObject



204
205
206
207
208
209
# File 'lib/amazon-pricing/definitions/database-type.rb', line 204

def self.get_database_name
   [:mysql, :postgresql, :oracle_se1, :oracle_se, :oracle_ee, :sqlserver_ex, :sqlserver_web,
     :sqlserver_se, :sqlserver_ee, :aurora, :aurora_postgresql, :mariadb, :neptune,
     :oracle_se2 # oracle_se2 license included prices are collected, and BYOL prices are copied from oracle_se
   ]
end

.operation_nf(operation_name, multiaz) ⇒ Object

example: database_nf(‘MySQL Community Edition (Multi-AZ)’,true) returns 2 i.e. inst_nf = RDS_NF * operation_nf(operation_name,multiaz) Returns INT (nf factor) for given operation string and multiaz params:



327
328
329
330
331
332
333
# File 'lib/amazon-pricing/definitions/database-type.rb', line 327

def self.operation_nf(operation_name, multiaz)
  display_name = @@DB_OPERATION_TO_DESCRIPTION[operation_name]
  return 1 unless display_name  # unknown operation is presumed non sf
  return 2 if self.operation_sf?(operation_name,multiaz) && multiaz

  1
end

.operation_sf?(operation_name, multiaz = false) ⇒ Boolean

example: operation_sf?(‘CreateDBInstance:0016’,true) returns true Returns BOOL if operation string is RDS SF params:

  • operation_name: fully qualified operation string

  • multiaz: if operation is multi-az (api for consistency purposes)

Returns:

  • (Boolean)


283
284
285
286
287
# File 'lib/amazon-pricing/definitions/database-type.rb', line 283

def self.operation_sf?(operation_name,multiaz=false)
  display_name = @@DB_OPERATION_TO_DESCRIPTION[operation_name]
  return false unless display_name  # unknown operation is presumed non sf
  self.database_sf?(display_name)
end

Instance Method Details

#display_nameObject



335
336
337
# File 'lib/amazon-pricing/definitions/database-type.rb', line 335

def display_name
  self.class.display_name(name)
end