//ALB and listeners
module "jenkins_external_alb" {
  source = "../../../modules/ec2/alb/alb_v2"

  name_prefix = "${local.name_prefix}-jenkins"
  alb_security_groups = flatten([
    module.jenkins_sg_map.alb_id,
    module.jenkins_sg_map.ext_web_id,
    module.jenkins_sg_map.ext_web_http_id,
    module.jenkins_sg_map.github_security_groups[*].id,
  ])

  alb_subnets               = module.jenkins_public_subnets.subnet_ids
  access_logs_enabled       = true
  access_logs_bucket_prefix = "${local.name_prefix}-jenkins-external"
  access_logs_bucket_name   = data.aws_s3_bucket.security_logs.bucket
  enable_ip_blocking        = true

  common_tags = {
    service                  = "Load Balancing",
    plat_env_project_service = "${local.aggregated_tag}_LB"
  }
}

module "jenkins_external_alb_listener_http" {
  source = "../../../modules/ec2/alb/listener"

  alb_arn               = module.jenkins_external_alb.alb_arn
  alb_listener_protocol = "HTTP"
}

module "jenkins_external_alb_listener_https" {
  source = "../../../modules/ec2/alb/listener"

  alb_arn                 = module.jenkins_external_alb.alb_arn
  alb_listener_protocol   = "HTTPS"
  aws_acm_certificate_arn = data.aws_acm_certificate.apollo_stream_cert.arn
}

module "alb_rules_jenkins" {
  source = "../../../modules/ec2/alb/https_rule_with_redirect"

  https_listener_arn = module.jenkins_external_alb_listener_https.alb_listener.arn
  http_listener_arn  = module.jenkins_external_alb_listener_http.alb_listener.arn
  tg_arn             = module.tg_jenkins_master.tg.arn
  host-header        = module.domains.dev.jenkins
}

module "nlb_forwarder" {
  source = "../../../modules/ec2/nlb_for_alb"

  name_prefix        = "${local.name_prefix}-jenkins"
  vpc_id             = module.jenkins_vpc.vpc_id
  alb_arn            = module.jenkins_external_alb.alb_arn
  public_subnets_ids = module.jenkins_public_subnets.subnet_ids

  security_groups = flatten([
    module.jenkins_sg_map.alb_id,
    module.jenkins_sg_map.ext_web_id,
    module.jenkins_sg_map.ext_web_http_id,
    module.jenkins_sg_map.github_security_groups[*].id,
  ])

  tags = {
    service                  = "Load Balancing",
    plat_env_project_service = "${local.aggregated_tag}_LB"
  }
}

output "nlb_eips" {
  value = module.nlb_forwarder.nlb_eips
}
