mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
This change adds a field to state.State and models.AlertInstance that indicate the "Reason" that an instance has its current state. This helps us account for cases where the state is "Normal" but the underlying evaluation returned "NoData" or "Error", for example. Fixes #42606 Signed-off-by: Joe Blubaugh <joe.blubaugh@grafana.com>
33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
import { isEmpty } from 'lodash';
|
|
|
|
import { PanelProps } from '@grafana/data';
|
|
import { Alert, hasAlertState } from 'app/types/unified-alerting';
|
|
import { GrafanaAlertState, PromAlertingRuleState } from 'app/types/unified-alerting-dto';
|
|
|
|
import { UnifiedAlertListOptions } from './types';
|
|
|
|
export function filterAlerts(options: PanelProps<UnifiedAlertListOptions>['options'], alerts: Alert[]): Alert[] {
|
|
const { stateFilter } = options;
|
|
|
|
if (isEmpty(stateFilter)) {
|
|
return alerts;
|
|
}
|
|
|
|
return alerts.filter((alert) => {
|
|
return (
|
|
(stateFilter.firing &&
|
|
(hasAlertState(alert, GrafanaAlertState.Alerting) || hasAlertState(alert, PromAlertingRuleState.Firing))) ||
|
|
(stateFilter.pending &&
|
|
(hasAlertState(alert, GrafanaAlertState.Pending) || hasAlertState(alert, PromAlertingRuleState.Pending))) ||
|
|
(stateFilter.noData && hasAlertState(alert, GrafanaAlertState.NoData)) ||
|
|
(stateFilter.normal && hasAlertState(alert, GrafanaAlertState.Normal)) ||
|
|
(stateFilter.error && hasAlertState(alert, GrafanaAlertState.Error)) ||
|
|
(stateFilter.inactive && hasAlertState(alert, PromAlertingRuleState.Inactive))
|
|
);
|
|
});
|
|
}
|
|
|
|
export function isPrivateLabel(label: string) {
|
|
return !(label.startsWith('__') && label.endsWith('__'));
|
|
}
|