{
  "repo": "tidbcloud/infra-provider",
  "binary": "cluster-server",
  "binary_path": "cluster-server/main.go",
  "dependencies": {
    "ClusterServerGateway.GatewayRoutes": {
      "infrastructure": {},
      "services": []
    },
    "ClusterServerGateway.healthz": {
      "infrastructure": {},
      "services": []
    },
    "ClusterServerGRPC.ClusterService": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Read and mutate cluster-related CRs",
              "trigger": "Serve cluster APIs",
              "implementation": "server.NewClusterServer(mgr.GetClient(), ...)"
            }
          ]
        },
        "cloud-provider": {
          "conditions": [
            "Provider-specific"
          ],
          "operations": [
            {
              "operation": "AWS/GCP/Azure audit and cloud operations",
              "trigger": "Serve provider-specific cluster actions",
              "implementation": "initAWSClientSet / gcp.NewClientSet / azure.NewClientSet"
            }
          ]
        }
      },
      "services": []
    },
    "ClusterServerGRPC.ClusterOperationService": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Operate on ClusterOperation resources",
              "trigger": "Run operation workflows",
              "implementation": "operation.NewServer(mgr.GetClient(), utiltime.RealClock{})"
            }
          ]
        }
      },
      "services": []
    },
    "ClusterServerGRPC.TidbGroupService": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Read and mutate TiDB group resources",
              "trigger": "Serve TiDB group APIs",
              "implementation": "server.NewTidbGroupServer(mgr.GetClient())"
            }
          ]
        }
      },
      "services": []
    },
    "ClusterServerGRPC.PrivateLinkService": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Read and mutate private link resources",
              "trigger": "Serve private link APIs",
              "implementation": "server.PrivateLinkServer{KubeClient: mgr.GetClient()}"
            }
          ]
        }
      },
      "services": []
    },
    "ClusterServerGRPC.ReplayService": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Replay workflow resource access",
              "trigger": "Serve replay APIs",
              "implementation": "server.NewReplayServer(mgr.GetClient(), ...)"
            }
          ]
        }
      },
      "services": []
    },
    "ClusterServerGRPC.BRService": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Backup and restore resource access",
              "trigger": "Serve BR APIs",
              "implementation": "server.NewBRServer(mgr.GetClient(), instanceTypeProvider)"
            }
          ]
        }
      },
      "services": []
    },
    "ClusterServerGRPC.Health": {
      "infrastructure": {},
      "services": []
    }
  }
}
