[v10.4.x] Prometheus: Do not throw error for label_join function (#86609)

This commit is contained in:
grafana-delivery-bot[bot]
2024-04-19 09:41:40 -05:00
committed by GitHub
parent 26048baa0b
commit 0ed766d9a1
@@ -201,6 +201,7 @@ export function getOperationDefinitions(): QueryBuilderOperationDef[] {
],
defaultParams: ['', ',', ''],
renderer: labelJoinRenderer,
explainHandler: labelJoinExplainHandler,
addOperationHandler: labelJoinAddOperationHandler,
}),
createFunction({ id: PromOperationId.Log10 }),
@@ -356,11 +357,21 @@ function addNestedQueryHandler(def: QueryBuilderOperationDef, query: PromVisualQ
}
function labelJoinRenderer(model: QueryBuilderOperation, def: QueryBuilderOperationDef, innerExpr: string) {
if (typeof model.params[1] !== 'string') {
throw 'The separator must be a string';
const paramZero = model.params[0] ?? '';
const paramOne = model.params[1] ?? '';
const separator = `"${paramOne}"`;
return `${model.id}(${innerExpr}, "${paramZero}", ${separator}, "${model.params.slice(2).join(separator)}")`;
}
function labelJoinExplainHandler(op: QueryBuilderOperation, def?: QueryBuilderOperationDef): string {
let explainMessage = def?.documentation ?? 'no docs';
if (typeof op.params[1] !== 'string') {
explainMessage += ' 🚨🚨🚨 The `separator` must be a string.';
}
const separator = `"${model.params[1]}"`;
return `${model.id}(${innerExpr}, "${model.params[0]}", ${separator}, "${model.params.slice(2).join(separator)}")`;
return explainMessage;
}
function labelJoinAddOperationHandler<T extends QueryWithOperations>(def: QueryBuilderOperationDef, query: T) {