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 }