Loki: Fix ad-hoc filter when used with parser (#38542)

* Fix ad hoc filter when used with parser

* Update
This commit is contained in:
Ivana Huckova 2021-08-25 10:08:41 -04:00 committed by GitHub
parent 2e772d41a7
commit d1b6132302
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -416,21 +416,11 @@ export class LokiDatasource extends DataSourceApi<LokiQuery, LokiOptions> {
let expression = query.expr ?? '';
switch (action.type) {
case 'ADD_FILTER': {
// Temporary fix for log queries that use parser. We don't know which labels are parsed and which are actual labels.
// If query has parser, we treat all labels as parsed and use | key="value" syntax (same in ADD_FILTER_OUT)
if (queryHasPipeParser(expression) && !isMetricsQuery(expression)) {
expression = addParsedLabelToQuery(expression, action.key, action.value, '=');
} else {
expression = addLabelToQuery(expression, action.key, action.value, undefined, true);
}
expression = this.addLabelToQuery(expression, action.key, action.value, '=');
break;
}
case 'ADD_FILTER_OUT': {
if (queryHasPipeParser(expression) && !isMetricsQuery(expression)) {
expression = addParsedLabelToQuery(expression, action.key, action.value, '!=');
} else {
expression = addLabelToQuery(expression, action.key, action.value, '!=', true);
}
expression = this.addLabelToQuery(expression, action.key, action.value, '!=');
break;
}
default:
@ -674,11 +664,21 @@ export class LokiDatasource extends DataSourceApi<LokiQuery, LokiOptions> {
if (operator === '=~' || operator === '!~') {
value = lokiRegularEscape(value);
}
return addLabelToQuery(acc, key, value, operator);
return this.addLabelToQuery(acc, key, value, operator);
}, expr);
return expr;
}
addLabelToQuery(queryExpr: string, key: string, value: string | number, operator: string) {
if (queryHasPipeParser(queryExpr) && !isMetricsQuery(queryExpr)) {
// If query has parser, we treat all labels as parsed and use | key="value" syntax
return addParsedLabelToQuery(queryExpr, key, value, operator);
} else {
return addLabelToQuery(queryExpr, key, value, operator, true);
}
}
}
export function renderTemplate(aliasPattern: string, aliasData: { [key: string]: string }) {