parser

package
v0.58.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2024 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrRuleCommentOnFile = errors.New("this comment is only valid when attached to a rule")

Functions

This section is empty.

Types

type AlertingRule

type AlertingRule struct {
	Expr          PromQLExpr
	For           *YamlNode
	KeepFiringFor *YamlNode
	Labels        *YamlMap
	Annotations   *YamlMap
	Alert         YamlNode
}

func (*AlertingRule) IsIdentical added in v0.50.0

func (ar *AlertingRule) IsIdentical(b *AlertingRule) bool

type Content added in v0.30.0

type Content struct {
	Body       []byte
	TotalLines int
	IgnoreLine int
	Ignored    bool
}

func ReadContent

func ReadContent(r io.Reader) (out Content, fileComments []comments.Comment, err error)

type LineRange added in v0.54.0

type LineRange struct {
	First int
	Last  int
}

func (LineRange) Expand added in v0.54.0

func (lr LineRange) Expand() []int

func (LineRange) String added in v0.54.0

func (lr LineRange) String() string

type ParseError

type ParseError struct {
	Err      error
	Fragment string
	Line     int
}

type Parser

type Parser struct{}

func NewParser

func NewParser() Parser

func (Parser) Parse

func (p Parser) Parse(content []byte) (rules []Rule, err error)

type PromQLExpr

type PromQLExpr struct {
	Value       *YamlNode
	SyntaxError error
	Query       *PromQLNode
}

func (PromQLExpr) IsIdentical added in v0.50.0

func (pqle PromQLExpr) IsIdentical(b PromQLExpr) bool

type PromQLNode

type PromQLNode struct {
	Parent   *PromQLNode
	Expr     promParser.Node
	Children []*PromQLNode
}

PromQLNode is used to turn the parsed PromQL query expression into a tree. This allows us to walk the tree up & down and look for either parents or children of specific type. Which is useful if you, for example, want to check if all vector selectors are wrapped inside function calls etc.

func DecodeExpr added in v0.2.0

func DecodeExpr(expr string) (*PromQLNode, error)

func WalkDownExpr added in v0.56.0

func WalkDownExpr[T promParser.Node](node *PromQLNode) (nodes []*PromQLNode)

WalkDownExpr works just like WalkUpExpr but it walks the tree down, visiting all children. It also starts by checking the node passed to it before walking down the tree.

func WalkUpExpr added in v0.56.0

func WalkUpExpr[T promParser.Node](node *PromQLNode) (nodes []*PromQLNode)

WalkUpExpr allows to iterate a promQLNode node looking for parents of specific type. Prometheus parser returns interfaces which makes it more difficult to figure out what kind of node we're dealing with, hence this helper takes a type parameter it tries to cast. It starts by checking the node passed to it and then walks up by visiting all parent nodes.

func WalkUpParent added in v0.56.0

func WalkUpParent[T promParser.Node](node *PromQLNode) (nodes []*PromQLNode)

WalkUpParent works like WalkUpExpr but checks the parent (if present) instead of the node itself. It returns the nodes where the parent is of given type.

func (PromQLNode) MarshalJSON added in v0.56.0

func (pn PromQLNode) MarshalJSON() ([]byte, error)

type RecordingRule

type RecordingRule struct {
	Expr   PromQLExpr
	Labels *YamlMap
	Record YamlNode
}

func (*RecordingRule) IsIdentical added in v0.50.0

func (rr *RecordingRule) IsIdentical(b *RecordingRule) bool

type Result

type Result struct {
	Path    string
	Error   error
	Content []byte
	Rules   []Rule
}

type Rule

type Rule struct {
	AlertingRule  *AlertingRule
	RecordingRule *RecordingRule
	Error         ParseError
	Comments      []comments.Comment
	Lines         LineRange
}

func (Rule) Expr

func (r Rule) Expr() PromQLExpr

func (Rule) IsIdentical added in v0.50.0

func (r Rule) IsIdentical(b Rule) bool

func (Rule) IsSame added in v0.27.0

func (r Rule) IsSame(nr Rule) bool

func (Rule) Name added in v0.40.1

func (r Rule) Name() string

func (Rule) Type added in v0.40.1

func (r Rule) Type() RuleType

type RuleType added in v0.40.1

type RuleType string
const (
	AlertingRuleType  RuleType = "alerting"
	RecordingRuleType RuleType = "recording"
	InvalidRuleType   RuleType = "invalid"
)

type YamlKeyValue

type YamlKeyValue struct {
	Key   *YamlNode
	Value *YamlNode
}

type YamlMap

type YamlMap struct {
	Key   *YamlNode
	Items []*YamlKeyValue
	Lines LineRange
}

func (YamlMap) GetValue

func (ym YamlMap) GetValue(key string) *YamlNode

func (*YamlMap) IsIdentical added in v0.50.0

func (ym *YamlMap) IsIdentical(b *YamlMap) bool

type YamlNode

type YamlNode struct {
	Value string
	Lines LineRange
}

func (*YamlNode) IsIdentical added in v0.54.0

func (yn *YamlNode) IsIdentical(b *YamlNode) bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL