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

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

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

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" "rds" {
  tags = {
    Name = "${local.name_prefix}-sg-postgres"
  }
}

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

data "aws_security_group" "remote_access" {
  tags = {
    Name = "${local.name_prefix}-sg-remote-access-ssh"
  }
}

# Create security group for sonar server
resource "aws_security_group" "sg_sonar" {
  description = "Allow connection to sonar from ALB"
  vpc_id      = data.aws_vpc.main.id

  ingress {
    description = "Access to sonar from ALB"
    from_port   = 9000
    to_port     = 9000
    protocol    = "tcp"
    security_groups = [
      data.aws_security_group.alb.id,
    ]
  }

  tags = merge(
    local.sonar_tags,
    {
      "Name"           = format("%v-sg-sonar", local.name_prefix),
      "eiso-exception" = "aws.08.30",
    }
  )
}

resource "aws_security_group_rule" "allow_sonar_to_rds" {
  from_port                = 5432
  to_port                  = 5432
  type                     = "ingress"
  security_group_id        = data.aws_security_group.rds.id
  protocol                 = "tcp"
  source_security_group_id = aws_security_group.sg_sonar.id
  description              = "Access to RDS from sonar"
}
