locals {
  name_prefix         = "${var.env_prefix}-${var.project_group}"
  account_id          = data.aws_caller_identity.current.account_id
  secrets_name_prefix = "${var.project_group}/${var.env_prefix}"

  # defaults
  alb         = var.alb == "" ? "${local.name_prefix}-alb-external" : var.alb
  nlb         = var.nlb == "" ? "${local.name_prefix}-nlb" : var.nlb
  ecs_cluster = var.ecs_cluster == "" ? "${local.name_prefix}-clu" : var.ecs_cluster
  exec_role   = var.exec_role == "" ? "${local.name_prefix}-ecs_task_execution_role" : var.exec_role
  es_domain   = var.es_domain == "" ? "${local.name_prefix}-search" : var.es_domain
  env_suffix  = var.env_suffix == "" ? "" : "-${var.env_suffix}"

  url_prefix = var.env_prefix == "prod" ? "" : "${var.env_prefix}-"
  api_dns    = var.api_dns == "" ? "${local.url_prefix}delphi-api${local.env_suffix}.delphiplatform.io" : var.api_dns
  nginx_dns  = var.nginx_dns == "" ? "${local.url_prefix}delphi-api${local.env_suffix}-ext.delphiplatform.io" : var.nginx_dns

  docker_image_env_tag = {
    dev   = "develop",
    qa    = "qa",
    stage = "release",
    uat   = "uat",
    prod  = "master",
  }
  api_image_tag   = var.api_image_tag == "" ? local.docker_image_env_tag[var.env_prefix] : var.api_image_tag
  nginx_image_tag = var.nginx_image_tag == "" ? local.docker_image_env_tag[var.env_prefix] : var.nginx_image_tag
}

data "aws_caller_identity" "current" {}

data "aws_vpc" "main" {
  tags = {
    Name = "${local.name_prefix}-vpc"
  }
}

data "aws_subnets" "private_subnets" {
  filter {
    name   = "vpc-id"
    values = [data.aws_vpc.main.id]
  }

  tags = {
    Name = "${local.name_prefix}-subnet-private-0*"
  }
}

data "aws_security_group" "main" {
  tags = {
    Name = "${local.name_prefix}-sg-ecs"
  }
}

data "aws_iam_role" "exec_role" {
  name = local.exec_role #
}

data "aws_ecs_cluster" "main" {
  cluster_name = local.ecs_cluster
}

data "aws_lb" "alb" {
  name = local.alb
}

data "aws_lb" "nlb" {
  name = local.nlb
}

data "aws_lb_listener" "https_listener" {
  load_balancer_arn = data.aws_lb.alb.arn
  port              = 443
}

data "aws_elasticsearch_domain" "search" {
  domain_name = local.es_domain
}

data "aws_cloudwatch_log_group" "datadog_agent" {
  name = "/ecs/${local.name_prefix}-datadog-agent"
}

data "aws_secretsmanager_secret" "dd_api_key" {
  name = "${local.secrets_name_prefix}/common/DD_API_KEY"
}
