{
  "repo": "tidbcloud/infra-provider",
  "binary": "cluster-controller",
  "binary_path": "cluster-controller/main.go",
  "dependencies": {
    "MetricsService.metrics": {
      "infrastructure": {},
      "services": []
    },
    "MetricsService.pprof": {
      "infrastructure": {},
      "services": []
    },
    "ProbeService.healthz": {
      "infrastructure": {},
      "services": []
    },
    "ProbeService.readyz": {
      "infrastructure": {},
      "services": []
    },
    "ClusterControllerManager.RunCMControllers": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Controller-runtime watch/reconcile",
              "trigger": "Manage cluster, workflow, network, backup, restore, replay, import, TiCDC, and related CRs",
              "implementation": "mustRegisterCMControllers(rootConfig, mgr, mt)"
            }
          ]
        },
        "cloud-provider": {
          "conditions": [
            "Provider-specific"
          ],
          "operations": [
            {
              "operation": "AWS/GCP/Azure cloud API calls",
              "trigger": "Provision and mutate cluster infrastructure and data-plane resources",
              "implementation": "controller registrations in internal/cmd/cm.go, br.go, import.go, cdc.go, dm.go, dumpling.go"
            }
          ]
        }
      },
      "services": []
    }
  },
  "notes": [
    "The root binary dispatches into controller-manager flows through Cobra commands in internal/cmd.",
    "When dry-run mode is enabled it keeps serving probe endpoints after the manager stops."
  ]
}
