locals {
  service_name = "billing-service"

  container_port = 8094

  env_account = terraform.workspace
  
  deploy_env_name = lookup(var.workspace_deploy_env, local.env_account)

  spring_config_label = lookup(var.spring_config_label_map, local.env_account)

  subdomain = lookup(var.subdomain_map, local.env_account)

  rds_instance_class = lookup(var.rds_instance_class_map, local.env_account)

  rds_disk_size = lookup(var.rds_disk_size_map, local.env_account)

  smtp_user = lookup(var.smtp_user, local.env_account)

  failover_task_count = 0
  failover_region = data.terraform_remote_state.mop_core_failover.outputs.failover_region

  env = {
    default = {
      short_name = "billing"
      service_name = "billing-service"
      container_port = 8094
      health_check_path = "/actuator/health/"
      rds_instance_name = "billing-db"
      iam_suffix = ""
      rds_storage_type = "standard"
      rds_engine_family = "mysql8.0"
      rds_auth_policy_param = "flush_time"
      rds_auth_policy_value = 0
      rds_iops = 0
    }

    nf-sandbox = {
      subdomain = "sandbox.netfoundry.io"
      deploy_env_name = "sandbox"
      spring_config_label = "develop"
      role_arn = "arn:aws:iam::721086286010:role/ops-mgmt-admin"
      rds_engine_family = "mysql8.4"
      rds_auth_policy_param = "authentication_policy"
      rds_auth_policy_value = "*:mysql_native_password"
      rds_storage_type = "gp3"
      rds_iops = 3000
    }

    nf-staging-int = {
      subdomain = "staging.netfoundry.io"
      deploy_env_name = "staging"
      spring_config_label = "staging"
      role_arn = "arn:aws:iam::560269805515:role/ops-mgmt-admin"
      rds_engine_family = "mysql8.4"
      rds_auth_policy_param = "authentication_policy"
      rds_auth_policy_value = "*:mysql_native_password"
      rds_storage_type = "gp3"
      rds_iops = 3000
    }

    nf-prod-int = {
      subdomain = "production.netfoundry.io"
      deploy_env_name = "production"
      spring_config_label = "production"
      role_arn = "arn:aws:iam::745435643501:role/ops-mgmt-admin"
    }

    nf-staging-west-int = {
      subdomain = "staging-west.netfoundry.io"
      deploy_env_name = "staging"
      spring_config_label = "staging"
      role_arn = "arn:aws:iam::560269805515:role/ops-mgmt-admin"
      iam_suffix = "-DR"
    }

  }

  environmentvars = contains(keys(local.env), terraform.workspace) ? terraform.workspace : "default"
  workspace       = merge(local.env["default"], local.env[local.environmentvars])

  rds_replicate_source_db_map = {
    "nf-sandbox" = ""
    "nf-staging-int" = ""
    "nf-prod-int" = ""
    "nf-staging-west-int" = data.aws_db_instance.master.db_instance_arn
  }
# use to control RDS instance replication if replication source is defined
#  rds_replicate_source_db = "false" # use to convert replica to standalone instance (DR failover)
  rds_replicate_source_db = "true"
  replicate_source_db = local.rds_replicate_source_db == "false" ? "" : local.rds_replicate_source_db_map[terraform.workspace]

}
