Skip to content

Commit 380b0bf

Browse files
committed
check if the request is a resize operation and use his own function for overcommit
1 parent 75e8558 commit 380b0bf

1 file changed

Lines changed: 12 additions & 5 deletions

File tree

internal/webhook/v1alphav1/mutating/pod_webhook.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ import (
1616
"k8s.io/client-go/tools/record"
1717
ctrl "sigs.k8s.io/controller-runtime"
1818
"sigs.k8s.io/controller-runtime/pkg/client"
19-
logf "sigs.k8s.io/controller-runtime/pkg/log"
2019
"sigs.k8s.io/controller-runtime/pkg/webhook"
20+
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
2121
)
2222

2323
// nolint:unused
2424
// log is for logging in this package.
25-
var podlog = logf.Log.WithName("webhook")
2625

2726
// PodCustomDefaulter struct is responsible for setting default values on the custom resource of the Kind Pod.
2827
type PodCustomDefaulter struct {
@@ -40,19 +39,27 @@ func (d *PodCustomDefaulter) InjectClient(c client.Client) {
4039

4140
var _ webhook.CustomDefaulter = &PodCustomDefaulter{}
4241

43-
// Default implements webhook.CustomDefaulter so a webhook will be registered for the Kind Pod.
4442
func (d *PodCustomDefaulter) Default(ctx context.Context, obj runtime.Object) error {
4543
pod, ok := obj.(*corev1.Pod)
4644
if !ok {
4745
return fmt.Errorf("expected a Pod object but got %T", obj)
4846
}
4947

50-
// Call the Overcommit function and pass the EventRecorder
48+
isResize := false
49+
if req, err := admission.RequestFromContext(ctx); err == nil {
50+
isResize = req.SubResource == "resize"
51+
}
52+
53+
if isResize {
54+
overcommit.OvercommitOnResize(pod, d.Recorder, d.Client)
55+
return nil
56+
}
57+
5158
overcommit.Overcommit(pod, d.Recorder, d.Client)
5259
return nil
5360
}
5461

55-
// +kubebuilder:webhook:path=/mutate--v1-pod,mutating=true,failurePolicy=ignore,sideEffects=None,groups="",resources=pods,verbs=create;update,versions=v1,name=mutating-pod-v1.overcommit.inditex.dev,admissionReviewVersions=v1
62+
// +kubebuilder:webhook:path=/mutate--v1-pod,mutating=true,failurePolicy=ignore,reinvocationPolicy=IfNeeded,sideEffects=None,groups="",resources=pods;pods/resize,verbs=create;update,versions=v1,name=mutating-pod-v1.overcommit.inditex.dev,admissionReviewVersions=v1
5663
// +kubebuilder:rbac:groups="",resources=pods,verbs=get;list;watch
5764

5865
// SetupPodWebhookWithManager registers the webhook for Pod in the manager.

0 commit comments

Comments
 (0)