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

fix: openapi controller discovery (#4912)

* refactor: openapi controller part 2

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

* rename

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

* controller

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

* rename 2

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

* move controller

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

* move controller

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

* fix: openapi controller discovery

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 21:23:47 +02:00 committed by GitHub
parent b3021f5a57
commit 25963aba60
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 7 deletions

View file

@ -11,13 +11,18 @@ import (
"github.com/kyverno/kyverno/pkg/logging"
"github.com/kyverno/kyverno/pkg/metrics"
util "github.com/kyverno/kyverno/pkg/utils"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtimeSchema "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/discovery"
)
const (
// Workers is the number of workers for this controller
Workers = 1
ControllerName = "openapi-controller"
)
type Controller interface {
controllers.Controller
CheckSync(context.Context)
@ -103,15 +108,27 @@ func (c *controller) sync() {
func (c *controller) updateInClusterKindToAPIVersions() error {
util.OverrideRuntimeErrorHandler()
_, apiResourceLists, err := discovery.ServerGroupsAndResources(c.client.Discovery().DiscoveryInterface())
if err != nil && !strings.Contains(err.Error(), skipErrorMsg) {
return errors.Wrapf(err, "fetching API server groups and resources")
if err != nil {
if discovery.IsGroupDiscoveryFailedError(err) {
err := err.(*discovery.ErrGroupDiscoveryFailed)
for gv, err := range err.Groups {
logger.Error(err, "failed to list api resources", "group", gv)
}
} else if !strings.Contains(err.Error(), skipErrorMsg) {
return err
}
}
preferredAPIResourcesLists, err := discovery.ServerPreferredResources(c.client.Discovery().DiscoveryInterface())
if err != nil && !strings.Contains(err.Error(), skipErrorMsg) {
return errors.Wrapf(err, "fetching API server preferreds resources")
if err != nil {
if discovery.IsGroupDiscoveryFailedError(err) {
err := err.(*discovery.ErrGroupDiscoveryFailed)
for gv, err := range err.Groups {
logger.Error(err, "failed to list api resources", "group", gv)
}
} else if !strings.Contains(err.Error(), skipErrorMsg) {
return err
}
}
c.manager.UpdateKindToAPIVersions(apiResourceLists, preferredAPIResourcesLists)
return nil
}

View file

@ -0,0 +1,5 @@
package openapi
import "github.com/kyverno/kyverno/pkg/logging"
var logger = logging.WithName(ControllerName)