locals {
  cluster_ng_server_args = {
    default_dataplane_account         = local.default_dataplane_account
    rds                               = local.cluster_service_rds
    metering_bucket                   = azurerm_storage_container.metering.name
    azure_workload_identity_client_id = module.iam.dataplane_manager_client_id
    azure_workload_identity_tenant_id = local.controlplane_tenant_id
    azure_storage_account             = local.region_outputs.metering_storage_account_name
    tidb_image_registry               = local.tidb_image_registry
    metering_plan                     = "premium"
    enable_metering_worker_node       = false
    enable_pca                        = false
    is_byoc                           = false
    disable_o11y                      = false
  }
}

module "cluster_ng_service_crds" {
  depends_on = [module.dataplane_manager]
  source     = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-cluster-ng-service-crds.yaml"
  parameters = {
    cloud             = "azure"
    env               = var.env
    region            = var.cloud_region
    logicalRegionName = var.logical_region_name
    cluster           = module.argocd_cluster.name
  }
  check_before_destroy = false
  services = [
    {
      name     = "CustomResourceDefinition/dataplaneproviders.clusterserver.ng.tidbcloud.com"
      wait_for = "condition=Established"
    },
    {
      name     = "CustomResourceDefinition/sharedpools.clusterserver.ng.tidbcloud.com"
      wait_for = "condition=Established"
    },
    {
      name     = "CustomResourceDefinition/tasks.clusterserver.ng.tidbcloud.com"
      wait_for = "condition=Established"
    },
    {
      name     = "CustomResourceDefinition/tidbgroups.clusterserver.ng.tidbcloud.com"
      wait_for = "condition=Established"
    }
  ]
}

module "cluster_ng_server" {
  depends_on = [module.cluster_ng_service_crds, module.regional_mysql, module.config_center, module.o11y_agent_control_server]
  source     = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-cluster-ng-server.yaml"
  parameters = {
    cloud             = "azure"
    env               = var.env
    region            = var.cloud_region
    logicalRegionName = var.logical_region_name
    cluster           = module.argocd_cluster.name
    imageRegistry     = local.image_registry
    servicePlan       = var.service_plan
    args              = jsonencode(local.cluster_ng_server_args)
  }
  services = [
    {
      name      = "deploy/cluster-ng-server"
      namespace = "cluster-ng-service"
      wait_for  = "jsonpath='{.status.availableReplicas}'=REPLICAS"
    }
  ]
}
