Skip to content

Commit acad887

Browse files
authored
Merge pull request #21 from bakito/main
check if at least one interface is implemented
2 parents c680e64 + eab3fc7 commit acad887

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

pkg/webhook/webhook.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (blder *Builder) WithMutatePrefix(prefix string) *Builder {
5858
return blder
5959
}
6060

61-
// WithValidatePrefix sets a custom prefix for the mutate path of the webhook, default is '/validate-'
61+
// WithValidatePrefix sets a custom prefix for the validate path of the webhook, default is '/validate-'
6262
func (blder *Builder) WithValidatePrefix(prefix string) *Builder {
6363
blder.prefixMutate = prefix
6464
return blder
@@ -80,6 +80,7 @@ func (blder *Builder) Complete(i interface{}) error {
8080
return fmt.Errorf("validating prefix %q must start with '/'", blder.prefixValidate)
8181
}
8282

83+
isWebhook := false
8384
if validator, ok := i.(Validator); ok {
8485
w, err := blder.createAdmissionWebhook(withValidationHandler(validator, blder.apiType))
8586
if err != nil {
@@ -89,6 +90,7 @@ func (blder *Builder) Complete(i interface{}) error {
8990
if err := blder.registerValidatingWebhook(w); err != nil {
9091
return err
9192
}
93+
isWebhook = true
9294
}
9395

9496
if mutator, ok := i.(Mutator); ok {
@@ -100,14 +102,19 @@ func (blder *Builder) Complete(i interface{}) error {
100102
if err := blder.registerMutatingWebhook(w); err != nil {
101103
return err
102104
}
105+
isWebhook = true
106+
}
107+
108+
if !isWebhook {
109+
return fmt.Errorf("webhook instance %v does implement neither Mutator nor Validator interface", i)
103110
}
104111

105112
return nil
106113
}
107114

108115
func (blder *Builder) createAdmissionWebhook(handler Handler) (*admission.Webhook, error) {
109116
w := &admission.Webhook{
110-
Handler: handler,
117+
Handler: handler,
111118
}
112119

113120
// inject scheme for decoder

pkg/webhook/webhook_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ var _ = Describe("Webhook", func() {
9292
Complete(&webhook.ValidatingWebhook{})
9393
Ω(err).ShouldNot(HaveOccurred())
9494
})
95-
It("should not fail if interface doesn't match", func() {
95+
It("should fail if interface doesn't match", func() {
9696
err := webhook.NewGenericWebhookManagedBy(mgr).
9797
For(&corev1.Pod{}).
9898
Complete(struct{}{})
99-
Ω(err).ShouldNot(HaveOccurred())
99+
Ω(err).Should(HaveOccurred())
100100
})
101101
It("should fail if api type isn't specified", func() {
102102
err := webhook.NewGenericWebhookManagedBy(mgr).

0 commit comments

Comments
 (0)