Merge pull request #14215 from grafana/davkal/fix-logging-selector-parsing

Logging: fix query parsing for selectors with multiple labels
This commit is contained in:
David 2018-11-28 14:17:32 +01:00 committed by GitHub
commit 8830c133d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 16 deletions

View File

@ -35,4 +35,11 @@ describe('parseQuery', () => {
regexp: 'x|y',
});
});
it('returns query for selector with two labels', () => {
expect(parseQuery('{foo="bar", baz="42"}')).toEqual({
query: '{foo="bar", baz="42"}',
regexp: '',
});
});
});

View File

@ -16,26 +16,15 @@ const DEFAULT_QUERY_PARAMS = {
query: '',
};
const QUERY_REGEXP = /({\w+="[^"]+"})?\s*(\w[^{]+)?\s*({\w+="[^"]+"})?/;
const selectorRegexp = /{[^{]*}/g;
export function parseQuery(input: string) {
const match = input.match(QUERY_REGEXP);
const match = input.match(selectorRegexp);
let query = '';
let regexp = '';
let regexp = input;
if (match) {
if (match[1]) {
query = match[1];
}
if (match[2]) {
regexp = match[2].trim();
}
if (match[3]) {
if (match[1]) {
query = `${match[1].slice(0, -1)},${match[3].slice(1)}`;
} else {
query = match[3];
}
}
query = match[0];
regexp = input.replace(selectorRegexp, '').trim();
}
return { query, regexp };