# check and output base eks information for future process
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = ">= 7.16.0"
    }
  }

  backend "s3" {
    bucket       = "autonomous-deployment-terraform-state"
    region       = "us-west-2"
    use_lockfile = true
  }
}

provider "google" {
  project = "pingcap-dbaas-build"
  region  = "us-central1"
}

variable "env" {
  type    = string
  default = "dev"
}

locals {
  cluster_name = var.env == "prod" ? "cicd-cluster-us-central1" : "${var.env}-cicd-cluster-us-central1"
}

data "google_container_cluster" "gke" {
  name = local.cluster_name
}

data "google_compute_routers" "routers" {}

locals {
  routers = [
    for router in data.google_compute_routers.routers.routers : router
    if endswith(router.network, data.google_container_cluster.gke.network)
  ]
  manual_only_nat_ips = flatten([
    for router in local.routers : [
      for nat in router.nats : nat.nat_ips if nat.nat_ip_allocate_option == "MANUAL_ONLY"
    ]
  ])
  nat_ip_names = [for nat_ip_name in local.manual_only_nat_ips : basename(nat_ip_name)]
}

data "google_compute_address" "nat_ips" {
  for_each = toset(local.nat_ip_names)

  name = each.key
}

output "cluster_name" {
  value = local.cluster_name
}

output "public_ips" {
  value = values(data.google_compute_address.nat_ips).*.address
}