Menu

Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.

Enterprise Open source

DataSourceApi class

The main data source abstraction interface, represents an instance of a data source

Although this is a class, datasource implementations do not *yet* need to extend it. As such, we can not yet add functions with default implementations.

Signature

typescript
declare abstract class DataSourceApi<TQuery extends DataQuery = DataQuery, TOptions extends DataSourceJsonData = DataSourceJsonData, TQueryImportConfiguration extends Record<string, object> = {}> 

Import

typescript
import { DataSourceApi } from '@grafana/data';

Constructors

ConstructorModifiersDescription
constructor(instanceSettings)Constructs a new instance of the DataSourceApi class

Properties

PropertyModifiersTypeDescription
annotationsAnnotationSupport<TQuery>An annotation processor allows explicit control for how annotations are managed.It is only necessary to configure an annotation processor if the default behavior is not desirable
componentsDataSourcePluginComponents<DataSourceApi<TQuery, TOptions>, TQuery, TOptions>Set after constructor call, as the data source instance is the most common thing to pass around we attach the components to this instance for easy access
getLogRowContext<TContextQueryOptions extends {}>(row: LogRowModel, options?: TContextQueryOptions) => Promise<DataQueryResponse>
idnumberSet in constructor
init() => voidInitializes a datasource after instantiation
intervalstringmin interval range
languageProvideranyUsed in explore
metaDataSourcePluginMetastatic information about the datasource
namestringSet in constructor
typestringSet in constructor
uidstringSet in constructor

Methods

MethodModifiersDescription
annotationQuery(options)Can be optionally implemented to allow datasource to be a source of annotations for dashboard. This function will only be called if an angular is configured and the is undefined
filterQuery(query)Override to skip executing a query
getHighlighterExpression(query)
getImportQueryConfiguration()Returns configuration for importing queries from other data sources
getQueryDisplayText(query)Convert a query to a simple text string
getQueryHints(query, results, rest)Get hints for query improvements
getRef()Get an identifier object for this datasource instance
getTagKeys(options)Get tag keys for adhoc filters
getTagValues(options)Get tag values for adhoc filters
getVersion(optionalOptions)
importQueries(queries, originDataSource)Imports queries from a different datasource
interpolateVariablesInQueries(queries, scopedVars)
metricFindQuery(query, options)Variable query action.
modifyQuery(query, action)Used in explore
query(request)Query for data, and optionally stream results
showContextToggle(row)
targetContainsTemplate(query)Used by alerting to check if query contains template variables
testDatasource()Test & verify datasource settings & connection details (returning TestingStatus)When verification fails - errors specific to the data source should be handled here and converted to a TestingStatus object. Unknown errors and HTTP errors can be re-thrown and will be handled here: public/app/features/datasources/state/actions.ts

constructor(instanceSettings)

Constructs a new instance of the DataSourceApi class

Signature

typescript
constructor(instanceSettings: DataSourceInstanceSettings<TOptions>);

Parameters

ParameterTypeDescription
instanceSettingsDataSourceInstanceSettings<TOptions>

annotations property

An annotation processor allows explicit control for how annotations are managed.

It is only necessary to configure an annotation processor if the default behavior is not desirable

Signature

typescript
annotations?: AnnotationSupport<TQuery>;

components property

Set after constructor call, as the data source instance is the most common thing to pass around we attach the components to this instance for easy access

Signature

typescript
components?: DataSourcePluginComponents<DataSourceApi<TQuery, TOptions>, TQuery, TOptions>;

getLogRowContext property

Signature

typescript
getLogRowContext?: <TContextQueryOptions extends {}>(row: LogRowModel, options?: TContextQueryOptions) => Promise<DataQueryResponse>;

id property

Set in constructor

Signature

typescript
readonly id: number;

init property

Initializes a datasource after instantiation

Signature

typescript
init?: () => void;

interval property

min interval range

Signature

typescript
interval?: string;

languageProvider property

Used in explore

Signature

typescript
languageProvider?: any;

meta property

static information about the datasource

Signature

typescript
meta: DataSourcePluginMeta;

name property

Set in constructor

Signature

typescript
readonly name: string;

type property

Set in constructor

Signature

typescript
readonly type: string;

uid property

Set in constructor

Signature

typescript
readonly uid: string;

annotationQuery method

Can be optionally implemented to allow datasource to be a source of annotations for dashboard. This function will only be called if an angular is configured and the is undefined

Signature

