data "alicloud_privatelink_vpc_endpoint_services" "this" {
  depends_on = [alicloud_ros_stack.privatelink_service]
  tags = {
    Name = "${local.cluster_name}-privatelink-service"
  }
}

module "o11y-regional-server" {
  source     = "../../modules/app"
  depends_on = [module.o11y-dataplane-cd]

  workflow = "new-region-regional-server.yaml"
  gh_repo  = "tidbcloud/observability"
  gh_ref   = "main"
  parameters = {
    vendor            = "alicloud"
    region            = var.cloud_region
    logicalRegionName = var.logical_region_name
    env               = var.env
    cluster           = local.cluster_name
    args = jsonencode({
      regionalServerRoleArn  = "acs:ram::${local.alicloud_account}:role/regional-server-${local.cluster_name}"
      diagBucketName         = alicloud_oss_bucket.shared.bucket
      oidcARN                = alicloud_cs_managed_kubernetes.this.rrsa_metadata[0].ram_oidc_provider_arn
      oidcValue              = "oidc.ack.aliyuncs.com/${alicloud_cs_managed_kubernetes.this.id}"
      zone                   = var.zone_ids[0]
      endpointServiceID      = data.alicloud_privatelink_vpc_endpoint_services.this.services[0].service_id
      endpointServiceDNSName = data.alicloud_privatelink_vpc_endpoint_services.this.services[0].service_domain
      dataplaneAssumeRole    = "${var.env}-${var.logical_region_name}-dp4o11yrs"
      nginxReadIngressClass  = "nginx-read"
      nginxWriteIngressClass = "nginx-write"
      imageRegistry          = local.image_registry
      account                = local.alicloud_account
      hostedZoneName         = var.env == "prod" ? "observability.tidbcloud.com" : "observability-${var.env}.pingcap.cloud"
      preSetAgentRole        = "acs:ram::${local.alicloud_account}:role/tidbcloud-o11y-agent-role"
      vswitchIDs             = join(",", alicloud_vswitch.node[*].id)
    })
  }
  wait_workflow_success = true
  finalizer = {
    workflow = "destroy-region-regional-server.yaml"
    parameters = {
      vendor            = "alicloud"
      region            = var.cloud_region
      logicalRegionName = var.logical_region_name
      env               = var.env
    }
  }
}

module "o11y-regional-server-cd" {
  depends_on = [module.o11y-regional-server]
  source     = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "regional-server-cd.yaml"
  gh_repo         = "tidbcloud/observability"
  gh_ref          = "main"
  parameters = {
    vendor  = "alicloud"
    region  = var.logical_region_name
    env     = var.env
    git-ref = "main"
  }
  services = [
    {
      name      = "deploy/regionalserver"
      namespace = "observability"
      wait_for  = "jsonpath='{.status.availableReplicas}'=REPLICAS"
    },
    {
      name      = "deploy/data-server"
      namespace = "observability"
      wait_for  = "jsonpath='{.status.availableReplicas}'=REPLICAS"
    }
  ]
  wait_workflow_success = true
  check_before_destroy  = false
}
