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

  workflow = "new-region-regional-server.yaml"
  gh_repo  = "tidbcloud/observability"
  parameters = {
    vendor            = "aws"
    region            = var.aws_region
    logicalRegionName = var.logical_region_name
    env               = var.env
    cluster           = local.eks.name
    args = jsonencode({
      regionalServerRoleARN = local.o11y_control_plane_role_arn
      diagBucketName        = aws_s3_bucket.shared.bucket
      oidcARN = join("/", [
        "arn:aws:iam::${local.aws_account_id}:oidc-provider",
        trimprefix(local.eks.oidc_issuer_url, "https://"),
      ])
      oidcValue              = trimprefix(local.eks.oidc_issuer_url, "https://")
      zone                   = local.zone_name
      endpointServiceID      = aws_cloudformation_stack.vpc-endpoint-service.outputs.VpcEndpointServiceId
      nginxReadIngressClass  = "nginx-read"
      nginxWriteIngressClass = "nginx-write"
      endpointServiceDNSName = local.vpc_endpoint_dns_name
      dataplaneAssumeRole    = "${var.env}-${var.logical_region_name}-dp4o11yrs"
      imageRegistry          = var.byoc_ecr
      account                = local.aws_account_id
      hostedZoneName         = var.o11y_hosted_zone_name
      preSetAgentRole        = "arn:aws:iam::${local.aws_account_id}:role/tidbcloud-o11y-agent-role"
      byoc                   = true
      o11yRouteTableIDs      = sort(local.vpc_route_table_ids)
    })
  }
  wait_workflow_success = true
  finalizer = {
    workflow = "destroy-region-regional-server.yaml"
    parameters = {
      vendor            = "aws"
      region            = var.aws_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"
  parameters = {
    vendor                = "aws"
    region                = var.logical_region_name
    env                   = var.env
    git-ref               = "main"
    aws-role-arn          = "arn:aws:iam::${local.aws_account_id}:role/auto-deploy-cli"
    regional-server-image = "${var.byoc_ecr}/observability-regional-server:${var.regional_server_img_tag}"
    data-server-image     = "${var.byoc_ecr}/observability-regional-data-server:${var.regional_server_img_tag}"
    bootstrap             = "true"
  }
  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
}
