mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-15 04:07:46 +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"
|
kyverno "github.com/kyverno/kyverno/api/kyverno/v1"
|
||||||
kyvernoinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/kyverno/v1"
|
kyvernoinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/kyverno/v1"
|
||||||
kyvernolister "github.com/kyverno/kyverno/pkg/client/listers/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"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
|
@ -67,8 +68,12 @@ func (c *Controller) updatePolicy(old, cur interface{}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) deletePolicy(obj interface{}) {
|
func (c *Controller) deletePolicy(obj interface{}) {
|
||||||
p := obj.(*kyverno.ClusterPolicy)
|
p, ok := kubeutils.GetObjectWithTombstone(obj).(*kyverno.ClusterPolicy)
|
||||||
|
if ok {
|
||||||
c.Cache.remove(p)
|
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
|
// addNsPolicy - Add Policy to cache
|
||||||
|
@ -89,8 +94,12 @@ func (c *Controller) updateNsPolicy(old, cur interface{}) {
|
||||||
|
|
||||||
// deleteNsPolicy - Delete Policy from cache
|
// deleteNsPolicy - Delete Policy from cache
|
||||||
func (c *Controller) deleteNsPolicy(obj interface{}) {
|
func (c *Controller) deleteNsPolicy(obj interface{}) {
|
||||||
p := obj.(*kyverno.Policy)
|
p, ok := kubeutils.GetObjectWithTombstone(obj).(*kyverno.Policy)
|
||||||
|
if ok {
|
||||||
c.Cache.remove(p)
|
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
|
// CheckPolicySync wait until the internal policy cache is fully loaded
|
||||||
|
|
|
@ -10,6 +10,15 @@ import (
|
||||||
"github.com/go-logr/logr"
|
"github.com/go-logr/logr"
|
||||||
changerequest "github.com/kyverno/kyverno/api/kyverno/v1alpha2"
|
changerequest "github.com/kyverno/kyverno/api/kyverno/v1alpha2"
|
||||||
report "github.com/kyverno/kyverno/api/policyreport/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"
|
v1 "k8s.io/api/core/v1"
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
@ -23,15 +32,6 @@ import (
|
||||||
listerv1 "k8s.io/client-go/listers/core/v1"
|
listerv1 "k8s.io/client-go/listers/core/v1"
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"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 (
|
const (
|
||||||
|
@ -208,8 +208,12 @@ func (g *ReportGenerator) updateClusterReportChangeRequest(old interface{}, cur
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *ReportGenerator) deletePolicyReport(obj interface{}) {
|
func (g *ReportGenerator) deletePolicyReport(obj interface{}) {
|
||||||
report := obj.(*report.PolicyReport)
|
report, ok := kubeutils.GetObjectWithTombstone(obj).(*report.PolicyReport)
|
||||||
|
if ok {
|
||||||
g.log.V(2).Info("PolicyReport deleted", "name", report.GetName())
|
g.log.V(2).Info("PolicyReport deleted", "name", report.GetName())
|
||||||
|
} else {
|
||||||
|
g.log.Info("Failed to get deleted object", "obj", obj)
|
||||||
|
}
|
||||||
g.ReconcileCh <- false
|
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