1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-06 16:06:56 +00:00
kyverno/pkg/cel/policy/context.go
Charles-Edouard Brétéché a5fe768a53
feat: implement cel engine context provider (#11995)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2025-01-24 15:42:58 +00:00

43 lines
1.1 KiB
Go

package policy
import (
"context"
contextlib "github.com/kyverno/kyverno/pkg/cel/libs/context"
kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/client-go/kubernetes"
)
type Context = contextlib.ContextInterface
type contextProvider struct {
client kubernetes.Interface
}
func NewContextProvider(client kubernetes.Interface) Context {
return &contextProvider{
client: client,
}
}
func (cp *contextProvider) GetConfigMap(namespace string, name string) (unstructured.Unstructured, error) {
cm, err := cp.client.CoreV1().ConfigMaps(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return unstructured.Unstructured{}, err
}
out, err := kubeutils.ObjToUnstructured(cm)
if err != nil {
return unstructured.Unstructured{}, err
}
return *out, nil
}
func (cp *contextProvider) GetGlobalReference(string) (any, error) {
return nil, nil
}
func (cp *contextProvider) GetImageData(string) (any, error) {
return nil, nil
}