Skip to content

Commit

Permalink
Revert Eval function to add later
Browse files Browse the repository at this point in the history
  • Loading branch information
TylerHelmuth committed Feb 6, 2023
1 parent 50ca4e3 commit c10373f
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 16 deletions.
5 changes: 0 additions & 5 deletions internal/filter/expr/matcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,13 @@ package expr // import "github.com/open-telemetry/opentelemetry-collector-contri

import (
"context"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
)

// BoolExpr is an interface that allows matching a context K against a configuration of a match.
type BoolExpr[K any] interface {
Eval(ctx context.Context, tCtx K) (bool, error)
}

type matcher[K any] struct {
ottl.BoolExpr[K]
}

type notMatcher[K any] struct {
matcher BoolExpr[K]
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/ottl/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ func NewStatements[K any](statements []*Statement[K], telemetrySettings componen
}

// Execute is a function that will execute all the statements in the Statements list.
func (s Statements[K]) Execute(ctx context.Context, tCtx K) error {
func (s *Statements[K]) Execute(ctx context.Context, tCtx K) error {
for _, statement := range s.statements {
_, _, err := statement.Execute(ctx, tCtx)
if err != nil {
Expand Down
37 changes: 27 additions & 10 deletions processor/filterprocessor/internal/common/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,51 +32,51 @@ import (
func ParseSpan(conditions []string, set component.TelemetrySettings) (expr.BoolExpr[ottlspan.TransformContext], error) {
statmentsStr := conditionsToStatements(conditions)
parser := ottlspan.NewParser(functions[ottlspan.TransformContext](), set)
statements, err := parser.ParseStatements(statmentsStr, ottl.PropagateError)
statements, err := parser.ParseStatements(statmentsStr)
if err != nil {
return nil, err
}
return statements, nil
return statementsToExpr(statements), nil
}

func ParseSpanEvent(conditions []string, set component.TelemetrySettings) (expr.BoolExpr[ottlspanevent.TransformContext], error) {
statmentsStr := conditionsToStatements(conditions)
parser := ottlspanevent.NewParser(functions[ottlspanevent.TransformContext](), set)
statements, err := parser.ParseStatements(statmentsStr, ottl.PropagateError)
statements, err := parser.ParseStatements(statmentsStr)
if err != nil {
return nil, err
}
return statements, nil
return statementsToExpr(statements), nil
}

func ParseLog(conditions []string, set component.TelemetrySettings) (expr.BoolExpr[ottllog.TransformContext], error) {
statmentsStr := conditionsToStatements(conditions)
parser := ottllog.NewParser(functions[ottllog.TransformContext](), set)
statements, err := parser.ParseStatements(statmentsStr, ottl.PropagateError)
statements, err := parser.ParseStatements(statmentsStr)
if err != nil {
return nil, err
}
return statements, nil
return statementsToExpr(statements), nil
}

func ParseMetric(conditions []string, set component.TelemetrySettings) (expr.BoolExpr[ottlmetric.TransformContext], error) {
statmentsStr := conditionsToStatements(conditions)
parser := ottlmetric.NewParser(functions[ottlmetric.TransformContext](), set)
statements, err := parser.ParseStatements(statmentsStr, ottl.PropagateError)
statements, err := parser.ParseStatements(statmentsStr)
if err != nil {
return nil, err
}
return statements, nil
return statementsToExpr(statements), nil
}

func ParseDataPoint(conditions []string, set component.TelemetrySettings) (expr.BoolExpr[ottldatapoint.TransformContext], error) {
statmentsStr := conditionsToStatements(conditions)
parser := ottldatapoint.NewParser(functions[ottldatapoint.TransformContext](), set)
statements, err := parser.ParseStatements(statmentsStr, ottl.PropagateError)
statements, err := parser.ParseStatements(statmentsStr)
if err != nil {
return nil, err
}
return statements, nil
return statementsToExpr(statements), nil
}

func conditionsToStatements(conditions []string) []string {
Expand All @@ -87,6 +87,23 @@ func conditionsToStatements(conditions []string) []string {
return statements
}

type statementExpr[K any] struct {
statement *ottl.Statement[K]
}

func (se statementExpr[K]) Eval(ctx context.Context, tCtx K) (bool, error) {
_, ret, err := se.statement.Execute(ctx, tCtx)
return ret, err
}

func statementsToExpr[K any](statements []*ottl.Statement[K]) expr.BoolExpr[K] {
var rets []expr.BoolExpr[K]
for _, statement := range statements {
rets = append(rets, statementExpr[K]{statement: statement})
}
return expr.Or(rets...)
}

func functions[K any]() map[string]interface{} {
return map[string]interface{}{
"TraceID": ottlfuncs.TraceID[K],
Expand Down

0 comments on commit c10373f

Please sign in to comment.