in internal/controller/pod_controller.go [48:78]
func (a *PodAdmissionWebhook) Handle(ctx context.Context, req admission.Request) admission.Response {
l := logf.FromContext(ctx)
p := corev1.Pod{}
err := a.decoder.Decode(req, &p)
if err != nil {
l.Info("/mutate-pod request can't be processed",
"kind", req.Kind.Kind, "ns", req.Namespace, "name", req.Name)
return admission.Errored(http.StatusInternalServerError, err)
}
updatedPod, err := a.handleCreatePodRequest(ctx, p)
if err != nil {
return admission.Errored(http.StatusInternalServerError, err)
}
if updatedPod == nil {
return admission.Allowed("no changes to pod")
}
// Marshal the updated Pod and prepare to send a response
marshaledRes, err := json.Marshal(updatedPod)
if err != nil {
l.Error(err, "Unable to marshal workload result in webhook",
"kind", req.Kind.Kind, "ns", req.Namespace, "name", req.Name)
return admission.Errored(http.StatusInternalServerError,
fmt.Errorf("unable to marshal workload result"))
}
l.Info("updated proxy on pod", "Operation", req.Operation, "Namespace", req.Namespace, "Name", req.Name)
return admission.PatchResponseFromRaw(req.Object.Raw, marshaledRes)
}