func New()

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
}