module "default_tags" {
  source             = "git@github.com:theorchard/terraform-default-tags.git//?ref=2.0.0"
  environment        = var.environment
  application_family = var.application_family
  service_name       = var.service_name
  team_name          = var.team_name
}

provider "aws" {
  region = var.aws_region

  default_tags {
    tags = module.default_tags.tags
  }
}

terraform {
  backend "s3" {
    bucket  = "dev-grps-terraform-state"
    key     = "dev/jodconverter/us-east-1/terraform.tfstate"
    region  = "eu-central-1"
    encrypt = "true"
  }
}

data "aws_vpc" "vpc" {
  tags = {
    Name = "GRPSNV-D3"
  }
}

data "aws_subnets" "load_balancer_subnets" {
  filter {
    name   = "vpc-id"
    values = [data.aws_vpc.vpc.id]
  }
  filter {
    name   = "tag:Name"
    values = var.load_balancer_subnet_names
  }
}

data "aws_subnets" "fargate_service_subnets" {
  filter {
    name   = "vpc-id"
    values = [data.aws_vpc.vpc.id]
  }
  filter {
    name   = "tag:Name"
    values = var.fargate_service_subnet_names
  }
}

data "aws_wafv2_web_acl" "waf" {
  name  = "IOCACL"
  scope = "REGIONAL"
}

module "fargate_environment" {
  source = "git@github.com:theorchard/terraform-fargate.git//?ref=6.5.0"

  providers = {
    aws.dns = aws
  }

  application_family                = var.application_family
  environment                       = var.environment
  service_name                      = var.service_name
  aws_region                        = var.aws_region
  desired_task_count                = 2
  minimum_capacity                  = 2
  maximum_capacity                  = 4
  task_cpu                          = 1024
  task_memory                       = 2048
  autoscaling_memory_policy_enabled = false
  autoscaling_cpu_policy_enabled    = true
  scaling_cpu_target_value          = 70
  container_port                    = 8080
  health_check_path                 = "/"

  vpc_id                  = data.aws_vpc.vpc.id
  load_balancer_subnets   = data.aws_subnets.load_balancer_subnets.ids
  fargate_service_subnets = data.aws_subnets.fargate_service_subnets.ids

  permissions_boundary_enabled = false

  custom_waf_arn = data.aws_wafv2_web_acl.waf.arn

  https_listener_certificate_id = var.lb_certificate_id

  route53_record_creation_enabled = false
  splitio_enabled                 = false
  ows_machine_to_machine_enabled  = false
}
