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:
Peter Nguyen
2026-01-06 10:29:51 +00:00
committed by GitHub
co-authored by Zoltán Bedi
parent 585d24dafa
commit 217427e072
2 changed files with 19 additions and 1 deletions
@@ -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)) {