typescript
annotationQuery?(options: AnnotationQueryRequest<TQuery>): Promise<AnnotationEvent[]>;

Parameters

ParameterTypeDescription
optionsAnnotationQueryRequest<TQuery>

Returns:

Promise<AnnotationEvent[]>

filterQuery method

Override to skip executing a query

Signature

typescript
/** @virtual */
filterQuery?(query: TQuery): boolean;

Parameters

ParameterTypeDescription
queryTQuery

Returns:

boolean

false if the query should be skipped

getHighlighterExpression method

Signature

typescript
getHighlighterExpression?(query: TQuery): string[];

Parameters

ParameterTypeDescription
queryTQuery

Returns:

string[]

getImportQueryConfiguration method

Returns configuration for importing queries from other data sources

Signature

typescript
getImportQueryConfiguration?(): TQueryImportConfiguration;

Returns:

TQueryImportConfiguration

getQueryDisplayText method

Convert a query to a simple text string

Signature

typescript
getQueryDisplayText?(query: TQuery): string;

Parameters

ParameterTypeDescription
queryTQuery

Returns:

string

getQueryHints method

Get hints for query improvements

Signature

typescript
getQueryHints?(query: TQuery, results: any[], ...rest: any): QueryHint[];

Parameters

ParameterTypeDescription
queryTQuery
resultsany[]
restany

Returns:

QueryHint[]

getRef method

Get an identifier object for this datasource instance

Signature

typescript
getRef(): DataSourceRef;

Returns:

DataSourceRef

getTagKeys method

Get tag keys for adhoc filters

Signature

typescript
getTagKeys?(options?: any): Promise<MetricFindValue[]>;

Parameters

ParameterTypeDescription
optionsany

Returns:

Promise<MetricFindValue[]>

getTagValues method

Get tag values for adhoc filters

Signature

typescript
getTagValues?(options: any): Promise<MetricFindValue[]>;

Parameters

ParameterTypeDescription
optionsany

Returns:

Promise<MetricFindValue[]>

getVersion method

Signature

typescript
getVersion?(optionalOptions?: any): Promise<string>;

Parameters

ParameterTypeDescription
optionalOptionsany

Returns:

Promise<string>

importQueries method

Imports queries from a different datasource

Signature

typescript
importQueries?(queries: DataQuery[], originDataSource: DataSourceApi<DataQuery>): Promise<TQuery[]>;

Parameters

ParameterTypeDescription
queriesDataQuery[]
originDataSourceDataSourceApi<DataQuery>

Returns:

Promise<TQuery[]>

interpolateVariablesInQueries method

Signature

typescript
interpolateVariablesInQueries?(queries: TQuery[], scopedVars: ScopedVars | {}): TQuery[];

Parameters

ParameterTypeDescription
queriesTQuery[]
scopedVarsScopedVars | {}

Returns:

TQuery[]

metricFindQuery method

Variable query action.

Signature

typescript
metricFindQuery?(query: any, options?: any): Promise<MetricFindValue[]>;

Parameters

ParameterTypeDescription
queryany
optionsany

Returns:

Promise<MetricFindValue[]>

modifyQuery method

Used in explore

Signature

typescript
modifyQuery?(query: TQuery, action: QueryFixAction): TQuery;

Parameters

ParameterTypeDescription
queryTQuery
actionQueryFixAction

Returns:

TQuery

query method

Query for data, and optionally stream results

Signature

typescript
abstract query(request: DataQueryRequest<TQuery>): Promise<DataQueryResponse> | Observable<DataQueryResponse>;

Parameters

ParameterTypeDescription
requestDataQueryRequest<TQuery>

Returns:

Promise<DataQueryResponse> | Observable<DataQueryResponse>

showContextToggle method

Signature

typescript
showContextToggle?(row?: LogRowModel): boolean;

Parameters

ParameterTypeDescription
rowLogRowModel

Returns:

boolean

targetContainsTemplate method

Used by alerting to check if query contains template variables

Signature

typescript
targetContainsTemplate?(query: TQuery): boolean;

Parameters

ParameterTypeDescription
queryTQuery

Returns:

boolean

testDatasource method

Test & verify datasource settings & connection details (returning TestingStatus)

When verification fails - errors specific to the data source should be handled here and converted to a TestingStatus object. Unknown errors and HTTP errors can be re-thrown and will be handled here: public/app/features/datasources/state/actions.ts

Signature

typescript
abstract testDatasource(): Promise<any>;

Returns:

Promise<any>