diff --git a/images/virtualization-artifact/pkg/audit/handler/handler.go b/images/virtualization-artifact/pkg/audit/handler/handler.go index 6857fcf7d9..2d14c22b4b 100644 --- a/images/virtualization-artifact/pkg/audit/handler/handler.go +++ b/images/virtualization-artifact/pkg/audit/handler/handler.go @@ -105,17 +105,19 @@ func NewEventHandler( if err := eventLogger.Fill(); err != nil { log.Debug("fail to fill event: %w", err) + return err } if !eventLogger.ShouldLog() { - break + return nil } if err := eventLogger.Log(); err != nil { log.Debug("fail to log event: %w", err) + return err } - break + return nil } return nil diff --git a/images/virtualization-artifact/pkg/audit/informer/informer.go b/images/virtualization-artifact/pkg/audit/informer/informer.go index 70840ca3ff..7ca2eb462d 100644 --- a/images/virtualization-artifact/pkg/audit/informer/informer.go +++ b/images/virtualization-artifact/pkg/audit/informer/informer.go @@ -68,6 +68,11 @@ func NewInformerList(ctx context.Context, kubeCfg *rest.Config, ttlCache cache) vmInformer := virtSharedInformerFactory.Virtualization().V1alpha2().VirtualMachines().Informer() _, err = vmInformer.AddEventHandler(kubecache.ResourceEventHandlerFuncs{ DeleteFunc: func(obj any) { + _, ok := obj.(kubecache.DeletedFinalStateUnknown) + if ok { + return + } + vm := obj.(*v1alpha2.VirtualMachine) key := fmt.Sprintf("virtualmachines/%s/%s", vm.Namespace, vm.Name) ttlCache.Add(key, vm) @@ -82,6 +87,11 @@ func NewInformerList(ctx context.Context, kubeCfg *rest.Config, ttlCache cache) vdInformer := virtSharedInformerFactory.Virtualization().V1alpha2().VirtualDisks().Informer() _, err = vdInformer.AddEventHandler(kubecache.ResourceEventHandlerFuncs{ DeleteFunc: func(obj any) { + _, ok := obj.(kubecache.DeletedFinalStateUnknown) + if ok { + return + } + vd := obj.(*v1alpha2.VirtualDisk) key := fmt.Sprintf("pods/%s/%s", vd.Namespace, vd.Name) ttlCache.Add(key, vd) @@ -96,6 +106,11 @@ func NewInformerList(ctx context.Context, kubeCfg *rest.Config, ttlCache cache) podInformer := coreSharedInformerFactory.Core().V1().Pods().Informer() _, err = podInformer.AddEventHandler(kubecache.ResourceEventHandlerFuncs{ DeleteFunc: func(obj any) { + _, ok := obj.(kubecache.DeletedFinalStateUnknown) + if ok { + return + } + pod := obj.(*corev1.Pod) key := fmt.Sprintf("pods/%s/%s", pod.Namespace, pod.Name) ttlCache.Add(key, pod) @@ -110,6 +125,11 @@ func NewInformerList(ctx context.Context, kubeCfg *rest.Config, ttlCache cache) internalVMIInformer := GetInternalVMIInformer(dynamicInformerFactory).Informer() _, err = internalVMIInformer.AddEventHandler(kubecache.ResourceEventHandlerFuncs{ DeleteFunc: func(obj any) { + _, ok := obj.(kubecache.DeletedFinalStateUnknown) + if ok { + return + } + unstructuredObj, ok := obj.(*unstructured.Unstructured) if !ok { return