Alerting: Remove internal labels from prometheus compatible API responses (#46548)
* Alerting: Remove internal labels from prometheus compatible API responses * Appease the linter * Fix integration tests * Fix API documentation & linter * move removal of internal labels to the models
This commit is contained in:
@@ -18,12 +18,9 @@ var (
|
||||
// ErrAlertRuleFailedGenerateUniqueUID is an error for failure to generate alert rule UID
|
||||
ErrAlertRuleFailedGenerateUniqueUID = errors.New("failed to generate alert rule UID")
|
||||
// ErrCannotEditNamespace is an error returned if the user does not have permissions to edit the namespace
|
||||
ErrCannotEditNamespace = errors.New("user does not have permissions to edit the namespace")
|
||||
// ErrRuleGroupNamespaceNotFound
|
||||
ErrRuleGroupNamespaceNotFound = errors.New("rule group not found under this namespace")
|
||||
// ErrAlertRuleFailedValidation
|
||||
ErrAlertRuleFailedValidation = errors.New("invalid alert rule")
|
||||
// ErrAlertRuleUniqueConstraintViolation
|
||||
ErrCannotEditNamespace = errors.New("user does not have permissions to edit the namespace")
|
||||
ErrRuleGroupNamespaceNotFound = errors.New("rule group not found under this namespace")
|
||||
ErrAlertRuleFailedValidation = errors.New("invalid alert rule")
|
||||
ErrAlertRuleUniqueConstraintViolation = errors.New("a conflicting alert rule is found: rule title under the same organisation and folder should be unique")
|
||||
)
|
||||
|
||||
@@ -77,6 +74,12 @@ const (
|
||||
OkErrState ExecutionErrorState = "OK"
|
||||
)
|
||||
|
||||
// InternalLabelNameSet are labels that grafana automatically include as part of the labelset.
|
||||
var InternalLabelNameSet = map[string]struct{}{
|
||||
RuleUIDLabel: {},
|
||||
NamespaceUIDLabel: {},
|
||||
}
|
||||
|
||||
const (
|
||||
RuleUIDLabel = "__alert_rule_uid__"
|
||||
NamespaceUIDLabel = "__alert_rule_namespace_uid__"
|
||||
@@ -110,6 +113,29 @@ type AlertRule struct {
|
||||
Labels map[string]string
|
||||
}
|
||||
|
||||
type LabelOption func(map[string]string)
|
||||
|
||||
func WithoutInternalLabels() LabelOption {
|
||||
return func(labels map[string]string) {
|
||||
for k := range labels {
|
||||
if _, ok := InternalLabelNameSet[k]; ok {
|
||||
delete(labels, k)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetLabels returns the labels specified as part of the alert rule.
|
||||
func (alertRule *AlertRule) GetLabels(opts ...LabelOption) map[string]string {
|
||||
labels := alertRule.Labels
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(labels)
|
||||
}
|
||||
|
||||
return labels
|
||||
}
|
||||
|
||||
// Diff calculates diff between two alert rules. Returns nil if two rules are equal. Otherwise, returns cmputil.DiffReport
|
||||
func (alertRule *AlertRule) Diff(rule *AlertRule, ignore ...string) cmputil.DiffReport {
|
||||
var reporter cmputil.DiffReporter
|
||||
|
||||
Reference in New Issue
Block a user