module "gateway-crds" {
  depends_on = [ module.issuers, module.cert-manager ]
  source = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-next-gen-gateway-crds.yaml"
  parameters = {
    env               = var.env
    logicalRegionName = var.logical_region_name
    cluster           = module.argocd_cluster.name
    region            = var.aws_region
    cloud             = "aws"
    dnsName           = "${var.logical_region_name}.regional-api.${local.hosted_zone_name}"
  }
  services = [
    {
      name      = "Certificate/regional-api"
      namespace = "kong"
      wait_for  = "condition=Ready"
    },
    {
      name      = "Gateway/kong"
      namespace = "kong"
    }
  ]
}

resource "time_sleep" "wait_for_gateway_crds" {
  depends_on      = [module.gateway-crds]
  create_duration = "5m"
}

module "kong-gateway" {
  depends_on = [time_sleep.wait_for_gateway_crds]
  source     = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-next-gen-kong-ingress-controller.yaml"
  parameters = {
    env               = var.env
    logicalRegionName = var.logical_region_name
    cluster           = module.argocd_cluster.name
    region            = var.aws_region
    cloud             = "aws"
    additionalArgs = jsonencode({
      imageRegistry           = "${local.seed_account}.dkr.ecr.us-west-2.amazonaws.com"
      regionalControlplaneIPs = formatlist("%s/32", local.eks.public_ips)
      globalControlplaneIPs   = formatlist("%s/32", local.base_public_ips)
    })
  }
  services = [
    {
      name      = "deploy/kong-kong"
      namespace = "kong"
      wait_for  = "jsonpath='{.status.availableReplicas}'=REPLICAS"
    },
    {
      name      = "service/kong-kong-proxy"
      namespace = "kong"
      wait_for  = "jsonpath='{.status.loadBalancer.ingress}'"
    }
  ]
}
