
resource "aws_lb_target_group" "main" {
  name                 = format("%v-%v", var.name_prefix, var.tg_name)
  port                 = var.tg_port
  protocol             = var.tg_protocol
  vpc_id               = var.tg_vpc_id
  deregistration_delay = var.tg_deregistration_delay
  target_type          = var.tg_target_type

  health_check {
    path                = var.tg_health_check_path
    port                = var.tg_health_check_port
    protocol            = var.tg_health_check_protocol
    matcher             = var.tg_health_check_matcher
    interval            = var.tg_health_check_interval
    timeout             = var.tg_health_check_timeout
    unhealthy_threshold = var.tg_health_check_unhealthy_threshold
    healthy_threshold   = var.tg_health_check_healthy_threshold
  }

  tags = var.common_tags
}

# Attach instances to a target group
resource "aws_lb_target_group_attachment" "instances" {
  count            = var.tg_target_type == "instance" ? length(var.tg_targets) : 0
  target_group_arn = aws_lb_target_group.main.arn
  target_id        = element(var.tg_targets, count.index)
}

# Attach IP to a target group
resource "aws_lb_target_group_attachment" "ip" {
  count            = var.tg_target_type == "ip" ? length(var.tg_targets) : 0
  target_group_arn = aws_lb_target_group.main.arn
  target_id        = element(var.tg_targets, count.index)
}

