From 314bea935f2d5668e369841170d2eb4c30fda4d3 Mon Sep 17 00:00:00 2001 From: Andres Martinez Gotor <andres.martinez@grafana.com> Date: Thu, 26 Oct 2023 09:30:24 +0200 Subject: [PATCH] Bug: Fix DatasourceSrv getList with aliases (#77027) --- public/app/features/plugins/datasource_srv.ts | 7 +++++- .../plugins/tests/datasource_srv.test.ts | 25 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/public/app/features/plugins/datasource_srv.ts b/public/app/features/plugins/datasource_srv.ts index 78c23d8e92b..e9b3b858662 100644 --- a/public/app/features/plugins/datasource_srv.ts +++ b/public/app/features/plugins/datasource_srv.ts @@ -1,3 +1,5 @@ +import { some } from 'lodash'; + import { AppEvents, DataSourceApi, @@ -222,7 +224,10 @@ export class DatasourceSrv implements DataSourceService { if (filters.alerting && !x.meta.alerting) { return false; } - if (filters.pluginId && x.meta.id !== filters.pluginId) { + if ( + filters.pluginId && + !(x.meta.id === filters.pluginId || some(x.meta.aliasIDs, (id) => id === filters.pluginId)) + ) { return false; } if (filters.filter && !filters.filter(x)) { diff --git a/public/app/features/plugins/tests/datasource_srv.test.ts b/public/app/features/plugins/tests/datasource_srv.test.ts index a6ff1cc3b2c..0acd249100b 100644 --- a/public/app/features/plugins/tests/datasource_srv.test.ts +++ b/public/app/features/plugins/tests/datasource_srv.test.ts @@ -129,6 +129,11 @@ describe('datasource_srv', () => { uid: 'no-query', meta: { id: 'no-query' }, }, + TestData: { + type: 'grafana-testdata-datasource', + name: 'TestData', + meta: { metrics: true, id: 'grafana-testdata-datasource', aliasIDs: ['testdata'] }, + }, }; describe('Given a list of data sources', () => { @@ -273,7 +278,7 @@ describe('datasource_srv', () => { describe('when getting external metric sources', () => { it('should return list of explore sources', () => { const externalSources = dataSourceSrv.getExternal(); - expect(externalSources.length).toBe(7); + expect(externalSources.length).toBe(8); }); }); @@ -307,6 +312,12 @@ describe('datasource_srv', () => { expect(list.length).toBe(1); }); + it('Can get get list and filter by an alias', () => { + const list = dataSourceSrv.getList({ pluginId: 'testdata' }); + expect(list[0].name).toBe('TestData'); + expect(list.length).toBe(1); + }); + it('Can get list of data sources with metrics: true, builtIn: true, mixed: true', () => { expect(dataSourceSrv.getList({ metrics: true, dashboard: true, mixed: true })).toMatchInlineSnapshot(` [ @@ -344,6 +355,18 @@ describe('datasource_srv', () => { "type": "test-db", "uid": "uid-code-mmm", }, + { + "meta": { + "aliasIDs": [ + "testdata", + ], + "id": "grafana-testdata-datasource", + "metrics": true, + }, + "name": "TestData", + "type": "grafana-testdata-datasource", + "uid": "TestData", + }, { "meta": { "metrics": true,