From 86b3e9d8f72bf04d42b8123782eab07813941073 Mon Sep 17 00:00:00 2001 From: jeffreylimnardy Date: Wed, 3 Dec 2025 13:58:13 +0100 Subject: [PATCH 1/5] return generic errors for user but log more detail in manager --- webhook/utils/transformfilter.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/webhook/utils/transformfilter.go b/webhook/utils/transformfilter.go index 63f03df217..607bb3f0d3 100644 --- a/webhook/utils/transformfilter.go +++ b/webhook/utils/transformfilter.go @@ -7,12 +7,14 @@ import ( telemetryv1beta1 "github.com/kyma-project/telemetry-manager/apis/telemetry/v1beta1" slicesutils "github.com/kyma-project/telemetry-manager/internal/utils/slices" "github.com/kyma-project/telemetry-manager/internal/validators/ottl" + logf "sigs.k8s.io/controller-runtime/pkg/log" ) func ValidateFilterTransform(signalType ottl.SignalType, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { filterValidator, err := ottl.NewFilterSpecValidator(signalType) if err != nil { - return fmt.Errorf("failed to instantiate FilterSpecValidator %w", err) + logf.Log.V(1).Error(err, "Failed to instantiate FilterSpec validator") + return fmt.Errorf("failed to create pipeline") } for _, filter := range filterSpec { @@ -24,7 +26,8 @@ func ValidateFilterTransform(signalType ottl.SignalType, filterSpec []telemetryv transformValidator, err := ottl.NewTransformSpecValidator(signalType) if err != nil { - return fmt.Errorf("failed to instantiate TransformSpecValidator %w", err) + logf.Log.V(1).Error(err, "Failed to instantiate TransformSpec validator") + return fmt.Errorf("failed to create pipeline") } for _, transform := range transformSpec { From f23da8b6101bbd56584ebbd1f2d57b11ed96784a Mon Sep 17 00:00:00 2001 From: jeffreylimnardy Date: Fri, 5 Dec 2025 10:55:36 +0100 Subject: [PATCH 2/5] adjust test and lint --- webhook/utils/transformfilter.go | 2 ++ webhook/utils/transformfilter_test.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/webhook/utils/transformfilter.go b/webhook/utils/transformfilter.go index 607bb3f0d3..ddd2096c73 100644 --- a/webhook/utils/transformfilter.go +++ b/webhook/utils/transformfilter.go @@ -3,6 +3,8 @@ package utils import ( "fmt" + logf "sigs.k8s.io/controller-runtime/pkg/log" + telemetryv1alpha1 "github.com/kyma-project/telemetry-manager/apis/telemetry/v1alpha1" telemetryv1beta1 "github.com/kyma-project/telemetry-manager/apis/telemetry/v1beta1" slicesutils "github.com/kyma-project/telemetry-manager/internal/utils/slices" diff --git a/webhook/utils/transformfilter_test.go b/webhook/utils/transformfilter_test.go index 2dfa8df604..108ffa8dce 100644 --- a/webhook/utils/transformfilter_test.go +++ b/webhook/utils/transformfilter_test.go @@ -25,7 +25,7 @@ func TestInvalidSignalType(t *testing.T) { []telemetryv1beta1.FilterSpec{}, []telemetryv1beta1.TransformSpec{}, ) - assert.ErrorContains(t, err, "failed to instantiate") + assert.ErrorContains(t, err, "failed to create pipeline") } func TestWithValidFilterTransform(t *testing.T) { From dc9e89b4db8502dc2f25ccf99c7092e0286862d0 Mon Sep 17 00:00:00 2001 From: jeffreylimnardy Date: Mon, 8 Dec 2025 23:05:55 +0100 Subject: [PATCH 3/5] lint --- webhook/utils/transformfilter.go | 1 - 1 file changed, 1 deletion(-) diff --git a/webhook/utils/transformfilter.go b/webhook/utils/transformfilter.go index ddd2096c73..508f5016d2 100644 --- a/webhook/utils/transformfilter.go +++ b/webhook/utils/transformfilter.go @@ -9,7 +9,6 @@ import ( telemetryv1beta1 "github.com/kyma-project/telemetry-manager/apis/telemetry/v1beta1" slicesutils "github.com/kyma-project/telemetry-manager/internal/utils/slices" "github.com/kyma-project/telemetry-manager/internal/validators/ottl" - logf "sigs.k8s.io/controller-runtime/pkg/log" ) func ValidateFilterTransform(signalType ottl.SignalType, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { From 6437d39963b1a83d844276e9810191210f36dfb3 Mon Sep 17 00:00:00 2001 From: jeffreylimnardy Date: Tue, 9 Dec 2025 09:52:14 +0100 Subject: [PATCH 4/5] lower coverage because there are untestable code --- .testcoverage.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.testcoverage.yml b/.testcoverage.yml index c9109de6c4..de96241f36 100644 --- a/.testcoverage.yml +++ b/.testcoverage.yml @@ -53,6 +53,8 @@ override: path: ^webhook/logpipeline/v1alpha1$ - threshold: 84 path: ^webhook/logpipeline/v1beta1$ + - threshold: 88 + path: ^webhook/utils$ - threshold: 80 path: ^internal/utils/logpipeline$ - threshold: 75 From 84848bf26ac24d5d156566f227e1818195e766dd Mon Sep 17 00:00:00 2001 From: jeffreylimnardy Date: Wed, 10 Dec 2025 13:55:34 +0100 Subject: [PATCH 5/5] apply suggestions --- webhook/logpipeline/v1alpha1/validator.go | 12 ++++++------ webhook/logpipeline/v1beta1/validator.go | 12 ++++++------ webhook/metricpipeline/v1alpha1/validator.go | 12 ++++++------ webhook/metricpipeline/v1beta1/validator.go | 12 ++++++------ webhook/tracepipeline/v1alpha1/validator.go | 12 ++++++------ webhook/tracepipeline/v1beta1/validator.go | 12 ++++++------ webhook/utils/transformfilter.go | 13 ++++++++----- webhook/utils/transformfilter_test.go | 5 +++++ 8 files changed, 49 insertions(+), 41 deletions(-) diff --git a/webhook/logpipeline/v1alpha1/validator.go b/webhook/logpipeline/v1alpha1/validator.go index a7402d5ab6..da7361b5cc 100644 --- a/webhook/logpipeline/v1alpha1/validator.go +++ b/webhook/logpipeline/v1alpha1/validator.go @@ -21,7 +21,7 @@ type LogPipelineValidator struct { var _ webhook.CustomValidator = &LogPipelineValidator{} -func (v *LogPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) { +func (v *LogPipelineValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { logPipeline, ok := obj.(*telemetryv1alpha1.LogPipeline) var warnings admission.Warnings @@ -32,7 +32,7 @@ func (v *LogPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Obj filterSpec, transformSpec := webhookutils.ConvertFilterTransformToBeta(logPipeline.Spec.Filters, logPipeline.Spec.Transforms) - if err := validateFilterTransform(filterSpec, transformSpec); err != nil { + if err := validateFilterTransform(ctx, filterSpec, transformSpec); err != nil { return nil, err } @@ -47,7 +47,7 @@ func (v *LogPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Obj return nil, nil } -func (v *LogPipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { +func (v *LogPipelineValidator) ValidateUpdate(ctx context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { logPipeline, ok := newObj.(*telemetryv1alpha1.LogPipeline) var warnings admission.Warnings @@ -58,7 +58,7 @@ func (v *LogPipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj filterSpec, transformSpec := webhookutils.ConvertFilterTransformToBeta(logPipeline.Spec.Filters, logPipeline.Spec.Transforms) - if err := validateFilterTransform(filterSpec, transformSpec); err != nil { + if err := validateFilterTransform(ctx, filterSpec, transformSpec); err != nil { return nil, err } @@ -77,8 +77,8 @@ func (v *LogPipelineValidator) ValidateDelete(_ context.Context, obj runtime.Obj return nil, nil } -func validateFilterTransform(filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { - err := webhookutils.ValidateFilterTransform(ottl.SignalTypeLog, filterSpec, transformSpec) +func validateFilterTransform(ctx context.Context, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { + err := webhookutils.ValidateFilterTransform(ctx, ottl.SignalTypeLog, filterSpec, transformSpec) if err != nil { return fmt.Errorf(conditions.MessageForOtelLogPipeline(conditions.ReasonOTTLSpecInvalid), err.Error()) } diff --git a/webhook/logpipeline/v1beta1/validator.go b/webhook/logpipeline/v1beta1/validator.go index 6565d34c54..b8aceb9eb8 100644 --- a/webhook/logpipeline/v1beta1/validator.go +++ b/webhook/logpipeline/v1beta1/validator.go @@ -19,7 +19,7 @@ type LogPipelineValidator struct { var _ webhook.CustomValidator = &LogPipelineValidator{} -func (v *LogPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) { +func (v *LogPipelineValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { logPipeline, ok := obj.(*telemetryv1beta1.LogPipeline) var warnings admission.Warnings @@ -28,7 +28,7 @@ func (v *LogPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Obj return nil, fmt.Errorf("expected a LogPipeline but got %T", obj) } - if err := validateFilterTransform(logPipeline.Spec.Filters, logPipeline.Spec.Transforms); err != nil { + if err := validateFilterTransform(ctx, logPipeline.Spec.Filters, logPipeline.Spec.Transforms); err != nil { return nil, err } @@ -43,7 +43,7 @@ func (v *LogPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Obj return nil, nil } -func (v *LogPipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { +func (v *LogPipelineValidator) ValidateUpdate(ctx context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { logPipeline, ok := newObj.(*telemetryv1beta1.LogPipeline) var warnings admission.Warnings @@ -52,7 +52,7 @@ func (v *LogPipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj return nil, fmt.Errorf("expected a LogPipeline but got %T", newObj) } - if err := validateFilterTransform(logPipeline.Spec.Filters, logPipeline.Spec.Transforms); err != nil { + if err := validateFilterTransform(ctx, logPipeline.Spec.Filters, logPipeline.Spec.Transforms); err != nil { return nil, err } @@ -82,8 +82,8 @@ func containsCustomPlugin(lp *telemetryv1beta1.LogPipeline) bool { return lp.Spec.Output.Custom != "" } -func validateFilterTransform(filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { - err := webhookutils.ValidateFilterTransform(ottl.SignalTypeLog, filterSpec, transformSpec) +func validateFilterTransform(ctx context.Context, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { + err := webhookutils.ValidateFilterTransform(ctx, ottl.SignalTypeLog, filterSpec, transformSpec) if err != nil { return fmt.Errorf(conditions.MessageForOtelLogPipeline(conditions.ReasonOTTLSpecInvalid), err.Error()) } diff --git a/webhook/metricpipeline/v1alpha1/validator.go b/webhook/metricpipeline/v1alpha1/validator.go index 06ec1cb399..5a4e5f059f 100644 --- a/webhook/metricpipeline/v1alpha1/validator.go +++ b/webhook/metricpipeline/v1alpha1/validator.go @@ -20,7 +20,7 @@ type MetricPipelineValidator struct { var _ webhook.CustomValidator = &MetricPipelineValidator{} -func (v *MetricPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) { +func (v *MetricPipelineValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { metricPipeline, ok := obj.(*telemetryv1alpha1.MetricPipeline) if !ok { @@ -29,10 +29,10 @@ func (v *MetricPipelineValidator) ValidateCreate(_ context.Context, obj runtime. filterSpec, transformSpec := webhookutils.ConvertFilterTransformToBeta(metricPipeline.Spec.Filters, metricPipeline.Spec.Transforms) - return nil, validateFilterTransform(filterSpec, transformSpec) + return nil, validateFilterTransform(ctx, filterSpec, transformSpec) } -func (v *MetricPipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { +func (v *MetricPipelineValidator) ValidateUpdate(ctx context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { metricPipeline, ok := newObj.(*telemetryv1alpha1.MetricPipeline) if !ok { @@ -41,15 +41,15 @@ func (v *MetricPipelineValidator) ValidateUpdate(_ context.Context, oldObj, newO filterSpec, transformSpec := webhookutils.ConvertFilterTransformToBeta(metricPipeline.Spec.Filters, metricPipeline.Spec.Transforms) - return nil, validateFilterTransform(filterSpec, transformSpec) + return nil, validateFilterTransform(ctx, filterSpec, transformSpec) } func (v *MetricPipelineValidator) ValidateDelete(_ context.Context, obj runtime.Object) (admission.Warnings, error) { return nil, nil } -func validateFilterTransform(filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { - err := webhookutils.ValidateFilterTransform(ottl.SignalTypeMetric, filterSpec, transformSpec) +func validateFilterTransform(ctx context.Context, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { + err := webhookutils.ValidateFilterTransform(ctx, ottl.SignalTypeMetric, filterSpec, transformSpec) if err != nil { return fmt.Errorf(conditions.MessageForMetricPipeline(conditions.ReasonOTTLSpecInvalid), err.Error()) } diff --git a/webhook/metricpipeline/v1beta1/validator.go b/webhook/metricpipeline/v1beta1/validator.go index bbc59c94ff..09b18064c2 100644 --- a/webhook/metricpipeline/v1beta1/validator.go +++ b/webhook/metricpipeline/v1beta1/validator.go @@ -19,32 +19,32 @@ type MetricPipelineValidator struct { var _ webhook.CustomValidator = &MetricPipelineValidator{} -func (v *MetricPipelineValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) { +func (v *MetricPipelineValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { metricPipeline, ok := obj.(*telemetryv1beta1.MetricPipeline) if !ok { return nil, fmt.Errorf("expected a MetricPipeline but got %T", obj) } - return nil, validateFilterTransform(metricPipeline.Spec.Filters, metricPipeline.Spec.Transforms) + return nil, validateFilterTransform(ctx, metricPipeline.Spec.Filters, metricPipeline.Spec.Transforms) } -func (v *MetricPipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { +func (v *MetricPipelineValidator) ValidateUpdate(ctx context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { metricPipeline, ok := newObj.(*telemetryv1beta1.MetricPipeline) if !ok { return nil, fmt.Errorf("expected a MetricPipeline but got %T", newObj) } - return nil, validateFilterTransform(metricPipeline.Spec.Filters, metricPipeline.Spec.Transforms) + return nil, validateFilterTransform(ctx, metricPipeline.Spec.Filters, metricPipeline.Spec.Transforms) } func (v *MetricPipelineValidator) ValidateDelete(_ context.Context, obj runtime.Object) (admission.Warnings, error) { return nil, nil } -func validateFilterTransform(filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { - err := webhookutils.ValidateFilterTransform(ottl.SignalTypeMetric, filterSpec, transformSpec) +func validateFilterTransform(ctx context.Context, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { + err := webhookutils.ValidateFilterTransform(ctx, ottl.SignalTypeMetric, filterSpec, transformSpec) if err != nil { return fmt.Errorf(conditions.MessageForMetricPipeline(conditions.ReasonOTTLSpecInvalid), err.Error()) } diff --git a/webhook/tracepipeline/v1alpha1/validator.go b/webhook/tracepipeline/v1alpha1/validator.go index e1fcd81bc5..3d50e02167 100644 --- a/webhook/tracepipeline/v1alpha1/validator.go +++ b/webhook/tracepipeline/v1alpha1/validator.go @@ -20,7 +20,7 @@ type TracePipelineValidator struct { var _ webhook.CustomValidator = &TracePipelineValidator{} -func (v *TracePipelineValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) { +func (v *TracePipelineValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { tracePipeline, ok := obj.(*telemetryv1alpha1.TracePipeline) if !ok { @@ -29,10 +29,10 @@ func (v *TracePipelineValidator) ValidateCreate(_ context.Context, obj runtime.O filterSpec, transformSpec := webhookutils.ConvertFilterTransformToBeta(tracePipeline.Spec.Filters, tracePipeline.Spec.Transforms) - return nil, validateFilterTransform(filterSpec, transformSpec) + return nil, validateFilterTransform(ctx, filterSpec, transformSpec) } -func (v *TracePipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { +func (v *TracePipelineValidator) ValidateUpdate(ctx context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { tracePipeline, ok := newObj.(*telemetryv1alpha1.TracePipeline) if !ok { @@ -41,15 +41,15 @@ func (v *TracePipelineValidator) ValidateUpdate(_ context.Context, oldObj, newOb filterSpec, transformSpec := webhookutils.ConvertFilterTransformToBeta(tracePipeline.Spec.Filters, tracePipeline.Spec.Transforms) - return nil, validateFilterTransform(filterSpec, transformSpec) + return nil, validateFilterTransform(ctx, filterSpec, transformSpec) } func (v *TracePipelineValidator) ValidateDelete(_ context.Context, obj runtime.Object) (admission.Warnings, error) { return nil, nil } -func validateFilterTransform(filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { - err := webhookutils.ValidateFilterTransform(ottl.SignalTypeTrace, filterSpec, transformSpec) +func validateFilterTransform(ctx context.Context, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { + err := webhookutils.ValidateFilterTransform(ctx, ottl.SignalTypeTrace, filterSpec, transformSpec) if err != nil { return fmt.Errorf(conditions.MessageForTracePipeline(conditions.ReasonOTTLSpecInvalid), err.Error()) } diff --git a/webhook/tracepipeline/v1beta1/validator.go b/webhook/tracepipeline/v1beta1/validator.go index 9f43c47b29..e0b985ce86 100644 --- a/webhook/tracepipeline/v1beta1/validator.go +++ b/webhook/tracepipeline/v1beta1/validator.go @@ -19,32 +19,32 @@ type TracePipelineValidator struct { var _ webhook.CustomValidator = &TracePipelineValidator{} -func (v *TracePipelineValidator) ValidateCreate(_ context.Context, obj runtime.Object) (admission.Warnings, error) { +func (v *TracePipelineValidator) ValidateCreate(ctx context.Context, obj runtime.Object) (admission.Warnings, error) { tracePipeline, ok := obj.(*telemetryv1beta1.TracePipeline) if !ok { return nil, fmt.Errorf("expected a TracePipeline but got %T", obj) } - return nil, validateFilterTransform(tracePipeline.Spec.Filters, tracePipeline.Spec.Transforms) + return nil, validateFilterTransform(ctx, tracePipeline.Spec.Filters, tracePipeline.Spec.Transforms) } -func (v *TracePipelineValidator) ValidateUpdate(_ context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { +func (v *TracePipelineValidator) ValidateUpdate(ctx context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) { tracePipeline, ok := newObj.(*telemetryv1beta1.TracePipeline) if !ok { return nil, fmt.Errorf("expected a TracePipeline but got %T", newObj) } - return nil, validateFilterTransform(tracePipeline.Spec.Filters, tracePipeline.Spec.Transforms) + return nil, validateFilterTransform(ctx, tracePipeline.Spec.Filters, tracePipeline.Spec.Transforms) } func (v *TracePipelineValidator) ValidateDelete(_ context.Context, obj runtime.Object) (admission.Warnings, error) { return nil, nil } -func validateFilterTransform(filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { - err := webhookutils.ValidateFilterTransform(ottl.SignalTypeTrace, filterSpec, transformSpec) +func validateFilterTransform(ctx context.Context, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { + err := webhookutils.ValidateFilterTransform(ctx, ottl.SignalTypeTrace, filterSpec, transformSpec) if err != nil { return fmt.Errorf(conditions.MessageForTracePipeline(conditions.ReasonOTTLSpecInvalid), err.Error()) } diff --git a/webhook/utils/transformfilter.go b/webhook/utils/transformfilter.go index 508f5016d2..7575f82cf2 100644 --- a/webhook/utils/transformfilter.go +++ b/webhook/utils/transformfilter.go @@ -1,7 +1,8 @@ package utils import ( - "fmt" + "context" + "errors" logf "sigs.k8s.io/controller-runtime/pkg/log" @@ -11,11 +12,13 @@ import ( "github.com/kyma-project/telemetry-manager/internal/validators/ottl" ) -func ValidateFilterTransform(signalType ottl.SignalType, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { +var errFailedToCreatePipeline = errors.New("failed to create pipeline") + +func ValidateFilterTransform(ctx context.Context, signalType ottl.SignalType, filterSpec []telemetryv1beta1.FilterSpec, transformSpec []telemetryv1beta1.TransformSpec) error { filterValidator, err := ottl.NewFilterSpecValidator(signalType) if err != nil { - logf.Log.V(1).Error(err, "Failed to instantiate FilterSpec validator") - return fmt.Errorf("failed to create pipeline") + logf.FromContext(ctx).V(1).Error(err, "Failed to instantiate FilterSpec validator") + return errFailedToCreatePipeline } for _, filter := range filterSpec { @@ -28,7 +31,7 @@ func ValidateFilterTransform(signalType ottl.SignalType, filterSpec []telemetryv transformValidator, err := ottl.NewTransformSpecValidator(signalType) if err != nil { logf.Log.V(1).Error(err, "Failed to instantiate TransformSpec validator") - return fmt.Errorf("failed to create pipeline") + return errFailedToCreatePipeline } for _, transform := range transformSpec { diff --git a/webhook/utils/transformfilter_test.go b/webhook/utils/transformfilter_test.go index 108ffa8dce..5e9d7f821d 100644 --- a/webhook/utils/transformfilter_test.go +++ b/webhook/utils/transformfilter_test.go @@ -12,6 +12,7 @@ import ( func TestValidateFilterTransform(t *testing.T) { err := ValidateFilterTransform( + t.Context(), ottl.SignalTypeLog, []telemetryv1beta1.FilterSpec{}, []telemetryv1beta1.TransformSpec{}, @@ -21,6 +22,7 @@ func TestValidateFilterTransform(t *testing.T) { func TestInvalidSignalType(t *testing.T) { err := ValidateFilterTransform( + t.Context(), "invalid", []telemetryv1beta1.FilterSpec{}, []telemetryv1beta1.TransformSpec{}, @@ -30,6 +32,7 @@ func TestInvalidSignalType(t *testing.T) { func TestWithValidFilterTransform(t *testing.T) { err := ValidateFilterTransform( + t.Context(), ottl.SignalTypeLog, []telemetryv1beta1.FilterSpec{ {Conditions: []string{`log.severity_number < SEVERITY_NUMBER_WARN`}}, @@ -44,6 +47,7 @@ func TestWithValidFilterTransform(t *testing.T) { func TestWithInvalidFilter(t *testing.T) { err := ValidateFilterTransform( + t.Context(), ottl.SignalTypeLog, []telemetryv1beta1.FilterSpec{ {Conditions: []string{`invalid condition`}}, @@ -58,6 +62,7 @@ func TestWithInvalidFilter(t *testing.T) { func TestWithInvalidTransform(t *testing.T) { err := ValidateFilterTransform( + t.Context(), ottl.SignalTypeLog, []telemetryv1beta1.FilterSpec{ {Conditions: []string{`log.severity_number < SEVERITY_NUMBER_WARN`}},