mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-13 19:28:55 +00:00
fix: add missing tombstone calls (#3784)
Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com> Co-authored-by: shuting <shuting@nirmata.com>
This commit is contained in:
parent
400e486b46
commit
32789d1c0d
3 changed files with 39 additions and 15 deletions
|
@ -8,6 +8,7 @@ import (
|
|||
kyverno "github.com/kyverno/kyverno/api/kyverno/v1"
|
||||
kyvernoinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/kyverno/v1"
|
||||
kyvernolister "github.com/kyverno/kyverno/pkg/client/listers/kyverno/v1"
|
||||
kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
@ -67,8 +68,12 @@ func (c *Controller) updatePolicy(old, cur interface{}) {
|
|||
}
|
||||
|
||||
func (c *Controller) deletePolicy(obj interface{}) {
|
||||
p := obj.(*kyverno.ClusterPolicy)
|
||||
c.Cache.remove(p)
|
||||
p, ok := kubeutils.GetObjectWithTombstone(obj).(*kyverno.ClusterPolicy)
|
||||
if ok {
|
||||
c.Cache.remove(p)
|
||||
} else {
|
||||
logger.Info("Failed to get deleted object, the deleted policy cannot be removed from the cache", "obj", obj)
|
||||
}
|
||||
}
|
||||
|
||||
// addNsPolicy - Add Policy to cache
|
||||
|
@ -89,8 +94,12 @@ func (c *Controller) updateNsPolicy(old, cur interface{}) {
|
|||
|
||||
// deleteNsPolicy - Delete Policy from cache
|
||||
func (c *Controller) deleteNsPolicy(obj interface{}) {
|
||||
p := obj.(*kyverno.Policy)
|
||||
c.Cache.remove(p)
|
||||
p, ok := kubeutils.GetObjectWithTombstone(obj).(*kyverno.Policy)
|
||||
if ok {
|
||||
c.Cache.remove(p)
|
||||
} else {
|
||||
logger.Info("Failed to get deleted object, the deleted cluster policy cannot be removed from the cache", "obj", obj)
|
||||
}
|
||||
}
|
||||
|
||||
// CheckPolicySync wait until the internal policy cache is fully loaded
|
||||
|
|
|
@ -10,6 +10,15 @@ import (
|
|||
"github.com/go-logr/logr"
|
||||
changerequest "github.com/kyverno/kyverno/api/kyverno/v1alpha2"
|
||||
report "github.com/kyverno/kyverno/api/policyreport/v1alpha2"
|
||||
kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned"
|
||||
requestinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/kyverno/v1alpha2"
|
||||
policyreportinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/policyreport/v1alpha2"
|
||||
requestlister "github.com/kyverno/kyverno/pkg/client/listers/kyverno/v1alpha2"
|
||||
policyreport "github.com/kyverno/kyverno/pkg/client/listers/policyreport/v1alpha2"
|
||||
"github.com/kyverno/kyverno/pkg/config"
|
||||
dclient "github.com/kyverno/kyverno/pkg/dclient"
|
||||
kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
|
||||
"github.com/kyverno/kyverno/pkg/version"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -23,15 +32,6 @@ import (
|
|||
listerv1 "k8s.io/client-go/listers/core/v1"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
"k8s.io/client-go/util/workqueue"
|
||||
|
||||
kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned"
|
||||
requestinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/kyverno/v1alpha2"
|
||||
policyreportinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/policyreport/v1alpha2"
|
||||
requestlister "github.com/kyverno/kyverno/pkg/client/listers/kyverno/v1alpha2"
|
||||
policyreport "github.com/kyverno/kyverno/pkg/client/listers/policyreport/v1alpha2"
|
||||
"github.com/kyverno/kyverno/pkg/config"
|
||||
dclient "github.com/kyverno/kyverno/pkg/dclient"
|
||||
"github.com/kyverno/kyverno/pkg/version"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -208,8 +208,12 @@ func (g *ReportGenerator) updateClusterReportChangeRequest(old interface{}, cur
|
|||
}
|
||||
|
||||
func (g *ReportGenerator) deletePolicyReport(obj interface{}) {
|
||||
report := obj.(*report.PolicyReport)
|
||||
g.log.V(2).Info("PolicyReport deleted", "name", report.GetName())
|
||||
report, ok := kubeutils.GetObjectWithTombstone(obj).(*report.PolicyReport)
|
||||
if ok {
|
||||
g.log.V(2).Info("PolicyReport deleted", "name", report.GetName())
|
||||
} else {
|
||||
g.log.Info("Failed to get deleted object", "obj", obj)
|
||||
}
|
||||
g.ReconcileCh <- false
|
||||
}
|
||||
|
||||
|
|
11
pkg/utils/kube/tombstone.go
Normal file
11
pkg/utils/kube/tombstone.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package kube
|
||||
|
||||
import "k8s.io/client-go/tools/cache"
|
||||
|
||||
func GetObjectWithTombstone(obj interface{}) interface{} {
|
||||
tombstone, ok := obj.(cache.DeletedFinalStateUnknown)
|
||||
if ok {
|
||||
return tombstone.Obj
|
||||
}
|
||||
return obj
|
||||
}
|
Loading…
Add table
Reference in a new issue