From 0723a51e87dea4d41af7359f5bd430f2a5524afc Mon Sep 17 00:00:00 2001 From: ismail simsek Date: Thu, 24 Jul 2025 20:12:43 +0200 Subject: [PATCH] Prometheus: Fix adding labels to the query with empty values (#108611) * values can be empty * remove a test --- .../grafana-prometheus/src/add_label_to_query.ts | 2 +- .../grafana-prometheus/src/language_utils.test.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/grafana-prometheus/src/add_label_to_query.ts b/packages/grafana-prometheus/src/add_label_to_query.ts index 7c75e6e14ec..06e82fcbf00 100644 --- a/packages/grafana-prometheus/src/add_label_to_query.ts +++ b/packages/grafana-prometheus/src/add_label_to_query.ts @@ -21,7 +21,7 @@ import { PromVisualQuery } from './querybuilder/types'; * @param operator */ export function addLabelToQuery(query: string, key: string, value: string | number, operator = '='): string { - if (!key || !value) { + if (!key) { throw new Error('Need label to add to query.'); } diff --git a/packages/grafana-prometheus/src/language_utils.test.ts b/packages/grafana-prometheus/src/language_utils.test.ts index 5ba14363da7..555634f898e 100644 --- a/packages/grafana-prometheus/src/language_utils.test.ts +++ b/packages/grafana-prometheus/src/language_utils.test.ts @@ -191,6 +191,18 @@ describe('expandRecordingRules()', () => { const result = expandRecordingRules(query, mapping); expect(result).toBe(expected); }); + + it('when there is an empty label value it should still be able to expand the rule', () => { + const query = `sum(max by (cluster, container) (pod_cpu:active:kube_limits{container!="", cluster=~"pink"}))`; + const mapping = { + 'pod_cpu:active:kube_limits': { + expandedQuery: `kube_limits{job!="", resource="cpu"} * on (namespace, pod, cluster) group_left () max by (namespace, pod, cluster) ((kube_pod_status_phase{phase=~"Pending|Running"} == 1))`, + }, + }; + const expected = `sum(max by (cluster, container) (kube_limits{job!="", resource="cpu", container!="", cluster=~"pink"} * on (namespace, pod, cluster) group_left () max by (namespace, pod, cluster) ((kube_pod_status_phase{phase=~"Pending|Running", container!="", cluster=~"pink"} == 1))))`; + const result = expandRecordingRules(query, mapping); + expect(result).toBe(expected); + }); }); describe('escapeLabelValueInExactSelector()', () => {