{
  "repo": "tidbcloud/aws-shared-provider",
  "binary": "manager",
  "binary_path": "cmd/manager/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "extensions": {},
  "services": [
    {
      "name": "ManagerLifecycle",
      "type": "lifecycle",
      "methods": [
        {
          "name": "LoadFlags",
          "name_key": "ManagerLifecycle.LoadFlags",
          "description": "Register the manager startup flags for kubeconfig, leader election, metrics, webhook TLS, infra cache, export/import, o11y, and regional controller feature gates."
        },
        {
          "name": "ParseConfig",
          "name_key": "ManagerLifecycle.ParseConfig",
          "description": "Parse the command-line flags into the manager runtime config."
        },
        {
          "name": "CreateManager",
          "name_key": "ManagerLifecycle.CreateManager",
          "description": "Create the controller-runtime manager, infra manager, metrics listener, webhook server, cache options, and leader election settings."
        },
        {
          "name": "InitInfraRedisTLS",
          "name_key": "ManagerLifecycle.InitInfraRedisTLS",
          "description": "Load the client TLS bundle used to subscribe to infra Redis streams."
        },
        {
          "name": "InitClusterTLS",
          "name_key": "ManagerLifecycle.InitClusterTLS",
          "description": "Load the cluster TLS bundle used by PD, TiKV API, TiDB worker API, and PD etcd access."
        },
        {
          "name": "InitRegionalInfraClients",
          "name_key": "ManagerLifecycle.InitRegionalInfraClients",
          "description": "Initialize the regional infra cache clients, Redis consumer, optional infra MySQL double-write cache, and the cloud-provider-specific DynamoDB or TableStore backend."
        },
        {
          "name": "InitAuditLogRepo",
          "name_key": "ManagerLifecycle.InitAuditLogRepo",
          "description": "Initialize the audit-log schedule repository when audit logging is enabled."
        },
        {
          "name": "InitSharedClients",
          "name_key": "ManagerLifecycle.InitSharedClients",
          "description": "Initialize the shared PD, TiKV API, TiDB worker API, etcd, and infra API clients used by manager runnables and controllers."
        },
        {
          "name": "RegisterPoolRunnables",
          "name_key": "ManagerLifecycle.RegisterPoolRunnables",
          "description": "For each TiDB pool namespace, register the TiDB manager, scaler, upgrader, autoscaling loop, optional reclaimer, PDB loop, template controller, and pod cache controller."
        },
        {
          "name": "RegisterManagerServer",
          "name_key": "ManagerLifecycle.RegisterManagerServer",
          "description": "Construct and register the multiplexed manager server that exposes HTTPS, gRPC, and pprof endpoints."
        },
        {
          "name": "RegisterAuxiliaryLoops",
          "name_key": "ManagerLifecycle.RegisterAuxiliaryLoops",
          "description": "Register the DM scaler, node scorer, optional node drainer, optional version updater, and optional o11y API client."
        },
        {
          "name": "RegisterCoreControllers",
          "name_key": "ManagerLifecycle.RegisterCoreControllers",
          "description": "Register the cluster, branch, export, keyspace, keyspace pool config, secret syncer, TiDB pod, zone-redundant, node scaler, pod evicter, rescheduler, rebalance, recover, and import controllers."
        },
        {
          "name": "RegisterOptionalRegionalControllers",
          "name_key": "ManagerLifecycle.RegisterOptionalRegionalControllers",
          "description": "Register the regional export and import controllers only when regional CR support is enabled."
        },
        {
          "name": "RegisterIndexers",
          "name_key": "ManagerLifecycle.RegisterIndexers",
          "description": "Register keyspace, import, and pod field indexers used by controllers and debug APIs."
        },
        {
          "name": "StartManager",
          "name_key": "ManagerLifecycle.StartManager",
          "description": "Start the controller manager, which in turn starts the leader-gated infra manager and all registered runnables."
        }
      ]
    },
    {
      "name": "MetricsService",
      "type": "http",
      "base_path": "/",
      "methods": [
        {
          "name": "metrics",
          "name_key": "MetricsService.metrics",
          "method": "GET",
          "path": "/metrics",
          "description": "Expose controller-runtime and manager Prometheus metrics on the dedicated metrics listener."
        }
      ]
    },
    {
      "name": "WebhookService",
      "type": "webhook",
      "methods": [
        {
          "name": "validate-delete-ns",
          "name_key": "WebhookService.ValidateDeleteNS",
          "method": "POST",
          "path": "/validate-delete-ns",
          "description": "Validate namespace deletion requests against the deny-delete namespace list."
        }
      ]
    },
    {
      "name": "ManagerServer",
      "type": "mixed_service",
      "methods": [
        {
          "name": "Run",
          "name_key": "ManagerServer.Run",
          "description": "Start the certificate watcher, infra API, multiplexed HTTPS server, embedded gRPC server, and pprof handlers."
        },
        {
          "name": "Healthz",
          "name_key": "ManagerServer.Healthz",
          "method": "GET",
          "path": "/healthz",
          "description": "Return the basic manager server health probe."
        },
        {
          "name": "Readyz",
          "name_key": "ManagerServer.Readyz",
          "method": "GET",
          "path": "/readyz",
          "description": "Return the basic manager server readiness probe."
        },
        {
          "name": "AssignTiDB",
          "name_key": "ManagerServer.AssignTiDB",
          "method": "GET",
          "path": "/api/tidb/assign",
          "description": "Resolve cluster or branch metadata for a token and assign TiDB backends from the requested TiDB pool."
        },
        {
          "name": "CheckTiDB",
          "name_key": "ManagerServer.CheckTiDB",
          "method": "GET",
          "path": "/api/tidb/check",
          "description": "Check whether the requested TiDB backend is still assigned to the token."
        },
        {
          "name": "FreeTiDB",
          "name_key": "ManagerServer.FreeTiDB",
          "method": "GET",
          "path": "/api/tidb/free",
          "description": "Free an assigned TiDB backend, optionally recording a normal-restart marker in etcd first."
        },
        {
          "name": "ReplaceTiDB",
          "name_key": "ManagerServer.ReplaceTiDB",
          "method": "GET",
          "path": "/api/tidb/replace",
          "description": "Replace one assigned TiDB pod and delete the original pod through the Kubernetes API."
        },
        {
          "name": "CheckConnection",
          "name_key": "ManagerServer.CheckConnection",
          "method": "GET",
          "path": "/api/tidb/checkconn",
          "description": "Check whether a TiDB connection was closed normally by querying TiDB status and the etcd restart marker."
        },
        {
          "name": "UpdateResourceGroup",
          "name_key": "ManagerServer.UpdateResourceGroup",
          "method": "GET",
          "path": "/api/tidb/resource_group",
          "description": "Update the resource-group assignment for a token owner in regional infra metadata."
        },
        {
          "name": "DumpStatus",
          "name_key": "ManagerServer.DumpStatus",
          "method": "GET",
          "path": "/api/tidb/status",
          "description": "Dump the current TiDB manager cache status for one pool or the default pool."
        },
        {
          "name": "GetTiDBOwner",
          "name_key": "ManagerServer.GetTiDBOwner",
          "method": "GET",
          "path": "/api/tidb/owner",
          "description": "Resolve the TiDB owner key from PD etcd for the requested keyspace."
        },
        {
          "name": "GetImportStatus",
          "name_key": "ManagerServer.GetImportStatus",
          "method": "GET",
          "path": "/api/import/status",
          "description": "Look up the current import phase by import task ID from the infra-cluster cache."
        },
        {
          "name": "GetAssignedTiDB",
          "name_key": "ManagerServer.GetAssignedTiDB",
          "method": "GET",
          "path": "/api/tidb/get_assign_tidb",
          "description": "Return the assigned TiDB endpoints for a keyspace across all TiDB pools."
        },
        {
          "name": "KillAssignedTiDB",
          "name_key": "ManagerServer.KillAssignedTiDB",
          "method": "GET",
          "path": "/api/tidb/kill_assign_tidb",
          "description": "Kill all assigned TiDB backends for the requested keyspace."
        },
        {
          "name": "GetActiveTiDB",
          "name_key": "ManagerServer.GetActiveTiDB",
          "method": "GET",
          "path": "/api/tidb/get_active_tidb",
          "description": "Return the currently active TiDB backends and their keyspace mapping."
        },
        {
          "name": "GetImportJobs",
          "name_key": "ManagerServer.GetImportJobs",
          "method": "GET",
          "path": "/api/tidb/get_active_import_jobs",
          "description": "List active import-job pods for the requested keyspace."
        },
        {
          "name": "GetExportJobs",
          "name_key": "ManagerServer.GetExportJobs",
          "method": "GET",
          "path": "/api/tidb/get_active_export_jobs",
          "description": "List active export-job pods for the requested keyspace."
        },
        {
          "name": "PprofIndex",
          "name_key": "ManagerServer.PprofIndex",
          "method": "GET",
          "path": "/debug/pprof/",
          "description": "Expose the pprof index page."
        },
        {
          "name": "PprofCmdline",
          "name_key": "ManagerServer.PprofCmdline",
          "method": "GET",
          "path": "/debug/pprof/cmdline",
          "description": "Expose the pprof cmdline endpoint."
        },
        {
          "name": "PprofProfile",
          "name_key": "ManagerServer.PprofProfile",
          "method": "GET",
          "path": "/debug/pprof/profile",
          "description": "Expose the pprof CPU profile endpoint."
        },
        {
          "name": "PprofSymbol",
          "name_key": "ManagerServer.PprofSymbol",
          "method": "GET",
          "path": "/debug/pprof/symbol",
          "description": "Expose the pprof symbol lookup endpoint."
        },
        {
          "name": "PprofTrace",
          "name_key": "ManagerServer.PprofTrace",
          "method": "GET",
          "path": "/debug/pprof/trace",
          "description": "Expose the pprof trace endpoint."
        },
        {
          "name": "WatchBackendV2",
          "name_key": "ManagerServer.WatchBackendV2",
          "description": "Stream assigned TiDB backend changes to the gateway through the TidbBackend gRPC API."
        },
        {
          "name": "GetBackendV2",
          "name_key": "ManagerServer.GetBackendV2",
          "description": "Return the currently assigned TiDB backends for the requested token through the TidbBackend gRPC API."
        }
      ]
    },
    {
      "name": "RedisConsumer",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "RedisConsumer.Run",
          "description": "Consume infra-cluster updates from Redis and refresh the regional infra cache."
        }
      ]
    },
    {
      "name": "TidbManager",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "TidbManager.Run",
          "description": "Watch etcd token state, maintain free and assigned TiDB caches, and publish backend updates for one TiDB pool."
        }
      ]
    },
    {
      "name": "TidbScaler",
      "type": "background_task",
      "methods": [
        {
          "name": "Scale",
          "name_key": "TidbScaler.Scale",
          "description": "Continuously compare free-cache size against pool min and max settings and trigger TiDB pool expansion or reduction."
        }
      ]
    },
    {
      "name": "TidbUpgrader",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "TidbUpgrader.Run",
          "description": "Detect pool revision changes, reclaim old pods, and drive TiDB pool upgrade work."
        }
      ]
    },
    {
      "name": "TidbAutoscaling",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "TidbAutoscaling.Run",
          "description": "Query o11y metrics and update TiDB autoscaling decisions for one pool."
        }
      ]
    },
    {
      "name": "TidbPDB",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "TidbPDB.Run",
          "description": "Recompute the TiDB pod disruption budget from the free-cache size and pool min-size config."
        }
      ]
    },
    {
      "name": "TidbReclaimer",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "TidbReclaimer.Run",
          "description": "Query o11y metrics to find inactive TiDB pods and reclaim them on the configured interval."
        }
      ]
    },
    {
      "name": "DmScaler",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "DmScaler.Run",
          "description": "Scale each DMCluster worker count according to the live DM source count."
        }
      ]
    },
    {
      "name": "NodeScorer",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "NodeScorer.Run",
          "description": "Continuously compute scheduler and eviction node scores from Kubernetes state and o11y metrics."
        }
      ]
    },
    {
      "name": "NodeDrainer",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "NodeDrainer.Run",
          "description": "Continuously decide whether on-demand nodes should be drained or recovered based on node-group state."
        }
      ]
    },
    {
      "name": "VersionUpdater",
      "type": "background_task",
      "methods": [
        {
          "name": "Run",
          "name_key": "VersionUpdater.Run",
          "description": "Update TiDB version metadata into the infra-cluster cache after leader election succeeds."
        }
      ]
    },
    {
      "name": "ClusterController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "ClusterController.Reconcile",
          "description": "Reconcile cluster CRs, infra metadata, TiDB activation, audit-log scheduling, and serverless cluster side effects."
        }
      ]
    },
    {
      "name": "BranchController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "BranchController.Reconcile",
          "description": "Reconcile branch CRs, branch restore state, branch TiDB activation, and branch-level serverless side effects."
        }
      ]
    },
    {
      "name": "ExportController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "ExportController.Reconcile",
          "description": "Reconcile export CRs in infra mode and, when enabled, also in regional mode."
        }
      ]
    },
    {
      "name": "ImportController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "ImportController.Reconcile",
          "description": "Reconcile import CRs in infra mode and, when enabled, also in regional mode."
        }
      ]
    },
    {
      "name": "KeyspaceController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "KeyspaceController.Reconcile",
          "description": "Reconcile normal and encrypted keyspace pool keyspaces, including PD keyspace state and activation flow."
        }
      ]
    },
    {
      "name": "KeyspacePoolConfigController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "KeyspacePoolConfigController.Reconcile",
          "description": "Reconcile normal and encrypted keyspace pool config objects."
        }
      ]
    },
    {
      "name": "SecretSyncerController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "SecretSyncerController.Reconcile",
          "description": "Sync the shared TiDB session certificate secret into the configured namespace."
        }
      ]
    },
    {
      "name": "TidbServerTemplateController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "TidbServerTemplateController.Reconcile",
          "description": "Reconcile the TiDB server template state for one pool namespace."
        }
      ]
    },
    {
      "name": "TidbPodSyncCacheController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "TidbPodSyncCacheController.Reconcile",
          "description": "Sync TiDB pod cache changes back into the pool manager state."
        }
      ]
    },
    {
      "name": "TidbPodCleanController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "TidbPodCleanController.Reconcile",
          "description": "Clean TiDB pod objects that should be removed from the pool."
        }
      ]
    },
    {
      "name": "ZoneRedundantEvicterController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "ZoneRedundantEvicterController.Reconcile",
          "description": "Evict zone-redundant TiDB pods when zone-redundancy constraints require rebalance."
        }
      ]
    },
    {
      "name": "TidbNodeScalerController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "TidbNodeScalerController.Reconcile",
          "description": "Reconcile TiDB node scaler CRs and node-scaling side effects."
        }
      ]
    },
    {
      "name": "TidbPodEvicterController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "TidbPodEvicterController.Reconcile",
          "description": "Evict TiDB pods that should be moved away from their current nodes."
        }
      ]
    },
    {
      "name": "TidbPodReschedulerController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "TidbPodReschedulerController.Reconcile",
          "description": "Reschedule TiDB pods when the rescheduler feature is enabled."
        }
      ]
    },
    {
      "name": "NodeRebalanceController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "NodeRebalanceController.Reconcile",
          "description": "Reconcile node rebalance requests and node taint or drain side effects."
        }
      ]
    },
    {
      "name": "NodeRecoverController",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "NodeRecoverController.Reconcile",
          "description": "Recover nodes after rebalance or drain actions complete."
        }
      ]
    }
  ]
}
