github.com/observiq/carbon@v0.9.11-0.20200820160507-1b872e368a5e/operator/builtin/parser/severity.go (about)

     1  package parser
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/observiq/carbon/entry"
     7  	"github.com/observiq/carbon/errors"
     8  	"github.com/observiq/carbon/operator"
     9  	"github.com/observiq/carbon/operator/helper"
    10  )
    11  
    12  func init() {
    13  	operator.Register("severity_parser", func() operator.Builder { return NewSeverityParserConfig("") })
    14  }
    15  
    16  func NewSeverityParserConfig(operatorID string) *SeverityParserConfig {
    17  	return &SeverityParserConfig{
    18  		TransformerConfig:    helper.NewTransformerConfig(operatorID, "severity_parser"),
    19  		SeverityParserConfig: helper.NewSeverityParserConfig(),
    20  	}
    21  }
    22  
    23  // SeverityParserConfig is the configuration of a severity parser operator.
    24  type SeverityParserConfig struct {
    25  	helper.TransformerConfig    `yaml:",inline"`
    26  	helper.SeverityParserConfig `yaml:",omitempty,inline"`
    27  }
    28  
    29  // Build will build a time parser operator.
    30  func (c SeverityParserConfig) Build(context operator.BuildContext) (operator.Operator, error) {
    31  	transformerOperator, err := c.TransformerConfig.Build(context)
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  
    36  	severityParser, err := c.SeverityParserConfig.Build(context)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	severityOperator := &SeverityParserOperator{
    42  		TransformerOperator: transformerOperator,
    43  		SeverityParser:      severityParser,
    44  	}
    45  
    46  	return severityOperator, nil
    47  }
    48  
    49  // SeverityParserOperator is an operator that parses time from a field to an entry.
    50  type SeverityParserOperator struct {
    51  	helper.TransformerOperator
    52  	helper.SeverityParser
    53  }
    54  
    55  // Process will parse time from an entry.
    56  func (p *SeverityParserOperator) Process(ctx context.Context, entry *entry.Entry) error {
    57  	if err := p.Parse(ctx, entry); err != nil {
    58  		return errors.Wrap(err, "parse severity")
    59  	}
    60  
    61  	p.Write(ctx, entry)
    62  	return nil
    63  }