in pkg/trimaran/loadvariationriskbalancing/loadvariationriskbalancing.go [53:89]
func New(obj runtime.Object, handle framework.Handle) (framework.Plugin, error) {
klog.V(4).Infof("Creating new instance of the LoadVariationRiskBalancing plugin")
collector, err := newCollector(obj)
if err != nil {
return nil, err
}
podAssignEventHandler := trimaran.New()
handle.SharedInformerFactory().Core().V1().Pods().Informer().AddEventHandler(
cache.FilteringResourceEventHandler{
FilterFunc: func(obj interface{}) bool {
switch t := obj.(type) {
case *v1.Pod:
return isAssigned(t)
case cache.DeletedFinalStateUnknown:
if pod, ok := t.Obj.(*v1.Pod); ok {
return isAssigned(pod)
}
utilruntime.HandleError(fmt.Errorf("unable to convert object %T to *v1.Pod", obj))
return false
default:
utilruntime.HandleError(fmt.Errorf("unable to handle object: %T", obj))
return false
}
},
Handler: podAssignEventHandler,
},
)
pl := &LoadVariationRiskBalancing{
handle: handle,
eventHandler: podAssignEventHandler,
collector: collector,
}
return pl, nil
}