@@ -47,6 +47,7 @@ type CollectorWebhook struct {
47
47
scheme * runtime.Scheme
48
48
reviewer * rbac.Reviewer
49
49
metrics * Metrics
50
+ bv BuildValidator
50
51
}
51
52
52
53
func (c CollectorWebhook ) Default (_ context.Context , obj runtime.Object ) error {
@@ -108,14 +109,17 @@ func (c CollectorWebhook) ValidateCreate(ctx context.Context, obj runtime.Object
108
109
return nil , fmt .Errorf ("expected an OpenTelemetryCollector, received %T" , obj )
109
110
}
110
111
111
- warnings , err := c .validate (ctx , otelcol )
112
+ warnings , err := c .Validate (ctx , otelcol )
112
113
if err != nil {
113
114
return warnings , err
114
115
}
115
116
if c .metrics != nil {
116
117
c .metrics .create (ctx , otelcol )
117
118
}
118
-
119
+ if c .bv != nil {
120
+ newWarnings := c .bv (* otelcol )
121
+ warnings = append (warnings , newWarnings ... )
122
+ }
119
123
return warnings , nil
120
124
}
121
125
@@ -133,7 +137,7 @@ func (c CollectorWebhook) ValidateUpdate(ctx context.Context, oldObj, newObj run
133
137
if otelcolOld .Spec .Mode != otelcol .Spec .Mode {
134
138
return admission.Warnings {}, fmt .Errorf ("the OpenTelemetry Collector mode is set to %s, which does not support modification" , otelcolOld .Spec .Mode )
135
139
}
136
- warnings , err := c .validate (ctx , otelcol )
140
+ warnings , err := c .Validate (ctx , otelcol )
137
141
if err != nil {
138
142
return warnings , err
139
143
}
@@ -142,6 +146,10 @@ func (c CollectorWebhook) ValidateUpdate(ctx context.Context, oldObj, newObj run
142
146
c .metrics .update (ctx , otelcolOld , otelcol )
143
147
}
144
148
149
+ if c .bv != nil {
150
+ newWarnings := c .bv (* otelcol )
151
+ warnings = append (warnings , newWarnings ... )
152
+ }
145
153
return warnings , nil
146
154
}
147
155
@@ -151,7 +159,7 @@ func (c CollectorWebhook) ValidateDelete(ctx context.Context, obj runtime.Object
151
159
return nil , fmt .Errorf ("expected an OpenTelemetryCollector, received %T" , obj )
152
160
}
153
161
154
- warnings , err := c .validate (ctx , otelcol )
162
+ warnings , err := c .Validate (ctx , otelcol )
155
163
if err != nil {
156
164
return warnings , err
157
165
}
@@ -163,7 +171,7 @@ func (c CollectorWebhook) ValidateDelete(ctx context.Context, obj runtime.Object
163
171
return warnings , nil
164
172
}
165
173
166
- func (c CollectorWebhook ) validate (ctx context.Context , r * OpenTelemetryCollector ) (admission.Warnings , error ) {
174
+ func (c CollectorWebhook ) Validate (ctx context.Context , r * OpenTelemetryCollector ) (admission.Warnings , error ) {
167
175
warnings := admission.Warnings {}
168
176
169
177
nullObjects := r .Spec .Config .nullObjects ()
@@ -404,14 +412,30 @@ func checkAutoscalerSpec(autoscaler *AutoscalerSpec) error {
404
412
return nil
405
413
}
406
414
407
- func SetupCollectorWebhook (mgr ctrl.Manager , cfg config.Config , reviewer * rbac.Reviewer , metrics * Metrics ) error {
408
- cvw := & CollectorWebhook {
409
- reviewer : reviewer ,
410
- logger : mgr .GetLogger ().WithValues ("handler" , "CollectorWebhook" , "version" , "v1beta1" ),
411
- scheme : mgr .GetScheme (),
415
+ // BuildValidator enables running the manifest generators for the collector reconciler
416
+ // +kubebuilder:object:generate=false
417
+ type BuildValidator func (c OpenTelemetryCollector ) admission.Warnings
418
+
419
+ func NewCollectorWebhook (
420
+ logger logr.Logger ,
421
+ scheme * runtime.Scheme ,
422
+ cfg config.Config ,
423
+ reviewer * rbac.Reviewer ,
424
+ metrics * Metrics ,
425
+ bv BuildValidator ,
426
+ ) * CollectorWebhook {
427
+ return & CollectorWebhook {
428
+ logger : logger ,
429
+ scheme : scheme ,
412
430
cfg : cfg ,
431
+ reviewer : reviewer ,
413
432
metrics : metrics ,
433
+ bv : bv ,
414
434
}
435
+ }
436
+
437
+ func SetupCollectorWebhook (mgr ctrl.Manager , cfg config.Config , reviewer * rbac.Reviewer , metrics * Metrics , bv BuildValidator ) error {
438
+ cvw := NewCollectorWebhook (mgr .GetLogger ().WithValues ("handler" , "CollectorWebhook" , "version" , "v1beta1" ), mgr .GetScheme (), cfg , reviewer , metrics , bv )
415
439
return ctrl .NewWebhookManagedBy (mgr ).
416
440
For (& OpenTelemetryCollector {}).
417
441
WithValidator (cvw ).
0 commit comments