kibana/x-pack/plugins/monitoring/server/lib/elasticsearch/ccr.js
2019-05-28 12:48:32 -04:00

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);
}