Path: blob/main/component/loki/source/podlogs/relabel.go
5341 views
package podlogs12import (3"strings"45promv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"6"github.com/prometheus/common/model"7"github.com/prometheus/prometheus/model/relabel"8)910func convertRelabelConfig(in []*promv1.RelabelConfig) ([]*relabel.Config, error) {11res := make([]*relabel.Config, 0, len(in))1213for _, inRule := range in {14outRule := relabel.DefaultRelabelConfig15if len(inRule.SourceLabels) > 0 {16outRule.SourceLabels = convertLabelNames(inRule.SourceLabels)17}18if inRule.Separator != "" {19outRule.Separator = inRule.Separator20}21if inRule.Regex != "" {22regex, err := relabel.NewRegexp(inRule.Regex)23if err != nil {24return nil, err25}26outRule.Regex = regex27}28if inRule.Modulus != 0 {29outRule.Modulus = inRule.Modulus30}31if inRule.TargetLabel != "" {32outRule.TargetLabel = inRule.TargetLabel33}34if inRule.Replacement != "" {35outRule.Replacement = inRule.Replacement36}37if inRule.Action != "" {38outRule.Action = relabel.Action(strings.ToLower(inRule.Action))39}4041res = append(res, &outRule)42}4344return res, nil45}4647func convertLabelNames(in []promv1.LabelName) model.LabelNames {48res := make([]model.LabelName, 0, len(in))49for _, inName := range in {50res = append(res, model.LabelName(inName))51}52return res53}545556