Loki Language Provider: Add missing interpolation to fetchLabelsByLabelsEndpoint (#114608)
* Plugins: Implement bug fix for loki label selectors w/ variable interpolation * Chore: Add test to ensure result is interpolated --------- Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
This commit is contained in:
co-authored by
Zoltán Bedi
parent
585d24dafa
commit
217427e072
@@ -560,6 +560,23 @@ describe('Language completion provider', () => {
|
||||
start: 1560153109000,
|
||||
});
|
||||
});
|
||||
|
||||
it('should interpolate variables in stream selector', async () => {
|
||||
const datasource = setup({});
|
||||
jest.spyOn(datasource, 'getTimeRangeParams').mockReturnValue({ start: 0, end: 1 });
|
||||
jest
|
||||
.spyOn(datasource, 'interpolateString')
|
||||
.mockImplementation((string: string) => string.replace(/\$test_var/g, 'age'));
|
||||
|
||||
const languageProvider = new LanguageProvider(datasource);
|
||||
languageProvider.request = jest.fn().mockResolvedValue([]);
|
||||
await languageProvider.fetchLabels({ streamSelector: '{age="new", $test_var="new"}' });
|
||||
expect(languageProvider.request).toHaveBeenCalledWith('labels', {
|
||||
end: 1,
|
||||
query: '{age="new", age="new"}',
|
||||
start: 0,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should filter internal labels', async () => {
|
||||
|
||||
@@ -175,7 +175,8 @@ export default class LokiLanguageProvider extends LanguageProvider {
|
||||
const { start, end } = this.datasource.getTimeRangeParams(range);
|
||||
const params: Record<string, string | number> = { start, end };
|
||||
if (options?.streamSelector && options?.streamSelector !== EMPTY_SELECTOR) {
|
||||
params['query'] = options.streamSelector;
|
||||
const interpolatedStreamSelector = this.datasource.interpolateString(options.streamSelector);
|
||||
params['query'] = interpolatedStreamSelector;
|
||||
}
|
||||
const res = await this.request(url, params);
|
||||
if (Array.isArray(res)) {
|
||||
|
||||
Reference in New Issue
Block a user