Compare commits

...

1 Commits

Author SHA1 Message Date
Alexander Akhmetov 0880592cbe Alerting: Apply rule_uid filter when fetching state of a single rule 2025-12-12 17:38:11 +01:00
3 changed files with 23 additions and 0 deletions
@@ -69,5 +69,19 @@ describe('alertRuleApi', () => {
expect(fetchMock).toHaveBeenCalledTimes(1);
expect(request.params?.[PrometheusAPIFilters.LimitAlerts]).toBe('25');
});
it('includes rule_uid when provided', async () => {
const request = await executePrometheusRuleNamespacesQuery({ ruleUid: 'test-rule-uid-123' });
expect(fetchMock).toHaveBeenCalledTimes(1);
expect(request.params?.[PrometheusAPIFilters.RuleUID]).toBe('test-rule-uid-123');
});
it('omits rule_uid when not provided', async () => {
const request = await executePrometheusRuleNamespacesQuery();
expect(fetchMock).toHaveBeenCalledTimes(1);
expect(request.params?.[PrometheusAPIFilters.RuleUID]).toBeUndefined();
});
});
});
@@ -54,6 +54,7 @@ export enum PrometheusAPIFilters {
Namespace = 'file',
NamespaceVanilla = 'file[]',
FolderUID = 'folder_uid',
RuleUID = 'rule_uid',
LimitAlerts = 'limit_alerts',
MaxGroups = 'max_groups',
ExcludeAlerts = 'exclude_alerts',
@@ -169,6 +170,7 @@ export const alertRuleApi = alertingApi.injectEndpoints({
namespace?: string;
groupName?: string;
ruleName?: string;
ruleUid?: string;
dashboardUid?: string;
panelId?: number;
limitAlerts?: number;
@@ -181,6 +183,7 @@ export const alertRuleApi = alertingApi.injectEndpoints({
namespace,
groupName,
ruleName,
ruleUid,
dashboardUid,
panelId,
limitAlerts,
@@ -202,6 +205,11 @@ export const alertRuleApi = alertingApi.injectEndpoints({
queryParams[PrometheusAPIFilters.RuleNameVanilla] = ruleName;
}
// Supported only by Grafana managed rules
if (ruleUid) {
queryParams[PrometheusAPIFilters.RuleUID] = ruleUid;
}
if (namespace) {
if (isGrafanaRulesSource(ruleSourceName)) {
queryParams[PrometheusAPIFilters.FolderUID] = namespace;
@@ -122,6 +122,7 @@ export function useCombinedRule({ ruleIdentifier, limitAlerts }: Props): Request
namespace: ruleLocation?.namespace,
groupName: ruleLocation?.group,
ruleName: ruleLocation?.ruleName,
ruleUid: isGrafanaRuleIdentifier(ruleIdentifier) ? ruleIdentifier.uid : undefined,
limitAlerts,
},
{