diff --git a/public/app/plugins/datasource/loki/language_provider.test.ts b/public/app/plugins/datasource/loki/language_provider.test.ts index e09f5045c2d..7e2b33ade9c 100644 --- a/public/app/plugins/datasource/loki/language_provider.test.ts +++ b/public/app/plugins/datasource/loki/language_provider.test.ts @@ -254,6 +254,18 @@ describe('Query imports', () => { }); describe('prometheus query imports', () => { + it('always results in range query type', async () => { + const instance = new LanguageProvider(datasource); + const result = await instance.importQueries( + [{ refId: 'bar', expr: '{job="grafana"}', instant: true, range: false } as DataQuery], + { + meta: { id: 'prometheus' }, + } as DataSourceApi + ); + expect(result).toEqual([{ refId: 'bar', expr: '{job="grafana"}', range: true }]); + expect(result).not.toHaveProperty('instant'); + }); + it('returns empty query from metric-only query', async () => { const instance = new LanguageProvider(datasource); const result = await instance.importPrometheusQuery('foo'); diff --git a/public/app/plugins/datasource/loki/language_provider.ts b/public/app/plugins/datasource/loki/language_provider.ts index 855281b762f..a932d82b6e9 100644 --- a/public/app/plugins/datasource/loki/language_provider.ts +++ b/public/app/plugins/datasource/loki/language_provider.ts @@ -15,6 +15,7 @@ import syntax, { FUNCTIONS, PIPE_PARSERS, PIPE_OPERATORS } from './syntax'; import { LokiQuery } from './types'; import { dateTime, AbsoluteTimeRange, LanguageProvider, HistoryItem, DataQuery, DataSourceApi } from '@grafana/data'; import { PromQuery } from '../prometheus/types'; +import { GraphiteQuery } from '../graphite/types'; import LokiDatasource from './datasource'; import { CompletionItem, TypeaheadInput, TypeaheadOutput, CompletionItemGroup } from '@grafana/ui'; @@ -334,16 +335,20 @@ export default class LokiLanguageProvider extends LanguageProvider { return { context, suggestions }; } - async importQueries(queries: DataQuery[], originDataSource: DataSourceApi): Promise { + async importQueries( + queries: PromQuery[] | GraphiteQuery[] | DataQuery[], + originDataSource: DataSourceApi + ): Promise { const datasourceType = originDataSource.meta.id; if (datasourceType === 'prometheus') { return Promise.all( - queries.map(async (query) => { - const expr = await this.importPrometheusQuery((query as PromQuery).expr); - const { ...rest } = query as PromQuery; + [...(queries as PromQuery[])].map(async (query) => { + const expr = await this.importPrometheusQuery(query.expr); + const { refId } = query; return { - ...rest, expr, + refId, + range: true, }; }) );