in pkg/sysched/sysched.go [400:441]
func New(_ context.Context, obj runtime.Object, handle framework.Handle) (framework.Plugin, error) {
sc := SySched{handle: handle}
sc.HostToPods = make(map[string][]*v1.Pod)
sc.HostSyscalls = make(map[string]sets.Set[string])
sc.ExSAvg = 0
sc.ExSAvgCount = 1
args, err := getArgs(obj)
if err != nil {
return nil, err
}
// get the default syscall profile CR namespace and name for all syscalls
sc.DefaultProfileNamespace = args.DefaultProfileNamespace
sc.DefaultProfileName = args.DefaultProfileName
scheme := runtime.NewScheme()
_ = clientscheme.AddToScheme(scheme)
_ = v1.AddToScheme(scheme)
_ = v1alpha1.AddToScheme(scheme)
v1beta1.AddToScheme(scheme)
client, err := client.New(handle.KubeConfig(), client.Options{Scheme: scheme})
if err != nil {
return nil, err
}
sc.client = client
podInformer := handle.SharedInformerFactory().Core().V1().Pods()
podInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{
AddFunc: sc.podAdded,
UpdateFunc: sc.podUpdated,
DeleteFunc: sc.podDeleted,
},
)
return &sc, nil
}