ValidateMetricName checks that ls has a valid non-empty metric name when limits.EnforceMetricName is true. It returns (nil, "") when valid, or (error, discardReason) when invalid. Callers should increment DiscardedSamples/DiscardedExemplars with the returned reason when non-empty.
(limits *Limits, ls []cortexpb.LabelAdapter, nameValidationScheme model.ValidationScheme)
| 280 | // It returns (nil, "") when valid, or (error, discardReason) when invalid. |
| 281 | // Callers should increment DiscardedSamples/DiscardedExemplars with the returned reason when non-empty. |
| 282 | func ValidateMetricName(limits *Limits, ls []cortexpb.LabelAdapter, nameValidationScheme model.ValidationScheme) (ValidationError, string) { |
| 283 | if !limits.EnforceMetricName { |
| 284 | return nil, "" |
| 285 | } |
| 286 | unsafeMetricName, err := extract.UnsafeMetricNameFromLabelAdapters(ls) |
| 287 | if err != nil { |
| 288 | return newNoMetricNameError(), missingMetricName |
| 289 | } |
| 290 | if !nameValidationScheme.IsValidMetricName(unsafeMetricName) { |
| 291 | return newInvalidMetricNameError(unsafeMetricName), invalidMetricName |
| 292 | } |
| 293 | return nil, "" |
| 294 | } |
| 295 | |
| 296 | // ValidateLabels returns an err if the labels are invalid. |
| 297 | // The returned error may retain the provided series labels. |