mirror of
https://github.com/elastic/kibana.git
synced 2025-04-25 02:09:32 -04:00
50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License;
|
|
* you may not use this file except in compliance with the Elastic License.
|
|
*/
|
|
|
|
import { get } from 'lodash';
|
|
import moment from 'moment';
|
|
import { checkParam } from '../error_missing_required';
|
|
import { ElasticsearchMetric } from '../metrics';
|
|
import { createQuery } from '../create_query';
|
|
|
|
export function handleResponse(response) {
|
|
const isEnabled = get(response, 'hits.hits[0]._source.stack_stats.xpack.ccr.enabled');
|
|
const isAvailable = get(response, 'hits.hits[0]._source.stack_stats.xpack.ccr.available');
|
|
return isEnabled && isAvailable;
|
|
}
|
|
|
|
export async function checkCcrEnabled(req, esIndexPattern) {
|
|
checkParam(esIndexPattern, 'esIndexPattern in getNodes');
|
|
|
|
const start = moment.utc(req.payload.timeRange.min).valueOf();
|
|
const end = moment.utc(req.payload.timeRange.max).valueOf();
|
|
|
|
const clusterUuid = req.params.clusterUuid;
|
|
const metricFields = ElasticsearchMetric.getMetricFields();
|
|
|
|
const params = {
|
|
index: esIndexPattern,
|
|
size: 1,
|
|
ignoreUnavailable: true,
|
|
body: {
|
|
query: createQuery({
|
|
type: 'cluster_stats',
|
|
start,
|
|
end,
|
|
clusterUuid,
|
|
metric: metricFields
|
|
}),
|
|
sort: [ { timestamp: { order: 'desc' } } ]
|
|
},
|
|
filterPath: [
|
|
'hits.hits._source.stack_stats.xpack.ccr',
|
|
]
|
|
};
|
|
|
|
const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring');
|
|
const response = await callWithRequest(req, 'search', params);
|
|
return handleResponse(response);
|
|
}
|