locals {
  cluster_ng_server_args = {
    default_dataplane_account         = var.customer_subscription_id
    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 = var.pingcap_tenant_id
    azure_storage_account             = var.region_metering_storage_account_name
    tidb_image_registry               = var.customer_acr_login_server
    metering_plan                     = "byoc"
    enable_metering_worker_node       = true
    enable_pca                        = false
    is_byoc                           = true
    disable_o11y                      = false
    o11y_cluster_cidr                 = var.o11y_vpc_cidr
  }
}

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"
  check_before_destroy = false
  parameters = {
    cloud             = "azure"
    env               = var.env
    region            = var.cloud_region
    logicalRegionName = var.logical_region_name
    cluster           = module.argocd_cluster.name
  }
  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     = var.image_registry
    args              = jsonencode(local.cluster_ng_server_args)
  }
  services = [
    {
      name      = "deploy/cluster-ng-server"
      namespace = "cluster-ng-service"
      wait_for  = "jsonpath='{.status.availableReplicas}'=REPLICAS"
    }
  ]
}
