@@ -37,7 +37,7 @@ import (
37
37
// WebhookBuilder builds a Webhook.
38
38
type WebhookBuilder struct {
39
39
apiType runtime.Object
40
- mutatorFactory admission.HandlerFactory
40
+ mutationHandler admission.Handler
41
41
customDefaulter admission.CustomDefaulter
42
42
customValidator admission.CustomValidator
43
43
gvk schema.GroupVersionKind
@@ -66,9 +66,9 @@ func (blder *WebhookBuilder) For(apiType runtime.Object) *WebhookBuilder {
66
66
return blder
67
67
}
68
68
69
- // WithMutatorFactory takes an admission.HandlerFactory , a MutatingWebhook will be wired for the handler that this factory creates .
70
- func (blder * WebhookBuilder ) WithMutatorFactory ( factory admission.HandlerFactory ) * WebhookBuilder {
71
- blder .mutatorFactory = factory
69
+ // WithMutationHandler takes an admission.Handler , a MutatingWebhook will be wired for it .
70
+ func (blder * WebhookBuilder ) WithMutationHandler ( h admission.Handler ) * WebhookBuilder {
71
+ blder .mutationHandler = h
72
72
return blder
73
73
}
74
74
@@ -147,7 +147,9 @@ func (blder *WebhookBuilder) registerWebhooks() error {
147
147
}
148
148
149
149
// Register webhook(s) for type
150
- blder .registerDefaultingWebhook ()
150
+ if err := blder .registerDefaultingWebhook (); err != nil {
151
+ return err
152
+ }
151
153
blder .registerValidatingWebhook ()
152
154
153
155
err = blder .registerConversionWebhook ()
@@ -158,8 +160,11 @@ func (blder *WebhookBuilder) registerWebhooks() error {
158
160
}
159
161
160
162
// registerDefaultingWebhook registers a defaulting webhook if necessary.
161
- func (blder * WebhookBuilder ) registerDefaultingWebhook () {
162
- mwh := blder .getDefaultingWebhook ()
163
+ func (blder * WebhookBuilder ) registerDefaultingWebhook () error {
164
+ mwh , err := blder .getDefaultingWebhook ()
165
+ if err != nil {
166
+ return err
167
+ }
163
168
if mwh != nil {
164
169
mwh .LogConstructor = blder .logConstructor
165
170
path := generateMutatePath (blder .gvk )
@@ -173,21 +178,27 @@ func (blder *WebhookBuilder) registerDefaultingWebhook() {
173
178
blder .mgr .GetWebhookServer ().Register (path , mwh )
174
179
}
175
180
}
181
+ return nil
176
182
}
177
183
178
- func (blder * WebhookBuilder ) getDefaultingWebhook () * admission.Webhook {
184
+ func (blder * WebhookBuilder ) getDefaultingWebhook () ( * admission.Webhook , error ) {
179
185
var w * admission.Webhook
180
- if factory := blder .mutatorFactory ; factory != nil {
181
- w = admission .WithHandlerFactory (blder .mgr .GetScheme (), blder .apiType , factory )
182
- } else if defaulter := blder .customDefaulter ; defaulter != nil {
186
+ if handler := blder .mutationHandler ; handler != nil {
187
+ w = & admission.Webhook {Handler : handler }
188
+ }
189
+ if defaulter := blder .customDefaulter ; defaulter != nil {
190
+ if w != nil {
191
+ return nil , errors .New ("a WebhookBuilder can only define a MutationHandler or a Defaulter, but not both" )
192
+ }
183
193
w = admission .WithCustomDefaulter (blder .mgr .GetScheme (), blder .apiType , defaulter )
184
- } else {
185
- return nil
194
+ }
195
+ if w == nil {
196
+ return nil , nil
186
197
}
187
198
if blder .recoverPanic != nil {
188
199
w = w .WithRecoverPanic (* blder .recoverPanic )
189
200
}
190
- return w
201
+ return w , nil
191
202
}
192
203
193
204
// registerValidatingWebhook registers a validating webhook if necessary.
0 commit comments