module "cluster-ng-service-crds" {
  source = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-cluster-ng-service-crds.yaml"
  parameters = {
    env               = var.env
    cloud             = "aws"
    region            = var.aws_region
    cluster           = module.argocd_cluster.name
    logicalRegionName = var.logical_region_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" {
  source     = "../../modules/app"
  depends_on = [module.rds_db_cluster_service, module.kong-gateway, module.o11y-agent-control-server]

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-cluster-ng-server.yaml"
  parameters = {
    env               = var.env
    cloud             = "aws"
    region            = var.aws_region
    cluster           = module.argocd_cluster.name
    logicalRegionName = var.logical_region_name
    imageRegistry     = "${local.seed_account}.dkr.ecr.us-west-2.amazonaws.com"
    servicePlan       = var.service_plan
    args = jsonencode({
      image_registry              = "${local.seed_account}.dkr.ecr.us-west-2.amazonaws.com"
      irsa_role_arn               = module.iam-dataplane-manager.role_arn
      default_dataplane_account   = var.dataplane_accounts[0]
      pca_arn                     = local.pca_arn
      tidb_image_registry         = "${local.seed_account}.dkr.ecr.us-west-2.amazonaws.com"
      enable_pca                  = true
      metering_bucket             = aws_s3_bucket.metering.bucket
      metering_writeonly_role_arn = aws_iam_role.metering_write_only.arn
      metering_readwrite_role_arn = aws_iam_role.metering_read_write.arn
      metering_plan               = "premium"
      enable_metering_worker_node = false
      is_byoc                     = false
      rds = {
        host                 = local.rds_resolved_endpoint
        port                 = 3306
        db                   = module.rds_db_cluster_service.database_name
        username             = module.rds_db_cluster_service.account_name
        password_secret_name = module.rds_db_cluster_service.password_secret_name
      }
    })
  }
  services = [
    {
      name      = "deploy/cluster-ng-server"
      namespace = "cluster-ng-service"
      wait_for  = "jsonpath='{.status.availableReplicas}'=REPLICAS"
    }
  ]
}
