-
Notifications
You must be signed in to change notification settings - Fork 462
/
initializer.go
108 lines (89 loc) · 3.65 KB
/
initializer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and Gardener contributors
//
// SPDX-License-Identifier: Apache-2.0
package initializer
import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authorization/authorizer"
quotav1 "k8s.io/apiserver/pkg/quota/v1"
"k8s.io/client-go/dynamic"
kubeinformers "k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
gardencoreclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned"
gardencoreinformers "github.com/gardener/gardener/pkg/client/core/informers/externalversions"
securityclientset "github.com/gardener/gardener/pkg/client/security/clientset/versioned"
securityinformers "github.com/gardener/gardener/pkg/client/security/informers/externalversions"
seedmanagementclientset "github.com/gardener/gardener/pkg/client/seedmanagement/clientset/versioned"
seedmanagementinformers "github.com/gardener/gardener/pkg/client/seedmanagement/informers/externalversions"
settingsinformers "github.com/gardener/gardener/pkg/client/settings/informers/externalversions"
)
// New constructs new instance of PluginInitializer
func New(
coreInformers gardencoreinformers.SharedInformerFactory,
coreClient gardencoreclientset.Interface,
seedManagementInformers seedmanagementinformers.SharedInformerFactory,
seedManagementClient seedmanagementclientset.Interface,
settingsInformers settingsinformers.SharedInformerFactory,
securityInformers securityinformers.SharedInformerFactory,
securityClient securityclientset.Interface,
kubeInformers kubeinformers.SharedInformerFactory,
kubeClient kubernetes.Interface,
dynamicClient dynamic.Interface,
authz authorizer.Authorizer,
quotaConfiguration quotav1.Configuration,
) admission.PluginInitializer {
return pluginInitializer{
coreInformers: coreInformers,
coreClient: coreClient,
seedManagementInformers: seedManagementInformers,
seedManagementClient: seedManagementClient,
settingsInformers: settingsInformers,
securityInformers: securityInformers,
securityClient: securityClient,
kubeInformers: kubeInformers,
kubeClient: kubeClient,
dynamicClient: dynamicClient,
authorizer: authz,
quotaConfiguration: quotaConfiguration,
}
}
// Initialize checks the initialization interfaces implemented by each plugin
// and provide the appropriate initialization data
func (i pluginInitializer) Initialize(plugin admission.Interface) {
if wants, ok := plugin.(WantsCoreInformerFactory); ok {
wants.SetCoreInformerFactory(i.coreInformers)
}
if wants, ok := plugin.(WantsCoreClientSet); ok {
wants.SetCoreClientSet(i.coreClient)
}
if wants, ok := plugin.(WantsSeedManagementInformerFactory); ok {
wants.SetSeedManagementInformerFactory(i.seedManagementInformers)
}
if wants, ok := plugin.(WantsSeedManagementClientSet); ok {
wants.SetSeedManagementClientSet(i.seedManagementClient)
}
if wants, ok := plugin.(WantsSecurityInformerFactory); ok {
wants.SetSecurityInformerFactory(i.securityInformers)
}
if wants, ok := plugin.(WantsSecurityClientSet); ok {
wants.SetSecurityClientSet(i.securityClient)
}
if wants, ok := plugin.(WantsSettingsInformerFactory); ok {
wants.SetSettingsInformerFactory(i.settingsInformers)
}
if wants, ok := plugin.(WantsKubeInformerFactory); ok {
wants.SetKubeInformerFactory(i.kubeInformers)
}
if wants, ok := plugin.(WantsKubeClientset); ok {
wants.SetKubeClientset(i.kubeClient)
}
if wants, ok := plugin.(WantsDynamicClient); ok {
wants.SetDynamicClient(i.dynamicClient)
}
if wants, ok := plugin.(WantsAuthorizer); ok {
wants.SetAuthorizer(i.authorizer)
}
if wants, ok := plugin.(WantsQuotaConfiguration); ok {
wants.SetQuotaConfiguration(i.quotaConfiguration)
}
}