2022-08-02 07:54:02 -07:00
|
|
|
package resource
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
fakekyvernov1 "github.com/kyverno/kyverno/pkg/client/clientset/versioned/fake"
|
|
|
|
kyvernoinformers "github.com/kyverno/kyverno/pkg/client/informers/externalversions"
|
2022-08-31 14:03:47 +08:00
|
|
|
"github.com/kyverno/kyverno/pkg/clients/dclient"
|
2022-08-02 07:54:02 -07:00
|
|
|
"github.com/kyverno/kyverno/pkg/config"
|
2023-01-31 15:30:40 +01:00
|
|
|
"github.com/kyverno/kyverno/pkg/engine"
|
2022-12-02 19:29:51 +05:30
|
|
|
"github.com/kyverno/kyverno/pkg/engine/context/resolvers"
|
2022-08-02 07:54:02 -07:00
|
|
|
"github.com/kyverno/kyverno/pkg/event"
|
|
|
|
"github.com/kyverno/kyverno/pkg/metrics"
|
|
|
|
"github.com/kyverno/kyverno/pkg/openapi"
|
|
|
|
"github.com/kyverno/kyverno/pkg/policycache"
|
2022-12-08 16:23:18 +01:00
|
|
|
"github.com/kyverno/kyverno/pkg/registryclient"
|
2022-08-02 07:54:02 -07:00
|
|
|
"github.com/kyverno/kyverno/pkg/webhooks"
|
|
|
|
"github.com/kyverno/kyverno/pkg/webhooks/updaterequest"
|
2022-09-01 16:52:36 +02:00
|
|
|
webhookutils "github.com/kyverno/kyverno/pkg/webhooks/utils"
|
2022-12-02 19:29:51 +05:30
|
|
|
kubeinformers "k8s.io/client-go/informers"
|
2022-08-02 07:54:02 -07:00
|
|
|
"k8s.io/client-go/kubernetes/fake"
|
|
|
|
)
|
|
|
|
|
2022-09-26 17:55:46 +02:00
|
|
|
func NewFakeHandlers(ctx context.Context, policyCache policycache.Cache) webhooks.ResourceHandlers {
|
2022-08-02 07:54:02 -07:00
|
|
|
client := fake.NewSimpleClientset()
|
2022-11-25 14:14:55 +01:00
|
|
|
metricsConfig := metrics.NewFakeMetricsConfig()
|
2022-08-02 07:54:02 -07:00
|
|
|
|
2022-12-02 19:29:51 +05:30
|
|
|
informers := kubeinformers.NewSharedInformerFactory(client, 0)
|
2022-08-02 07:54:02 -07:00
|
|
|
informers.Start(ctx.Done())
|
|
|
|
|
|
|
|
kyvernoclient := fakekyvernov1.NewSimpleClientset()
|
|
|
|
kyvernoInformers := kyvernoinformers.NewSharedInformerFactory(kyvernoclient, 0)
|
2022-12-02 19:29:51 +05:30
|
|
|
configMapResolver, _ := resolvers.NewClientBasedResolver(client)
|
2022-08-02 07:54:02 -07:00
|
|
|
kyvernoInformers.Start(ctx.Done())
|
|
|
|
|
2022-09-01 16:52:36 +02:00
|
|
|
dclient := dclient.NewEmptyFakeClient()
|
2022-11-25 14:14:55 +01:00
|
|
|
configuration := config.NewDefaultConfiguration()
|
2022-09-01 16:52:36 +02:00
|
|
|
rbLister := informers.Rbac().V1().RoleBindings().Lister()
|
|
|
|
crbLister := informers.Rbac().V1().ClusterRoleBindings().Lister()
|
2022-09-08 14:07:18 +02:00
|
|
|
urLister := kyvernoInformers.Kyverno().V1beta1().UpdateRequests().Lister().UpdateRequests(config.KyvernoNamespace())
|
2022-12-16 04:13:14 -05:00
|
|
|
peLister := kyvernoInformers.Kyverno().V2alpha1().PolicyExceptions().Lister()
|
2023-01-31 15:30:40 +01:00
|
|
|
rclient := registryclient.NewOrDie()
|
2022-09-01 16:52:36 +02:00
|
|
|
|
2022-08-02 07:54:02 -07:00
|
|
|
return &handlers{
|
2022-10-12 18:54:16 +02:00
|
|
|
client: dclient,
|
2023-01-31 15:30:40 +01:00
|
|
|
rclient: rclient,
|
2022-10-12 18:54:16 +02:00
|
|
|
configuration: configuration,
|
|
|
|
metricsConfig: metricsConfig,
|
|
|
|
pCache: policyCache,
|
|
|
|
nsLister: informers.Core().V1().Namespaces().Lister(),
|
|
|
|
rbLister: rbLister,
|
|
|
|
crbLister: crbLister,
|
|
|
|
urLister: urLister,
|
|
|
|
urGenerator: updaterequest.NewFake(),
|
|
|
|
eventGen: event.NewFake(),
|
|
|
|
openApiManager: openapi.NewFake(),
|
2023-02-06 06:49:47 +01:00
|
|
|
pcBuilder: webhookutils.NewPolicyContextBuilder(configuration, dclient, rbLister, crbLister),
|
2022-10-12 18:54:16 +02:00
|
|
|
urUpdater: webhookutils.NewUpdateRequestUpdater(kyvernoclient, urLister),
|
2023-02-06 06:49:47 +01:00
|
|
|
engine: engine.NewEngine(
|
|
|
|
configuration,
|
2023-02-07 16:09:15 +01:00
|
|
|
dclient,
|
2023-02-08 06:55:03 +01:00
|
|
|
rclient,
|
|
|
|
engine.LegacyContextLoaderFactory(configMapResolver),
|
2023-02-06 06:49:47 +01:00
|
|
|
peLister,
|
|
|
|
),
|
2022-08-02 07:54:02 -07:00
|
|
|
}
|
|
|
|
}
|