diff --git a/docs/sources/features/datasources/loki.md b/docs/sources/features/datasources/loki.md index 858c3665662..ccd11bda7ab 100755 --- a/docs/sources/features/datasources/loki.md +++ b/docs/sources/features/datasources/loki.md @@ -189,14 +189,15 @@ datasources: jsonData: maxLines: 1000 derivedFields: - # Field with internal link pointing to datasource in Grafana + # Field with internal link pointing to data source in Grafana. + # Right now, Grafana supports only Jaeger and Zipkin data sources as link targets. - datasourceUid: my_jaeger_uid matcherRegex: "traceID=(\\w+)" name: TraceID # url will be interpreted as query for the datasource url: "$${__value.raw}" - # Field with external link + # Field with external link. - matcherRegex: "traceID=(\\w+)" name: TraceID url: "http://localhost:16686/trace/$${__value.raw}" diff --git a/public/app/plugins/datasource/loki/configuration/DerivedField.test.tsx b/public/app/plugins/datasource/loki/configuration/DerivedField.test.tsx index 5c4ff10ed40..e890698df02 100644 --- a/public/app/plugins/datasource/loki/configuration/DerivedField.test.tsx +++ b/public/app/plugins/datasource/loki/configuration/DerivedField.test.tsx @@ -2,12 +2,31 @@ import React from 'react'; import { shallow } from 'enzyme'; import { DerivedField } from './DerivedField'; import DataSourcePicker from '../../../../core/components/Select/DataSourcePicker'; +import { DataSourceInstanceSettings } from '@grafana/data'; jest.mock('app/features/plugins/datasource_srv', () => ({ getDatasourceSrv() { return { - getExternal(): any[] { - return []; + getExternal(): DataSourceInstanceSettings[] { + return [ + { + id: 1, + uid: 'metrics', + name: 'metrics_ds', + meta: { + tracing: false, + } as any, + } as any, + + { + id: 2, + uid: 'tracing', + name: 'tracing_ds', + meta: { + tracing: true, + } as any, + } as any, + ]; }, }; }, @@ -39,4 +58,21 @@ describe('DerivedField', () => { const wrapper = shallow( {}} onDelete={() => {}} suggestions={[]} />); expect(wrapper.find('DataSourceSection').length).toBe(0); }); + + it('shows only tracing datasources for internal link', () => { + const value = { + matcherRegex: '', + name: '', + datasourceUid: 'test', + }; + const wrapper = shallow( {}} onDelete={() => {}} suggestions={[]} />); + const dsSection = wrapper.find('DataSourceSection').dive(); + expect(dsSection.find(DataSourcePicker).props().datasources).toEqual([ + { + meta: { tracing: true }, + name: 'tracing_ds', + value: 'tracing', + }, + ]); + }); }); diff --git a/public/app/plugins/datasource/loki/configuration/DerivedField.tsx b/public/app/plugins/datasource/loki/configuration/DerivedField.tsx index 93c71addc83..6307391af9e 100644 --- a/public/app/plugins/datasource/loki/configuration/DerivedField.tsx +++ b/public/app/plugins/datasource/loki/configuration/DerivedField.tsx @@ -152,6 +152,8 @@ const DataSourceSection = (props: DataSourceSectionProps) => { const { datasourceUid, onChange } = props; const datasources: DataSourceSelectItem[] = getDatasourceSrv() .getExternal() + // At this moment only Jaeger and Zipkin datasource is supported as the link target. + .filter(ds => ds.meta.tracing) .map( ds => ({