{
  "repo": "tidbcloud/infra-provider",
  "binary": "cluster-prober",
  "binary_path": "cluster-prober/main.go",
  "dependencies": {
    "MetricsService.metrics": {
      "infrastructure": {},
      "services": []
    },
    "ClusterProbers.RunRegisteredProbers": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "InfraKubeConfig configured"
          ],
          "operations": [
            {
              "operation": "Cache Cluster CRs",
              "trigger": "Select clusters for probing",
              "implementation": "cache.New(cfg, cache.Options{ByObject: buildCacheSelector(selector)})"
            }
          ]
        }
      },
      "services": [
        {
          "name": "database",
          "target_interface": "Cluster database connectivity",
          "operation_type": "probe",
          "conditions": [
            "cfg.Probers.Database != nil"
          ],
          "operations": [
            {
              "operation": "Database probe",
              "trigger": "Collect database health metrics",
              "implementation": "dbprober.New(cfg.Probers.Database, deps)"
            }
          ]
        },
        {
          "name": "infra",
          "target_interface": "Infra resource state",
          "operation_type": "probe",
          "conditions": [
            "cfg.Probers.Infra != nil"
          ],
          "operations": [
            {
              "operation": "Infra probe",
              "trigger": "Collect infra state metrics",
              "implementation": "infraprober.New(cfg.Probers.Infra, deps)"
            }
          ]
        },
        {
          "name": "platform",
          "target_interface": "Platform health state",
          "operation_type": "probe",
          "conditions": [
            "cfg.Probers.Platform != nil"
          ],
          "operations": [
            {
              "operation": "Platform probe",
              "trigger": "Collect platform metrics",
              "implementation": "platformprober.New(cfg.Probers.Platform, deps)"
            }
          ]
        }
      ]
    }
  }
}
