{
  "repo": "tidbcloud/extension-provider-gcp",
  "binary": "gardener-extension-validator-gcp",
  "binary_path": "cmd/gardener-extension-validator-gcp/main.go",
  "surface_kind": "webhook_service",
  "type": "webhook_service",
  "services": [
    {
      "name": "ShootValidationWebhook",
      "type": "kubernetes_webhook",
      "webhook_path": "/webhooks/validate",
      "description": "Validates Shoot resources for GCP provider before creation or update",
      "methods": [
        {
          "name": "Handle",
          "name_key": "Runtime ShootValidationWebhook.Handle",
          "http_method": "POST",
          "path": "/webhooks/validate",
          "input": "admission.Request",
          "output": "admission.Response",
          "description": "Main webhook handler for Shoot validation",
          "operations": ["CREATE", "UPDATE"]
        },
        {
          "name": "validateShootCreate",
          "name_key": "Runtime ShootValidationWebhook.validateShootCreate",
          "http_method": "POST",
          "path": "/webhooks/validate",
          "input": "core.Shoot",
          "output": "error",
          "description": "Validates Shoot on creation"
        },
        {
          "name": "validateShootUpdate",
          "name_key": "Runtime ShootValidationWebhook.validateShootUpdate",
          "http_method": "POST",
          "path": "/webhooks/validate",
          "input": "core.Shoot (old), core.Shoot (new)",
          "output": "error",
          "description": "Validates Shoot on update"
        }
      ],
      "validation_functions": [
        {
          "name": "ValidateNetworking",
          "package": "github.com/gardener/gardener-extension-provider-gcp/pkg/apis/gcp/validation",
          "description": "Validates networking configuration (nodes CIDR required)"
        },
        {
          "name": "ValidateInfrastructureConfig",
          "package": "github.com/gardener/gardener-extension-provider-gcp/pkg/apis/gcp/validation",
          "description": "Validates infrastructure config (networks, VPC, flow logs)"
        },
        {
          "name": "ValidateWorkers",
          "package": "github.com/gardener/gardener-extension-provider-gcp/pkg/apis/gcp/validation",
          "description": "Validates worker configurations (volume, zones)"
        },
        {
          "name": "ValidateControlPlaneConfig",
          "package": "github.com/gardener/gardener-extension-provider-gcp/pkg/apis/gcp/validation",
          "description": "Validates control plane config (zone constraints)"
        },
        {
          "name": "ValidateInfrastructureConfigUpdate",
          "package": "github.com/gardener/gardener-extension-provider-gcp/pkg/apis/gcp/validation",
          "description": "Validates infrastructure config immutability on update"
        },
        {
          "name": "ValidateControlPlaneConfigUpdate",
          "package": "github.com/gardener/gardener-extension-provider-gcp/pkg/apis/gcp/validation",
          "description": "Validates control plane config immutability on update"
        },
        {
          "name": "ValidateWorkersUpdate",
          "package": "github.com/gardener/gardener-extension-provider-gcp/pkg/apis/gcp/validation",
          "description": "Validates workers update constraints"
        }
      ]
    }
  ],
  "extensions": {}
}
