From 70e38ec3528a916ac3d361b5a3af5e6b9b526f79 Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Thu, 12 Dec 2019 03:02:50 -0500 Subject: [PATCH] OpenTSDB: Adding lookup limit to OpenTSDB datasource settings (#20647) * feat: adding lookup limit to OpenTSDB settings Adding lookup to OpenTSDB datasource settings and using it in the datasource for tag value lookup and suggest * Document the change. * feat: UI for configuring OpenTSDB lookup limit. * Apply prettier. * Fix compilation error. --- docs/sources/features/datasources/opentsdb.md | 5 ++++ .../opentsdb/components/OpenTsdbDetails.tsx | 30 +++++++++++++++---- .../plugins/datasource/opentsdb/datasource.ts | 6 ++-- .../app/plugins/datasource/opentsdb/types.ts | 1 + 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/docs/sources/features/datasources/opentsdb.md b/docs/sources/features/datasources/opentsdb.md index 19bc7c810a1..5494e8f2521 100644 --- a/docs/sources/features/datasources/opentsdb.md +++ b/docs/sources/features/datasources/opentsdb.md @@ -106,3 +106,8 @@ datasources: tsdbResolution: 1 tsdbVersion: 1 ``` + +## Lookup limits + +By default, at most 1000 records are looked up from OpenTSDB. +You can change this by modifying the "Lookup Limit" in the OpenTSDB settings page. diff --git a/public/app/plugins/datasource/opentsdb/components/OpenTsdbDetails.tsx b/public/app/plugins/datasource/opentsdb/components/OpenTsdbDetails.tsx index 52fd75d2374..12c07bdcf44 100644 --- a/public/app/plugins/datasource/opentsdb/components/OpenTsdbDetails.tsx +++ b/public/app/plugins/datasource/opentsdb/components/OpenTsdbDetails.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { FormLabel, Select } from '@grafana/ui'; +import React, { SyntheticEvent } from 'react'; +import { FormLabel, Select, Input } from '@grafana/ui'; import { DataSourceSettings, SelectableValue } from '@grafana/data'; import { OpenTsdbOptions } from '../types'; @@ -30,7 +30,7 @@ export const OpenTsdbDetails = (props: Props) => { ); }; -const onChangeHandler = (key: keyof OpenTsdbOptions, value: Props['value'], onChange: Props['onChange']) => ( +const onSelectChangeHandler = (key: keyof OpenTsdbOptions, value: Props['value'], onChange: Props['onChange']) => ( newValue: SelectableValue ) => { onChange({ @@ -58,3 +66,15 @@ const onChangeHandler = (key: keyof OpenTsdbOptions, value: Props['value'], onCh }, }); }; + +const onInputChangeHandler = (key: keyof OpenTsdbOptions, value: Props['value'], onChange: Props['onChange']) => ( + event: SyntheticEvent +) => { + onChange({ + ...value, + jsonData: { + ...value.jsonData, + [key]: event.currentTarget.value, + }, + }); +}; diff --git a/public/app/plugins/datasource/opentsdb/datasource.ts b/public/app/plugins/datasource/opentsdb/datasource.ts index 27bfbd8f42f..7219f775283 100644 --- a/public/app/plugins/datasource/opentsdb/datasource.ts +++ b/public/app/plugins/datasource/opentsdb/datasource.ts @@ -13,6 +13,7 @@ export default class OpenTsDatasource extends DataSourceApi { + return this._get('/api/suggest', { type, q: query, max: this.lookupLimit }).then((result: any) => { return result.data; }); } @@ -205,7 +207,7 @@ export default class OpenTsDatasource extends DataSourceApi { + return this._get('/api/search/lookup', { m: m, limit: this.lookupLimit }).then((result: any) => { result = result.data.results; const tagvs: any[] = []; _.each(result, r => { diff --git a/public/app/plugins/datasource/opentsdb/types.ts b/public/app/plugins/datasource/opentsdb/types.ts index 37c7de81f44..0fa868ee750 100644 --- a/public/app/plugins/datasource/opentsdb/types.ts +++ b/public/app/plugins/datasource/opentsdb/types.ts @@ -5,4 +5,5 @@ export interface OpenTsdbQuery extends DataQuery {} export interface OpenTsdbOptions extends DataSourceJsonData { tsdbVersion: number; tsdbResolution: number; + lookupLimit: number; }