func New()

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
}