labels

package
v0.0.0-...-a7839fa Latest Latest
Warning

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

Go to latest
Published: Jan 31, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MatchType

type MatchType int

MatchType is an enum for label matching types.

const (
	MatchEqual MatchType = iota
	MatchNotEqual
	MatchRegexp
	MatchNotRegexp
)

Possible MatchTypes.

func (MatchType) String

func (m MatchType) String() string

type Matcher

type Matcher struct {
	Type  MatchType
	Name  string
	Value string
	// contains filtered or unexported fields
}

Matcher models the matching of a label.

func NewMatcher

func NewMatcher(t MatchType, n, v string) (*Matcher, error)

NewMatcher returns a matcher object.

func ParseMatcher

func ParseMatcher(s string) (_ *Matcher, err error)

ParseMatcher parses a matcher with a syntax inspired by PromQL and OpenMetrics. This syntax is convenient to describe filters and selectors in UIs and config files. To support the interactive nature of the use cases, the parser is in various aspects fairly tolerant.

The syntax of a matcher consists of three tokens: (1) A valid Prometheus label name. (2) One of '=', '!=', '=~', or '!~', with the same meaning as known from PromQL selectors. (3) A UTF-8 string, which may be enclosed in double quotes. Before or after each token, there may be any amount of whitespace, which will be discarded. The 3rd token may be the empty string. Within the 3rd token, OpenMetrics escaping rules apply: '\"' for a double-quote, '\n' for a line feed, '\\' for a literal backslash. Unescaped '"' must not occur inside the 3rd token (only as the 1st or last character). However, literal line feed characters are tolerated, as are single '\' characters not followed by '\', 'n', or '"'. They act as a literal backslash in that case.

func ParseMatchers

func ParseMatchers(s string) ([]*Matcher, error)

ParseMatchers parses a comma-separated list of Matchers. A leading '{' and/or a trailing '}' is optional and will be trimmed before further parsing. Individual Matchers are separated by commas outside of quoted parts of the input string. Those commas may be surrounded by whitespace. Parts of the string inside unescaped double quotes ('"…"') are considered quoted (and commas don't act as separators there). If double quotes are escaped with a single backslash ('\"'), they are ignored for the purpose of identifying quoted parts of the input string. If the input string, after trimming the optional trailing '}', ends with a comma, followed by optional whitespace, this comma and whitespace will be trimmed.

Examples for valid input strings:

{foo = "bar", dings != "bums", }
foo=bar,dings!=bums
foo=bar, dings!=bums
{quote="She said: \"Hi, ladies! That's gender-neutral…\""}
statuscode=~"5.."

See ParseMatcher for details on how an individual Matcher is parsed.

func (Matcher) MarshalJSON

func (m Matcher) MarshalJSON() ([]byte, error)

MarshalJSON retains backwards compatibility with types.Matcher for the v1 API.

func (*Matcher) Matches

func (m *Matcher) Matches(s string) bool

Matches returns whether the matcher matches the given string value.

func (*Matcher) String

func (m *Matcher) String() string

func (*Matcher) UnmarshalJSON

func (m *Matcher) UnmarshalJSON(data []byte) error

type Matchers

type Matchers []*Matcher

Matchers is a slice of Matchers that is sortable, implements Stringer, and provides a Matches method to match a LabelSet against all Matchers in the slice. Note that some users of Matchers might require it to be sorted.

func (Matchers) Len

func (ms Matchers) Len() int

func (Matchers) Less

func (ms Matchers) Less(i, j int) bool

func (Matchers) Matches

func (ms Matchers) Matches(lset model.LabelSet) bool

Matches checks whether all matchers are fulfilled against the given label set.

func (Matchers) String

func (ms Matchers) String() string

func (Matchers) Swap

func (ms Matchers) Swap(i, j int)

Jump to

Keyboard shortcuts

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