in pkg/noderesourcetopology/filter.go [233:269]
func New(args runtime.Object, handle framework.Handle) (framework.Plugin, error) {
klog.V(5).Infof("creating new TopologyMatch plugin")
tcfg, ok := args.(*apiconfig.NodeResourceTopologyMatchArgs)
if !ok {
return nil, fmt.Errorf("want args to be of type NodeResourceTopologyMatchArgs, got %T", args)
}
kubeConfig, err := clientcmd.BuildConfigFromFlags(tcfg.MasterOverride, tcfg.KubeConfigPath)
if err != nil {
klog.Errorf("Cannot create kubeconfig based on: %s, %s, %v", tcfg.KubeConfigPath, tcfg.MasterOverride, err)
return nil, err
}
topoClient, err := topoclientset.NewForConfig(kubeConfig)
if err != nil {
klog.Errorf("Cannot create clientset for NodeTopologyResource: %s, %s", kubeConfig, err)
return nil, err
}
topologyInformerFactory := topologyinformers.NewSharedInformerFactory(topoClient, 0)
nodeTopologyInformer := topologyInformerFactory.Topology().V1alpha1().NodeResourceTopologies()
topologyMatch := &TopologyMatch{
policyHandlers: PolicyHandlerMap{
topologyv1alpha1.SingleNUMANodePodLevel: SingleNUMAPodLevelHandler,
topologyv1alpha1.SingleNUMANodeContainerLevel: SingleNUMAContainerLevelHandler,
},
lister: nodeTopologyInformer.Lister(),
namespaces: tcfg.Namespaces,
}
klog.V(5).Infof("start nodeTopologyInformer")
ctx := context.Background()
topologyInformerFactory.Start(ctx.Done())
topologyInformerFactory.WaitForCacheSync(ctx.Done())
return topologyMatch, nil
}