module "dbx-dev_apollo-dev" {
  source              = "../../../modules/vpc/peering/one-to-one-external"
  vpc_requester_cidr  = "10.164.0.0/16"
  vpc_accepter_cidr   = "10.10.0.0/16"
  connection_name     = "DBXNEW_DEV_TO_APL_DEV"
  accepter_account_id = module.aws_accounts_list.accounts.gdb-delphi-dev
  providers = {
    aws.requester = aws
    aws.accepter  = aws.delphi-dev
  }
}

module "dbx-dev_delphi-dev" {
  source                = "../../../modules/vpc/peering/one-to-one-external"
  vpc_requester_cidr    = "10.164.0.0/16"
  vpc_accepter_cidr     = "10.30.0.0/16"
  connection_name       = "DBXNEW_DEV_TO_DLP_DEV"
  accepter_account_id   = module.aws_accounts_list.accounts.gdb-delphi-dev
  req_to_acc_dest_cidrs = ["10.30.8.0/21"]
  providers = {
    aws.requester = aws
    aws.accepter  = aws.delphi-dev
  }
}

module "dbx-dev_delphi-qa" {
  source              = "../../../modules/vpc/peering/one-to-one-external"
  vpc_requester_cidr  = "10.164.0.0/16"
  vpc_accepter_cidr   = "10.31.0.0/16"
  connection_name     = "DBXNEW_DEV_TO_DLP_QA"
  accepter_account_id = module.aws_accounts_list.accounts.gdb-delphi-dev
  providers = {
    aws.requester = aws
    aws.accepter  = aws.delphi-dev
  }
}

module "dbx-dev_delphi-stage" {
  source              = "../../../modules/vpc/peering/one-to-one-external"
  vpc_requester_cidr  = "10.164.0.0/16"
  vpc_accepter_cidr   = "10.32.0.0/16"
  connection_name     = "DBXNEW_DEV_TO_DLP_STAGE"
  accepter_account_id = module.aws_accounts_list.accounts.gdb-delphi-dev
  providers = {
    aws.requester = aws
    aws.accepter  = aws.delphi-dev
  }
}

data "aws_ec2_transit_gateway" "transit_gateway" {
  filter {
    name   = "options.amazon-side-asn"
    values = ["64513"]
  }
}

data "aws_ec2_managed_prefix_list" "vpn_ny_users" {
  filter {
    name   = "prefix-list-name"
    values = ["vpn-ny-users"]
  }
}

resource "aws_ec2_transit_gateway_vpc_attachment" "transit_gateway_attachment" {
  vpc_id             = module.vpc.vpc_id
  transit_gateway_id = data.aws_ec2_transit_gateway.transit_gateway.id
  subnet_ids = concat(
    module.vpc.private_subnets,
  )
}

resource "aws_route" "ny" {
  for_each = toset(concat(module.vpc.public_route_table_ids, module.vpc.private_route_table_ids))

  route_table_id             = each.value
  destination_prefix_list_id = data.aws_ec2_managed_prefix_list.vpn_ny_users.id
  transit_gateway_id         = data.aws_ec2_transit_gateway.transit_gateway.id
}
