module "tags" {
  source = "../../../modules/tags/defaults_plat_env_project"

  env_prefix    = var.env_prefix
  project_group = local.project_group
  project       = "Infrastructure"
  project_short = "INFRA"
}

locals {
  // Constants
  project_group = "delphi"

  name_prefix         = "${var.env_prefix}-${local.project_group}"
  account_id          = data.aws_caller_identity.current.account_id
  secrets_name_prefix = "${local.project_group}/${var.env_prefix}"
  aggregated_tag      = module.tags.aggregated_tag

  tags = module.tags.default_tags

  docker_image_env_tag = {
    dev   = "develop",
    qa    = "qa",
    stage = "release",
    uat   = "uat",
    prod  = "master",
  }

  ec2_key_pair = "${local.name_prefix}-default"
}

data "aws_caller_identity" "current" {}

module "datadog_agent_ecs" {
  source = "../../../modules/datadog/ecs_agent"

  env_prefix      = var.env_prefix
  project_group   = local.project_group
  task_role_arn   = data.aws_iam_role.standard_exec.arn
  exec_role_arn   = data.aws_iam_role.standard_exec.arn
  ecs_cluster_arn = data.aws_ecs_cluster.this.arn

  dd_awslogs_group = data.aws_cloudwatch_log_group.datadog_agent.name

  dd_container_image = "483193324480.dkr.ecr.us-east-1.amazonaws.com/infra/dd-agent-db-wrapper:7.79.2"

  dd_secrets = [
    {
      name      = "DD_API_KEY",
      valueFrom = data.aws_secretsmanager_secret.dd_api_key.arn
    },
    {
      name      = "MAIN_DB_PASSWORD",
      valueFrom = "${aws_secretsmanager_secret.datadog_db_users["pg/main_db/datadog"].arn}:password::"
    },
    {
      name      = "WORKFLOWDB_PASSWORD",
      valueFrom = "${aws_secretsmanager_secret.datadog_db_users["pg/workflowdb/datadog"].arn}:password::"
    },
    {
      name      = "SLZ_DB_PASSWORD",
      valueFrom = "${aws_secretsmanager_secret.datadog_db_users["pg/slz/datadog"].arn}:password::"
    },
  ]

  dd_env_vars = [{
    name  = "DD_PG_CONFIG_YAML"
    value = local.yaml_config
  }]

  tags = { plat_env_project_service = "${local.aggregated_tag}_ECS" }
}

locals {
  yaml_config = <<EOF
init_config:
instances:
  - dbm: true
    host: ${split(":", data.aws_db_instance.main.endpoint)[0]}
    port: 5432
    username: datadog
    password: '$${MAIN_DB_PASSWORD}'
    dbname: delphi_main
    ignore_databases:
      - rdsadmin
    tags:
      - 'env:${var.env_prefix}'
  - dbm: true
    host: ${split(":", data.aws_db_instance.slz.endpoint)[0]}
    port: 5432
    username: datadog
    password: '$${SLZ_DB_PASSWORD}'
    dbname: slz
    ignore_databases:
      - rdsadmin
    tags:
      - 'env:${var.env_prefix}'
  - dbm: true
    host: ${split(":", data.aws_db_instance.workflowdb.endpoint)[0]}
    port: 5432
    username: datadog
    password: '$${WORKFLOWDB_PASSWORD}'
    dbname: workflowdb
    ignore_databases:
      - rdsadmin
    tags:
      - 'env:${var.env_prefix}'
EOF
}
