# Some of this is redundant or not generated from this module, but it's a nice
# centralized place to get all of the data needed to setup the VPN connections.
output vpn_info {
  value = [
      for index, connection in aws_vpn_connection.vpn:
      {
        "cgw_public_ip" = var.interconnect_public_ips[index]
        "cgw_private_ip" = var.interconnect_private_ips[index]
        "cgw_neighbor_ips" = [ for ip in var.interconnect_private_ips: ip if ip != var.interconnect_private_ips[index] ]
        "vgw_public_ips" = [
            connection.tunnel1_address, 
            connection.tunnel2_address
        ],
        "cgw_inside_address" = [
          connection.tunnel1_cgw_inside_address,
          connection.tunnel2_cgw_inside_address
        ],
        "vgw_inside_address" = [
          connection.tunnel1_vgw_inside_address,
          connection.tunnel2_vgw_inside_address
        ]
        # This is sensitive, so terraform will redact the output. To get it anyway, do a `terragrunt output vpn_info`
        "preshared_key" = [
          connection.tunnel1_preshared_key,
          connection.tunnel2_preshared_key
        ]
        "vgw_bgp_asn" = connection.tunnel1_bgp_asn, # Tunnel 1 and 2 are same
        "cgw_bgp_asn" = var.interconnect_asn
      }
  ]
  sensitive = true # We need the VPN keys
}

output yaml {
  # The contents are the same as above, in an environment key
  value = yamlencode({
    "" = {
      (var.aws_partition_alias) = [
        for index, connection in aws_vpn_connection.vpn:
        {
          "cgw_public_ip" = var.interconnect_public_ips[index]
          "cgw_private_ip" = var.interconnect_private_ips[index]
          "cgw_neighbor_ips" = [ for ip in var.interconnect_private_ips: ip if ip != var.interconnect_private_ips[index] ]
          "vgw_public_ips" = [
              connection.tunnel1_address, 
              connection.tunnel2_address
          ],
          "cgw_inside_address" = [
            connection.tunnel1_cgw_inside_address,
            connection.tunnel2_cgw_inside_address
          ],
          "vgw_inside_address" = [
            connection.tunnel1_vgw_inside_address,
            connection.tunnel2_vgw_inside_address
          ]
          "preshared_key" = [
            connection.tunnel1_preshared_key,
            connection.tunnel2_preshared_key
          ]
          "vgw_bgp_asn" = connection.tunnel1_bgp_asn, # Tunnel 1 and 2 are same
          "cgw_bgp_asn" = var.interconnect_asn
        }
      ]
    }
  })
  sensitive = true # We need the VPN keys
}
