resource "aws_ec2_transit_gateway_peering_attachment" "us_east_1_us_west_2" {
  provider = aws.us_east_1

  peer_region             = "us-west-2"
  transit_gateway_id      = module.transit_gateway_us_east_1.transit_gateway_id_output
  peer_transit_gateway_id = module.transit_gateway_us_west_2.transit_gateway_id_output

  tags = {
    Name         = "${var.environment}-transit-gateway-peering-attachment-us-west-2"
    peer_region  = "us-west-2"
    environment  = var.environment
    service_name = var.service_name
    terraformed  = "true"
  }
}

resource "aws_ec2_transit_gateway_peering_attachment_accepter" "us_east_1_us_west_2" {
  provider = aws.us_west_2

  transit_gateway_attachment_id = aws_ec2_transit_gateway_peering_attachment.us_east_1_us_west_2.id

  tags = {
    Name         = "${var.environment}-transit-gateway-peering-attachment-us-east-1"
    peer_region  = "us-east-1"
    environment  = var.environment
    service_name = var.service_name
    terraformed  = "true"
  }
}

# Associate peering attachments to the default propagation route table in each region
resource "aws_ec2_transit_gateway_route_table_association" "us_east_1_us_west_2" {
  provider   = aws.us_east_1
  depends_on = [aws_ec2_transit_gateway_peering_attachment_accepter.us_east_1_us_west_2]

  transit_gateway_attachment_id  = aws_ec2_transit_gateway_peering_attachment.us_east_1_us_west_2.id
  transit_gateway_route_table_id = module.transit_gateway_us_east_1.transit_gateway_propagation_default_route_table_id_output
}

resource "aws_ec2_transit_gateway_route_table_association" "us_east_1_us_west_2_accepter" {
  provider = aws.us_west_2

  transit_gateway_attachment_id  = aws_ec2_transit_gateway_peering_attachment_accepter.us_east_1_us_west_2.id
  transit_gateway_route_table_id = module.transit_gateway_us_west_2.transit_gateway_propagation_default_route_table_id_output
}
