mirror of
https://github.com/grafana/grafana.git
synced 2025-09-23 12:53:02 +08:00

* Elasticsearch: use proper semver strings to identify ES version * Update BE & tests * refactor BE tests * refactor isValidOption check * update test * Update pkg/tsdb/elasticsearch/client/client.go Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com> * Update pkg/tsdb/elasticsearch/client/search_request_test.go Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com> * Remove leftover FIXME comment * Add new test cases for new version format * Docs: add documentation about version dropdown * Update docs/sources/datasources/elasticsearch.md Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com> * Update docs/sources/datasources/elasticsearch.md Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com> * Update docs/sources/datasources/elasticsearch.md Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com> * Update provisioning documentation Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com> Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { DataSourceSettings } from '@grafana/data';
|
|
import { valid } from 'semver';
|
|
import { ElasticsearchOptions } from '../types';
|
|
import { coerceESVersion } from '../utils';
|
|
import { defaultMaxConcurrentShardRequests } from './ElasticDetails';
|
|
|
|
export const coerceOptions = (
|
|
options: DataSourceSettings<ElasticsearchOptions, {}>
|
|
): DataSourceSettings<ElasticsearchOptions, {}> => {
|
|
const esVersion = coerceESVersion(options.jsonData.esVersion);
|
|
|
|
return {
|
|
...options,
|
|
jsonData: {
|
|
...options.jsonData,
|
|
timeField: options.jsonData.timeField || '@timestamp',
|
|
esVersion,
|
|
maxConcurrentShardRequests:
|
|
options.jsonData.maxConcurrentShardRequests || defaultMaxConcurrentShardRequests(esVersion),
|
|
logMessageField: options.jsonData.logMessageField || '',
|
|
logLevelField: options.jsonData.logLevelField || '',
|
|
},
|
|
};
|
|
};
|
|
|
|
export const isValidOptions = (options: DataSourceSettings<ElasticsearchOptions, {}>): boolean => {
|
|
return (
|
|
// esVersion should be a valid semver string
|
|
!!valid(options.jsonData.esVersion) &&
|
|
// timeField should not be empty or nullish
|
|
!!options.jsonData.timeField &&
|
|
// maxConcurrentShardRequests should be a number AND greater than 0
|
|
!!options.jsonData.maxConcurrentShardRequests &&
|
|
// message & level fields should be defined
|
|
options.jsonData.logMessageField !== undefined &&
|
|
options.jsonData.logLevelField !== undefined
|
|
);
|
|
};
|