1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-28 02:18:15 +00:00

fix: non watchable resources in report controller (#4888)

* fix: non watchable resources in report controller

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix events

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
Charles-Edouard Brétéché 2022-10-12 07:36:24 +02:00 committed by GitHub
parent f6cb33de95
commit 465f9d204b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -11,7 +11,9 @@ import (
"github.com/kyverno/kyverno/pkg/clients/dclient"
"github.com/kyverno/kyverno/pkg/controllers"
"github.com/kyverno/kyverno/pkg/controllers/report/utils"
pkgutils "github.com/kyverno/kyverno/pkg/utils"
controllerutils "github.com/kyverno/kyverno/pkg/utils/controller"
kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
reportutils "github.com/kyverno/kyverno/pkg/utils/report"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@ -126,11 +128,18 @@ func (c *controller) updateDynamicWatchers(ctx context.Context) error {
kinds := utils.BuildKindSet(logger, utils.RemoveNonBackgroundPolicies(logger, append(clusterPolicies, policies...)...)...)
gvrs := map[string]schema.GroupVersionResource{}
for _, kind := range kinds.List() {
gvr, err := c.client.Discovery().GetGVRFromKind(kind)
if err == nil {
gvrs[kind] = gvr
} else {
apiVersion, kind := kubeutils.GetKindFromGVK(kind)
apiResource, gvr, err := c.client.Discovery().FindResource(apiVersion, kind)
if err != nil {
logger.Error(err, "failed to get gvr from kind", "kind", kind)
} else if apiVersion == "" && kind == "Event" {
logger.Info("Event cannot be an owner, skipping", "apiVersion", apiVersion, "kind", kind)
} else {
if pkgutils.ContainsString(apiResource.Verbs, "list") && pkgutils.ContainsString(apiResource.Verbs, "watch") {
gvrs[kind] = gvr
} else {
logger.Info("list/watch not supported for kind", "kind", kind)
}
}
}
dynamicWatchers := map[schema.GroupVersionResource]*watcher{}