func()

in ray-on-gke/tpu/kuberay-tpu-webhook/main.go [128:158]


func (t *TPUWebhookServer) Validate(w http.ResponseWriter, r *http.Request) {
	admissionReview := &admissionv1.AdmissionReview{}
	if err := json.NewDecoder(r.Body).Decode(admissionReview); err != nil {
		http.Error(w, "Error decoding request body", http.StatusBadRequest)
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	if admissionReview.Request == nil || admissionReview.Request.Kind.Kind != "RayCluster" {
		http.Error(w, "Invalid Kind", http.StatusBadRequest)
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	klog.V(0).InfoS("Validate", "Received review for RayCluster creation: %s", admissionReview.Request.Name)
	response, err := validateRayCluster(admissionReview)
	if err != nil {
		klog.Errorf("Failed to validate RayCluster: %s", err)
		http.Error(w, "Failed to validate RayCluster", http.StatusForbidden)
		w.WriteHeader(http.StatusForbidden)
		return
	}
	admissionReview.Response = response
	responseBytes, err := json.Marshal(admissionReview)
	if err != nil {
		klog.Errorf("Failed to encode response: %s", err)
		http.Error(w, "Failed to encode response", http.StatusInternalServerError)
		w.WriteHeader(http.StatusInternalServerError)
		return
	}
	fmt.Fprint(w, string(responseBytes))
}