Skip to content

Commit b42772c

Browse files
authored
Merge pull request kubernetes#127798 from sanposhiho/storage-cleanup
cleanup: use a general buildEvtResHandler for StorageClass
2 parents c5f2fc0 + d254080 commit b42772c

File tree

1 file changed

+23
-45
lines changed

1 file changed

+23
-45
lines changed

pkg/scheduler/eventhandlers.go

Lines changed: 23 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -46,27 +46,6 @@ import (
4646
"k8s.io/kubernetes/pkg/scheduler/util/assumecache"
4747
)
4848

49-
func (sched *Scheduler) onStorageClassAdd(obj interface{}) {
50-
start := time.Now()
51-
defer metrics.EventHandlingLatency.WithLabelValues(framework.StorageClassAdd.Label).Observe(metrics.SinceInSeconds(start))
52-
logger := sched.logger
53-
sc, ok := obj.(*storagev1.StorageClass)
54-
if !ok {
55-
logger.Error(nil, "Cannot convert to *storagev1.StorageClass", "obj", obj)
56-
return
57-
}
58-
59-
// CheckVolumeBindingPred fails if pod has unbound immediate PVCs. If these
60-
// PVCs have specified StorageClass name, creating StorageClass objects
61-
// with late binding will cause predicates to pass, so we need to move pods
62-
// to active queue.
63-
// We don't need to invalidate cached results because results will not be
64-
// cached for pod that has unbound immediate PVCs.
65-
if sc.VolumeBindingMode != nil && *sc.VolumeBindingMode == storagev1.VolumeBindingWaitForFirstConsumer {
66-
sched.SchedulingQueue.MoveAllToActiveOrBackoffQueue(logger, framework.StorageClassAdd, nil, sc, nil)
67-
}
68-
}
69-
7049
func (sched *Scheduler) addNodeToCache(obj interface{}) {
7150
start := time.Now()
7251
defer metrics.EventHandlingLatency.WithLabelValues(framework.NodeAdd.Label).Observe(metrics.SinceInSeconds(start))
@@ -437,8 +416,25 @@ func addAllEventHandlers(
437416
evt := framework.ClusterEvent{Resource: gvk, ActionType: framework.Add, Label: label}
438417
funcs.AddFunc = func(obj interface{}) {
439418
start := time.Now()
419+
defer metrics.EventHandlingLatency.WithLabelValues(label).Observe(metrics.SinceInSeconds(start))
420+
if gvk == framework.StorageClass && !utilfeature.DefaultFeatureGate.Enabled(features.SchedulerQueueingHints) {
421+
sc, ok := obj.(*storagev1.StorageClass)
422+
if !ok {
423+
logger.Error(nil, "Cannot convert to *storagev1.StorageClass", "obj", obj)
424+
return
425+
}
426+
427+
// CheckVolumeBindingPred fails if pod has unbound immediate PVCs. If these
428+
// PVCs have specified StorageClass name, creating StorageClass objects
429+
// with late binding will cause predicates to pass, so we need to move pods
430+
// to active queue.
431+
// We don't need to invalidate cached results because results will not be
432+
// cached for pod that has unbound immediate PVCs.
433+
if sc.VolumeBindingMode == nil || *sc.VolumeBindingMode != storagev1.VolumeBindingWaitForFirstConsumer {
434+
return
435+
}
436+
}
440437
sched.SchedulingQueue.MoveAllToActiveOrBackoffQueue(logger, evt, nil, obj, nil)
441-
metrics.EventHandlingLatency.WithLabelValues(label).Observe(metrics.SinceInSeconds(start))
442438
}
443439
}
444440
if at&framework.Update != 0 {
@@ -550,30 +546,12 @@ func addAllEventHandlers(
550546
handlers = append(handlers, handlerRegistration)
551547
}
552548
case framework.StorageClass:
553-
if at&framework.Add != 0 {
554-
if handlerRegistration, err = informerFactory.Storage().V1().StorageClasses().Informer().AddEventHandler(
555-
cache.ResourceEventHandlerFuncs{
556-
AddFunc: sched.onStorageClassAdd,
557-
},
558-
); err != nil {
559-
return err
560-
}
561-
handlers = append(handlers, handlerRegistration)
562-
}
563-
if at&framework.Update != 0 {
564-
if handlerRegistration, err = informerFactory.Storage().V1().StorageClasses().Informer().AddEventHandler(
565-
cache.ResourceEventHandlerFuncs{
566-
UpdateFunc: func(old, obj interface{}) {
567-
start := time.Now()
568-
defer metrics.EventHandlingLatency.WithLabelValues(framework.StorageClassUpdate.Label).Observe(metrics.SinceInSeconds(start))
569-
sched.SchedulingQueue.MoveAllToActiveOrBackoffQueue(logger, framework.StorageClassUpdate, old, obj, nil)
570-
},
571-
},
572-
); err != nil {
573-
return err
574-
}
575-
handlers = append(handlers, handlerRegistration)
549+
if handlerRegistration, err = informerFactory.Storage().V1().StorageClasses().Informer().AddEventHandler(
550+
buildEvtResHandler(at, framework.StorageClass, "StorageClass"),
551+
); err != nil {
552+
return err
576553
}
554+
handlers = append(handlers, handlerRegistration)
577555
default:
578556
// Tests may not instantiate dynInformerFactory.
579557
if dynInformerFactory == nil {

0 commit comments

Comments
 (0)