2022-12-02 19:29:51 +05:30
|
|
|
package resolvers
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"errors"
|
|
|
|
|
2023-02-03 06:01:11 +01:00
|
|
|
engineapi "github.com/kyverno/kyverno/pkg/engine/api"
|
2022-12-02 19:29:51 +05:30
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
"k8s.io/client-go/kubernetes"
|
|
|
|
corev1listers "k8s.io/client-go/listers/core/v1"
|
|
|
|
)
|
|
|
|
|
|
|
|
type informerBasedResolver struct {
|
|
|
|
lister corev1listers.ConfigMapLister
|
|
|
|
}
|
|
|
|
|
2023-02-03 06:01:11 +01:00
|
|
|
func NewInformerBasedResolver(lister corev1listers.ConfigMapLister) (engineapi.ConfigmapResolver, error) {
|
2022-12-02 19:29:51 +05:30
|
|
|
if lister == nil {
|
|
|
|
return nil, errors.New("lister must not be nil")
|
|
|
|
}
|
|
|
|
return &informerBasedResolver{lister}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *informerBasedResolver) Get(ctx context.Context, namespace, name string) (*corev1.ConfigMap, error) {
|
|
|
|
return i.lister.ConfigMaps(namespace).Get(name)
|
|
|
|
}
|
|
|
|
|
|
|
|
type clientBasedResolver struct {
|
|
|
|
kubeClient kubernetes.Interface
|
|
|
|
}
|
|
|
|
|
2023-02-03 06:01:11 +01:00
|
|
|
func NewClientBasedResolver(client kubernetes.Interface) (engineapi.ConfigmapResolver, error) {
|
2022-12-02 19:29:51 +05:30
|
|
|
if client == nil {
|
|
|
|
return nil, errors.New("client must not be nil")
|
|
|
|
}
|
|
|
|
return &clientBasedResolver{client}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *clientBasedResolver) Get(ctx context.Context, namespace, name string) (*corev1.ConfigMap, error) {
|
|
|
|
return c.kubeClient.CoreV1().ConfigMaps(namespace).Get(ctx, name, metav1.GetOptions{})
|
|
|
|
}
|