1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-06 16:06:56 +00:00
kyverno/pkg/clients/dclient/utils.go
Charles-Edouard Brétéché 89cfa88c1e
fix: lookup GVK from GVR (#6516)
* fix: lookup GVK from GVR

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

* fix

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

* fix tests

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

* error

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

---------

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-03-09 22:52:44 +08:00

28 lines
1.1 KiB
Go

package dclient
import (
"strings"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/discovery"
)
func logDiscoveryErrors(err error) {
discoveryError := err.(*discovery.ErrGroupDiscoveryFailed)
for gv, e := range discoveryError.Groups {
if gv.Group == "custom.metrics.k8s.io" || gv.Group == "metrics.k8s.io" || gv.Group == "external.metrics.k8s.io" {
// These errors occur when Prometheus is installed as an external metrics server
// See: https://github.com/kyverno/kyverno/issues/1490
logger.V(3).Info("failed to retrieve metrics API group", "gv", gv)
continue
}
logger.Error(e, "failed to retrieve API group", "gv", gv)
}
}
func isMetricsServerUnavailable(gv schema.GroupVersion, err error) bool {
// error message is defined at:
// https://github.com/kubernetes/apimachinery/blob/2456ebdaba229616fab2161a615148884b46644b/pkg/api/errors/errors.go#L432
return (gv.Group == "metrics.k8s.io" || gv.Group == "custom.metrics.k8s.io" || gv.Group == "external.metrics.k8s.io") &&
strings.Contains(err.Error(), "the server is currently unable to handle the request")
}