Skip to content

Commit

Permalink
x-pack/oss_telemetry: use Elasticsearch from CoreStart
Browse files Browse the repository at this point in the history
  • Loading branch information
rudolf committed Mar 11, 2020
1 parent b0fbc85 commit 2260086
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
8 changes: 5 additions & 3 deletions x-pack/plugins/oss_telemetry/server/lib/tasks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,28 @@ import {
export function registerTasks({
taskManager,
logger,
elasticsearch,
getStartServices,
config,
}: {
taskManager?: TaskManagerSetupContract;
logger: Logger;
elasticsearch: CoreSetup['elasticsearch'];
getStartServices: CoreSetup['getStartServices'];
config: Observable<{ kibana: { index: string } }>;
}) {
if (!taskManager) {
logger.debug('Task manager is not available');
return;
}

const esClientPromise = getStartServices().then(([{ elasticsearch }]) => elasticsearch.client);

taskManager.registerTaskDefinitions({
[VIS_TELEMETRY_TASK]: {
title: 'X-Pack telemetry calculator for Visualizations',
type: VIS_TELEMETRY_TASK,
createTaskRunner({ taskInstance }: { taskInstance: TaskInstance }) {
return {
run: visualizationsTaskRunner(taskInstance, config, elasticsearch),
run: visualizationsTaskRunner(taskInstance, config, esClientPromise),
};
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import { Observable } from 'rxjs';
import _, { countBy, groupBy, mapValues } from 'lodash';
import { APICaller, CoreSetup } from 'kibana/server';
import { APICaller, CoreSetup, CoreStart } from 'kibana/server';
import { getNextMidnight } from '../../get_next_midnight';
import { TaskInstance } from '../../../../../task_manager/server';
import { ESSearchHit } from '../../../../../apm/typings/elasticsearch';
Expand Down Expand Up @@ -73,17 +73,15 @@ async function getStats(callCluster: APICaller, index: string) {
export function visualizationsTaskRunner(
taskInstance: TaskInstance,
config: Observable<{ kibana: { index: string } }>,
es: CoreSetup['elasticsearch']
esClientPromise: Promise<CoreStart['elasticsearch']['client']>
) {
const { callAsInternalUser: callCluster } = es.createClient('data');

return async () => {
let stats;
let error;

try {
const index = (await config.toPromise()).kibana.index;
stats = await getStats(callCluster, index);
stats = await getStats((await esClientPromise).callAsInternalUser, index);
} catch (err) {
if (err.constructor === Error) {
error = err.message;
Expand Down
13 changes: 8 additions & 5 deletions x-pack/plugins/oss_telemetry/server/test_utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
* you may not use this file except in compliance with the Elastic License.
*/

import { APICaller, CoreSetup } from 'kibana/server';
import { APICaller, CoreSetup, CoreStart } from 'kibana/server';

import { of } from 'rxjs';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { elasticsearchServiceMock } from 'src/core/server/mocks';
import {
ConcreteTaskInstance,
TaskStatus,
Expand Down Expand Up @@ -43,10 +45,11 @@ const defaultMockSavedObjects = [

const defaultMockTaskDocs = [getMockTaskInstance()];

export const getMockEs = (mockCallWithInternal: APICaller = getMockCallWithInternal()) =>
(({
createClient: () => ({ callAsInternalUser: mockCallWithInternal }),
} as unknown) as CoreSetup['elasticsearch']);
export const getMockEs = async (mockCallWithInternal: APICaller = getMockCallWithInternal()) => {
const client = elasticsearchServiceMock.createClusterClient();
(client.callAsInternalUser as any) = mockCallWithInternal;
return client;
};

export const getMockCallWithInternal = (hits: unknown[] = defaultMockSavedObjects): APICaller => {
return ((() => {
Expand Down

0 comments on commit 2260086

Please sign in to comment.