150 lines
3.8 KiB
Plaintext
150 lines
3.8 KiB
Plaintext
module Dalmatian
|
|
class Aurora
|
|
def initialize(cluster:, reference:)
|
|
@cluster = cluster
|
|
@reference = reference
|
|
end
|
|
|
|
attr_reader :cluster, :reference
|
|
|
|
def identifier
|
|
reference["identifier"]
|
|
end
|
|
|
|
def in_use_by
|
|
reference["in_use_by"] || []
|
|
end
|
|
|
|
def clusters_in_use
|
|
clusters_in_use = {}
|
|
cluster_environments.each do |env_name, _env_config|
|
|
clusters_in_use[env_name] = []
|
|
services.each do |service|
|
|
in_use_by.each do |service_name|
|
|
next if service.name != service_name
|
|
clusters_in_use[env_name] << if service.launch_on_cluster.empty?
|
|
"default_dalmatian_ecs_cluster"
|
|
else
|
|
service.launch_on_cluster
|
|
end
|
|
end
|
|
end
|
|
if in_use_by.empty?
|
|
clusters_in_use[env_name] << "default_dalmatian_ecs_cluster" ## fails SimpleCov
|
|
end
|
|
clusters_in_use[env_name] = clusters_in_use[env_name].uniq
|
|
end
|
|
clusters_in_use
|
|
end
|
|
|
|
def minimum_size
|
|
minimum_size = {}
|
|
reference["minimum_size"] = {} if reference["minimum_size"].nil?
|
|
cluster_environments.each do |env_name, _env_config|
|
|
minimum_size[env_name] = reference["minimum_size"][env_name] || ""
|
|
end
|
|
minimum_size
|
|
end
|
|
|
|
def maximum_size
|
|
maximum_size = {}
|
|
reference["maximum_size"] = {} if reference["maximum_size"].nil?
|
|
cluster_environments.each do |env_name, _env_config|
|
|
maximum_size[env_name] = reference["maximum_size"][env_name] || ""
|
|
end
|
|
maximum_size
|
|
end
|
|
|
|
def engine
|
|
reference["engine"]
|
|
end
|
|
|
|
def engine_version
|
|
reference["engine_version"]
|
|
end
|
|
|
|
def db_name
|
|
reference["db_name"]
|
|
end
|
|
|
|
def port
|
|
reference["port"] || ""
|
|
end
|
|
|
|
def maintenance_window
|
|
reference["maintenance_window"] || ""
|
|
end
|
|
|
|
def backup_window
|
|
reference["backup_window"] || ""
|
|
end
|
|
|
|
def backup_retention_period
|
|
reference["backup_retention_period"] || ""
|
|
end
|
|
|
|
def parameter_store_path_db_url_name
|
|
reference["parameter_store_path_db_url_name"] || ""
|
|
end
|
|
|
|
def sql_backup_scheduled_task_environment_variables
|
|
reference["sql_backup_scheduled_task_environment_variables"] || []
|
|
end
|
|
|
|
def sync_sql_backup_to_azure
|
|
reference["sync_sql_backup_to_azure"] || false
|
|
end
|
|
|
|
def replication_bucket_destination_arn
|
|
reference["replication_bucket_destination_arn"] || ""
|
|
end
|
|
|
|
def replication_kms_key_id
|
|
reference["replication_kms_key_id"] || ""
|
|
end
|
|
|
|
def force_ssl
|
|
reference["force_ssl"] || "false"
|
|
end
|
|
|
|
def cluster_id
|
|
cluster.id
|
|
end
|
|
|
|
def cluster_environments
|
|
cluster.environments
|
|
end
|
|
|
|
def account_id
|
|
cluster.account_id
|
|
end
|
|
|
|
def services
|
|
cluster.services
|
|
end
|
|
|
|
def to_params
|
|
{
|
|
"identifier" => identifier,
|
|
"in_use_by" => in_use_by,
|
|
"clusters_in_use" => clusters_in_use,
|
|
"minimum_size" => minimum_size,
|
|
"maximum_size" => maximum_size,
|
|
"engine" => engine,
|
|
"engine_version" => engine_version,
|
|
"db_name" => db_name,
|
|
"port" => port,
|
|
"force_ssl" => force_ssl,
|
|
"maintenance_window" => maintenance_window,
|
|
"backup_window" => backup_window,
|
|
"backup_retention_period" => backup_retention_period,
|
|
"parameter_store_path_db_url_name" => parameter_store_path_db_url_name,
|
|
"sql_backup_scheduled_task_environment_variables" => sql_backup_scheduled_task_environment_variables,
|
|
"sync_sql_backup_to_azure" => sync_sql_backup_to_azure,
|
|
"replication_bucket_destination_arn" => replication_bucket_destination_arn,
|
|
"replication_kms_key_id" => replication_kms_key_id
|
|
}
|
|
end
|
|
end
|
|
end
|