Skip to content

Commit b02902e

Browse files
authored
Merge pull request #678 from sergenyalcin/register-webhooks-seperately
Decouple conversion webhook registration from leader election
2 parents eff8498 + 391acbd commit b02902e

2 files changed

Lines changed: 23 additions & 9 deletions

File tree

pkg/pipeline/templates/controller.go.tmpl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ import (
2323
{{ .Imports }}
2424
)
2525

26+
// SetupWebhookWithManager registers the conversion webhook for {{ .CRD.Kind }}.
27+
func SetupWebhookWithManager(mgr ctrl.Manager) error {
28+
if err := ctrl.NewWebhookManagedBy(mgr, &{{ .TypePackageAlias }}{{ .CRD.Kind }}{}).
29+
Complete(); err != nil {
30+
return errors.Wrap(err, "cannot register webhook for the kind {{ .TypePackageAlias }}{{ .CRD.Kind }}")
31+
}
32+
return nil
33+
}
34+
2635
// SetupGated adds a controller that reconciles {{ .CRD.Kind }} managed resources.
2736
func SetupGated(mgr ctrl.Manager, o tjcontroller.Options) error {
2837
o.Options.Gate.Register(func() {
@@ -122,15 +131,6 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error {
122131
opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics))
123132
}
124133

125-
// register webhooks for the kind {{ .TypePackageAlias }}{{ .CRD.Kind }}
126-
// if they're enabled.
127-
if o.StartWebhooks {
128-
if err := ctrl.NewWebhookManagedBy(mgr, &{{ .TypePackageAlias }}{{ .CRD.Kind }}{}).
129-
Complete(); err != nil {
130-
return errors.Wrap(err, "cannot register webhook for the kind {{ .TypePackageAlias }}{{ .CRD.Kind }}")
131-
}
132-
}
133-
134134
if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil {
135135
stateMetricsRecorder := statemetrics.NewMRStateRecorder(
136136
mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &{{ .TypePackageAlias }}{{ .CRD.Kind }}List{}, o.MetricOptions.PollStateMetricInterval,

pkg/pipeline/templates/setup.go.tmpl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,18 @@ func SetupGated{{ .Group }}(mgr ctrl.Manager, o controller.Options) error {
3838
}
3939
}
4040
return nil
41+
}
42+
43+
// SetupWebhookWithManager{{ .Group }} registers conversion webhooks for all resource kinds in the group.
44+
func SetupWebhookWithManager{{ .Group }}(mgr ctrl.Manager) error {
45+
for _, setup := range []func(ctrl.Manager) error{
46+
{{- range $alias := .Aliases }}
47+
{{ $alias }}SetupWebhookWithManager,
48+
{{- end }}
49+
} {
50+
if err := setup(mgr); err != nil {
51+
return err
52+
}
53+
}
54+
return nil
4155
}

0 commit comments

Comments
 (0)