/*
locals {
  etl_data_ingest_secrets = [
    "CMS_CLIENT_SECRET",
    "SENTRY_DSN",
    "SLACK_API_TOKEN",
  ]

  etl_data_ingest_common_secrets = {
    DD_API_KEY         = aws_secretsmanager_secret.common_secret["DD_API_KEY"]
    SNOWFLAKE_PASSWORD = aws_secretsmanager_secret.dna_api_secret["SNOWFLAKE_PASSWORD"]
  }

  etl_data_ingest_secrets_mapping = [
    for k, v in merge(aws_secretsmanager_secret.etl_data_ingest_secret, local.etl_data_ingest_common_secrets) :
    {
      name      = k,
      valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:${v["name"]}"
    }
  ]

  etl_data_ingest_secrets_combined = concat(local.etl_data_ingest_secrets_mapping, [
    {
      name      = "POSTGRES_PASSWORD",
      valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:maintenance/common/${local.project_group}/${local.env_prefix}/aggregates_owner:password::"
    },
    {
      name      = "POSTGRES_USER",
      valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:maintenance/common/${local.project_group}/${local.env_prefix}/aggregates_owner:username::"
    },
    {
      name      = "POSTGRES_HOST",
      valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:maintenance/common/${local.project_group}/${local.env_prefix}/aggregates_owner:host::"
    },
    {
      name      = "POSTGRES_PORT",
      valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:maintenance/common/${local.project_group}/${local.env_prefix}/aggregates_owner:port::"
    },
  ])
}

data "aws_ecr_repository" "etl_data_ingest_job_ecr" {
  name = "dna/etl-data-ingest"
}

resource "aws_secretsmanager_secret" "etl_data_ingest_secret" {
  for_each = toset(local.etl_data_ingest_secrets)

  name       = "${local.secrets_name_prefix}/etl_data_ingest/${each.value}"
  kms_key_id = data.aws_kms_key.secrets_general_key.id

  tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "Secrets Manager",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_SCRT"
    }
  )
}

module "etl_data_ingest_ecs_role" {
  source = "../../../modules/iam/roles/ecs_task_role"

  enable_default_role = false
  name_prefix         = local.name_prefix
  name                = "etl_data_ingest_role"

  policies_list = [
    data.aws_iam_policy.secrets_services_ro.arn,
    data.aws_iam_policy.logging_policy.arn,
    data.aws_iam_policy.etl_artifacts_ro.arn,
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Portal",
      service                  = "ECS",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ECS"
    }
  )
}

module "etl_data_ingest" {
  source = "../../../modules/ecs/tasks/scheduled_task"

  env_prefix         = local.env_prefix
  project_group      = local.project_group
  project            = "etl_data_ingest"
  region             = var.aws_region_id
  cluster_arn        = data.aws_ecs_cluster.etl.arn
  security_groups    = [data.aws_security_group.ecs.id]
  task_exec_role_arn = data.aws_iam_role.standard_exec.arn
  task_role_arn      = module.etl_data_ingest_ecs_role.role.arn
  scheduler_role_arn = data.aws_iam_role.scheduler_role.arn
  subnets            = data.aws_subnets.private_subnets.ids
  secrets            = jsonencode(local.etl_data_ingest_secrets_combined)
  image              = "${data.aws_ecr_repository.etl_data_ingest_job_ecr.repository_url}:${local.docker_image_env_tag[var.platform.prefix]}"
  schedule           = "cron(40 0,12 * * ? *)"
  schedule_enabled   = true
  cpu                = 8192
  memory             = 16384

  env_vars = [
    {
      name  = "ENVIRONMENT",
      value = local.environment
    },
    {
      name  = "ECS_CLUSTER",
      value = data.aws_ecs_cluster.main.cluster_name
    },
    {
      name  = "PROJECT",
      value = local.project_group
    },
    {
      name  = "ECS_SERVICE",
      value = "etl_data_ingest"
    },
    {
      name  = "ELASTIC_SEARCH_URL",
      value = "https://${data.aws_elasticsearch_domain.main.endpoint}"
    },
    {
      name  = "ELASTIC_SEARCH_ENV",
      value = upper(local.env_prefix)
    },
    {
      name  = "S3_ARTIFACTS_BUCKET",
      value = data.aws_s3_bucket.etl_artifacts.bucket
    },
    {
      name  = "SNOWFLAKE_ENV",
      value = upper(local.env_prefix)
    },
    {
      name  = "SNOWFLAKE_DRIVER",
      value = "snowflake"
    },
    {
      name  = "SNOWFLAKE_USER",
      value = "DNA_USER"
    },
    {
      name  = "SNOWFLAKE_ACCOUNT",
      value = "delphi.us-east-1"
    },
    {
      name  = "SNOWFLAKE_WAREHOUSE",
      value = "DEXP3127_DNA_M_WH"
    },
    {
      name  = "SNOWFLAKE_DATABASE",
      value = "DELPHI_EXPLORATION"
    },
    {
      name  = "SNOWFLAKE_HOST",
      value = "delphi.us-east-1.snowflakecomputing.com"
    },
    {
      name  = "SNOWFLAKE_PORT",
      value = 443
    },
    {
      name  = "SNOWFLAKE_SCHEMA",
      value = "CHARTMETRIC"
    },
    {
      name  = "POSTGRES_DB",
      value = "non_signed_aggregates_${local.env_prefix}"
    },
    {
      name  = "SLACK_CHANNEL_NAME",
      value = "#dna-etl-report-${local.env_prefix}"
    },
    {
      name  = "ATLAS_BASE_URL",
      value = "https://${module.atlas_domains[local.env_prefix]["atlas-um"]}/"
    },
    {
      name  = "CMS_CLIENT_ID",
      value = "85ddebf0-d75f-4370-83c4-bee2d50a9c53"
    },
    {
      name  = "CMS_BASE_URL",
      value = "https://${module.domains[local.env_prefix]["cms"]}/"
    },
    {
      name  = "CMS_AUDIENCE",
      value = "dna|cms"
    },
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Portal",
      service                  = "ECS",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ECS"
    }
  )
}
*/
