From fe1badf63505ca7169c05c0319fc24c3937d634d Mon Sep 17 00:00:00 2001 From: torredil Date: Sat, 26 Oct 2024 13:41:28 +0000 Subject: [PATCH] Add VolumeAttachment event registration to CSI volume limits plugin Signed-off-by: torredil --- pkg/scheduler/eventhandlers.go | 7 +++++++ pkg/scheduler/framework/plugins/nodevolumelimits/csi.go | 1 + pkg/scheduler/framework/types.go | 2 ++ pkg/scheduler/scheduler_test.go | 3 +++ 4 files changed, 13 insertions(+) diff --git a/pkg/scheduler/eventhandlers.go b/pkg/scheduler/eventhandlers.go index 33edaccf462..594a4eed87c 100644 --- a/pkg/scheduler/eventhandlers.go +++ b/pkg/scheduler/eventhandlers.go @@ -555,6 +555,13 @@ func addAllEventHandlers( return err } handlers = append(handlers, handlerRegistration) + case framework.VolumeAttachment: + if handlerRegistration, err = informerFactory.Storage().V1().VolumeAttachments().Informer().AddEventHandler( + buildEvtResHandler(at, framework.VolumeAttachment), + ); err != nil { + return err + } + handlers = append(handlers, handlerRegistration) default: // Tests may not instantiate dynInformerFactory. if dynInformerFactory == nil { diff --git a/pkg/scheduler/framework/plugins/nodevolumelimits/csi.go b/pkg/scheduler/framework/plugins/nodevolumelimits/csi.go index c33d363bb76..13d0ba8c9e7 100644 --- a/pkg/scheduler/framework/plugins/nodevolumelimits/csi.go +++ b/pkg/scheduler/framework/plugins/nodevolumelimits/csi.go @@ -89,6 +89,7 @@ func (pl *CSILimits) EventsToRegister(_ context.Context) ([]framework.ClusterEve {Event: framework.ClusterEvent{Resource: framework.CSINode, ActionType: framework.Add}}, {Event: framework.ClusterEvent{Resource: framework.Pod, ActionType: framework.Delete}, QueueingHintFn: pl.isSchedulableAfterPodDeleted}, {Event: framework.ClusterEvent{Resource: framework.PersistentVolumeClaim, ActionType: framework.Add}, QueueingHintFn: pl.isSchedulableAfterPVCAdded}, + {Event: framework.ClusterEvent{Resource: framework.VolumeAttachment, ActionType: framework.Delete}}, }, nil } diff --git a/pkg/scheduler/framework/types.go b/pkg/scheduler/framework/types.go index f7058108007..bfa08fa73d0 100644 --- a/pkg/scheduler/framework/types.go +++ b/pkg/scheduler/framework/types.go @@ -189,6 +189,7 @@ const ( PersistentVolumeClaim EventResource = "PersistentVolumeClaim" CSINode EventResource = "storage.k8s.io/CSINode" CSIDriver EventResource = "storage.k8s.io/CSIDriver" + VolumeAttachment EventResource = "storage.k8s.io/VolumeAttachment" CSIStorageCapacity EventResource = "storage.k8s.io/CSIStorageCapacity" StorageClass EventResource = "storage.k8s.io/StorageClass" ResourceClaim EventResource = "resource.k8s.io/ResourceClaim" @@ -218,6 +219,7 @@ var ( CSIDriver, CSIStorageCapacity, StorageClass, + VolumeAttachment, ResourceClaim, DeviceClass, } diff --git a/pkg/scheduler/scheduler_test.go b/pkg/scheduler/scheduler_test.go index 743ff9df633..9e9190de92b 100644 --- a/pkg/scheduler/scheduler_test.go +++ b/pkg/scheduler/scheduler_test.go @@ -875,6 +875,7 @@ func Test_UnionedGVKs(t *testing.T) { framework.PersistentVolume: framework.All - framework.Delete, framework.PersistentVolumeClaim: framework.All - framework.Delete, framework.StorageClass: framework.All - framework.Delete, + framework.VolumeAttachment: framework.Delete, }, }, { @@ -889,6 +890,7 @@ func Test_UnionedGVKs(t *testing.T) { framework.PersistentVolume: framework.All - framework.Delete, framework.PersistentVolumeClaim: framework.All - framework.Delete, framework.StorageClass: framework.All - framework.Delete, + framework.VolumeAttachment: framework.Delete, }, enableInPlacePodVerticalScaling: true, }, @@ -904,6 +906,7 @@ func Test_UnionedGVKs(t *testing.T) { framework.PersistentVolume: framework.All - framework.Delete, framework.PersistentVolumeClaim: framework.All - framework.Delete, framework.StorageClass: framework.All - framework.Delete, + framework.VolumeAttachment: framework.Delete, }, enableInPlacePodVerticalScaling: true, enableSchedulerQueueingHints: true,