data "aws_vpc" "accepter" {
  cidr_block = var.vpc_accepter_cidr
}

resource "aws_vpc_peering_connection_options" "accepter_options" {
  vpc_peering_connection_id = var.peering_connection_id

  accepter {
    allow_remote_vpc_dns_resolution = var.allow_remote_vpc_dns_resolution
  }
}

resource "aws_vpc_peering_connection_accepter" "this" {
  vpc_peering_connection_id = var.peering_connection_id
  auto_accept               = true
  tags = merge(
    var.common_tags,
    {
      Name = var.connection_name,
    }
  )
}
data "aws_route_tables" "accepter" {
  vpc_id = data.aws_vpc.accepter.id
}

locals {
  accepter_route_tables = length(var.accepter_route_tables) == 0 ? tolist(data.aws_route_tables.accepter.ids) : var.accepter_route_tables
  acc_to_req_dest_cidrs = var.acc_to_req_dest_cidrs
}

resource "aws_route" "accepter_to_requester" {
  count                     = length(local.accepter_route_tables) * length(local.acc_to_req_dest_cidrs)
  route_table_id            = sort(tolist(local.accepter_route_tables))[floor(count.index / length(local.acc_to_req_dest_cidrs))]
  destination_cidr_block    = local.acc_to_req_dest_cidrs[count.index % length(local.acc_to_req_dest_cidrs)]
  vpc_peering_connection_id = var.peering_connection_id
}
