{
  "repo": "tidbcloud/tidb-operator-cse",
  "binary": "scheduler",
  "binary_path": "cmd/scheduler/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "extensions": {
    "notes": [
      "The scheduler binary exposes a kube-scheduler extender API on the configured port and a separate pprof listener on :6060.",
      "FilterNodes and PreemptNodes both drive predicate logic over TiDB/TiKV/PD placement; PrioritizeNodes is intentionally a no-op scorer in this codebase."
    ]
  },
  "services": [
    {
      "name": "SchedulerLifecycle",
      "package": "main",
      "methods": [
        {
          "name": "BootstrapClients",
          "name_key": "SchedulerLifecycle.BootstrapClients",
          "input": "in-cluster config",
          "output": "kubernetes + operator clients",
          "type": "local"
        },
        {
          "name": "ServeExtenderAPI",
          "name_key": "SchedulerLifecycle.ServeExtenderAPI",
          "input": "port 10262",
          "output": "scheduler extender server",
          "type": "local"
        }
      ]
    },
    {
      "name": "SchedulerService",
      "package": "pkg/scheduler/server",
      "methods": [
        {
          "name": "FilterNodes",
          "name_key": "SchedulerService.FilterNodes",
          "input": "HTTP POST ExtenderArgs",
          "output": "ExtenderFilterResult",
          "path": "/scheduler/filter",
          "type": "http"
        },
        {
          "name": "PreemptNodes",
          "name_key": "SchedulerService.PreemptNodes",
          "input": "HTTP POST ExtenderPreemptionArgs",
          "output": "ExtenderPreemptionResult",
          "path": "/scheduler/preempt",
          "type": "http"
        },
        {
          "name": "PrioritizeNodes",
          "name_key": "SchedulerService.PrioritizeNodes",
          "input": "HTTP POST ExtenderArgs",
          "output": "HostPriorityList",
          "path": "/scheduler/prioritize",
          "type": "http"
        }
      ]
    },
    {
      "name": "DebugService",
      "package": "net/http/pprof",
      "methods": [
        {
          "name": "PprofIndex",
          "name_key": "DebugService.PprofIndex",
          "input": "HTTP GET",
          "output": "pprof index",
          "path": "/debug/pprof/",
          "type": "http"
        },
        {
          "name": "PprofCmdline",
          "name_key": "DebugService.PprofCmdline",
          "input": "HTTP GET",
          "output": "pprof cmdline",
          "path": "/debug/pprof/cmdline",
          "type": "http"
        },
        {
          "name": "PprofProfile",
          "name_key": "DebugService.PprofProfile",
          "input": "HTTP GET",
          "output": "CPU profile",
          "path": "/debug/pprof/profile",
          "type": "http"
        },
        {
          "name": "PprofSymbol",
          "name_key": "DebugService.PprofSymbol",
          "input": "HTTP GET",
          "output": "symbol lookup",
          "path": "/debug/pprof/symbol",
          "type": "http"
        },
        {
          "name": "PprofTrace",
          "name_key": "DebugService.PprofTrace",
          "input": "HTTP GET",
          "output": "execution trace",
          "path": "/debug/pprof/trace",
          "type": "http"
        }
      ]
    }
  ]
}
