1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-23 00:01:55 +00:00

feat: support rest mapper in cli with cluster enabled (#12319)

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
Charles-Edouard Brétéché 2025-03-07 07:58:40 +01:00 committed by GitHub
parent b3fa7b577b
commit 43ddc8c31e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -43,6 +43,7 @@ import (
admissionv1 "k8s.io/api/admission/v1"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
@ -350,6 +351,7 @@ func (c *ApplyCommandConfig) applyValidatingPolicies(
eng := engine.NewEngine(provider, namespaceProvider, matching.NewMatcher())
// TODO: mock when no cluster provided
gctxStore := gctxstore.New()
var restMapper meta.RESTMapper
var contextProvider celpolicy.Context
if dclient != nil {
contextProvider, err = celpolicy.NewContextProvider(
@ -360,12 +362,18 @@ func (c *ApplyCommandConfig) applyValidatingPolicies(
if err != nil {
return nil, err
}
apiGroupResources, err := restmapper.GetAPIGroupResources(dclient.GetKubeClient().Discovery())
if err != nil {
return nil, err
}
restMapper = restmapper.NewDiscoveryRESTMapper(apiGroupResources)
} else {
apiGroupResources, err := data.APIGroupResources()
if err != nil {
return nil, err
}
restMapper = restmapper.NewDiscoveryRESTMapper(apiGroupResources)
}
apiGroupResources, err := data.APIGroupResources()
if err != nil {
return nil, err
}
restMapper := restmapper.NewDiscoveryRESTMapper(apiGroupResources)
responses := make([]engineapi.EngineResponse, 0)
responsesTemp := make([]engine.EngineResponse, 0)
for _, resource := range resources {
@ -386,7 +394,7 @@ func (c *ApplyCommandConfig) applyValidatingPolicies(
contextProvider,
gvk,
gvr,
// TODO
// TODO: how to manage subresource ?
"",
resource.GetName(),
resource.GetNamespace(),