module Dalmatian class Rds 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 instance_class instance_class = {} reference["instance_class"] = {} if reference["instance_class"].nil? cluster_environments.each do |env_name, _env_config| instance_class[env_name] = reference["instance_class"][env_name] || "" end instance_class end def engine reference["engine"] end def engine_version reference["engine_version"] end def allocated_storage reference["allocated_storage"] || "" end def storage_encrypted reference["storage_encrypted"].nil? || reference["storage_encrypted"] end def storage_type reference["storage_type"] || "gp3" 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 force_ssl reference["force_ssl"] || "false" 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 check_sql_backup_scheduled_task_environment_variables reference["check_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 codebuild_access reference["codebuild_access"] || [] 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, "instance_class" => instance_class, "engine" => engine, "engine_version" => engine_version, "allocated_storage" => allocated_storage, "storage_encrypted" => storage_encrypted, "storage_type" => storage_type, "db_name" => db_name, "port" => port, "maintenance_window" => maintenance_window, "backup_window" => backup_window, "backup_retention_period" => backup_retention_period, "force_ssl" => force_ssl, "parameter_store_path_db_url_name" => parameter_store_path_db_url_name, "sql_backup_scheduled_task_environment_variables" => sql_backup_scheduled_task_environment_variables, "check_sql_backup_scheduled_task_environment_variables" => check_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, "codebuild_access" => codebuild_access } end end end