mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[Canvas] Migrate usage collector to NP plugin (#53303)
* Move canvas usage collector to NP plugin * Removing old usage collector fom legacy Canvas plugin * Adding types placeholder Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
parent
fdd87e024f
commit
6765def84d
11 changed files with 41 additions and 17 deletions
|
@ -7,7 +7,6 @@
|
|||
import { CoreSetup, PluginsSetup } from './shim';
|
||||
import { routes } from './routes';
|
||||
import { functions } from '../canvas_plugin_src/functions/server';
|
||||
import { registerCanvasUsageCollector } from './usage';
|
||||
import { loadSampleData } from './sample_data';
|
||||
|
||||
export class Plugin {
|
||||
|
@ -61,7 +60,6 @@ export class Plugin {
|
|||
},
|
||||
});
|
||||
|
||||
registerCanvasUsageCollector(plugins.usageCollection, core);
|
||||
loadSampleData(
|
||||
plugins.home.sampleData.addSavedObjectsToSampleDataset,
|
||||
plugins.home.sampleData.addAppLinksToSampleDataset
|
||||
|
|
|
@ -5,6 +5,6 @@
|
|||
"configPath": ["xpack", "canvas"],
|
||||
"server": true,
|
||||
"ui": false,
|
||||
"requiredPlugins": []
|
||||
"requiredPlugins": [],
|
||||
"optionalPlugins": ["usageCollection"]
|
||||
}
|
||||
|
|
@ -6,12 +6,11 @@
|
|||
|
||||
import { CallCluster } from 'src/legacy/core_plugins/elasticsearch';
|
||||
import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
|
||||
import { CoreSetup } from '../shim';
|
||||
// @ts-ignore missing local declaration
|
||||
import { CANVAS_USAGE_TYPE } from '../../common/lib/constants';
|
||||
import { CANVAS_USAGE_TYPE } from '../../../../legacy/plugins/canvas/common/lib/constants';
|
||||
import { TelemetryCollector } from '../../types';
|
||||
|
||||
import { workpadCollector } from './workpad_collector';
|
||||
import { customElementCollector } from './custom_element_collector';
|
||||
import { TelemetryCollector } from '../../types';
|
||||
|
||||
const collectors: TelemetryCollector[] = [workpadCollector, customElementCollector];
|
||||
|
||||
|
@ -24,10 +23,13 @@ const collectors: TelemetryCollector[] = [workpadCollector, customElementCollect
|
|||
A usage collector function returns an object derived from current data in the ES Cluster.
|
||||
*/
|
||||
export function registerCanvasUsageCollector(
|
||||
usageCollection: UsageCollectionSetup,
|
||||
core: CoreSetup
|
||||
usageCollection: UsageCollectionSetup | undefined,
|
||||
kibanaIndex: string
|
||||
) {
|
||||
const kibanaIndex = core.getServerConfig().get<string>('kibana.index');
|
||||
if (!usageCollection) {
|
||||
return;
|
||||
}
|
||||
|
||||
const canvasCollector = usageCollection.makeUsageCollector({
|
||||
type: CANVAS_USAGE_TYPE,
|
||||
isReady: () => true,
|
|
@ -8,8 +8,12 @@ import { SearchParams } from 'elasticsearch';
|
|||
import { get } from 'lodash';
|
||||
import { fromExpression } from '@kbn/interpreter/common';
|
||||
import { collectFns } from './collector_helpers';
|
||||
import { TelemetryCollector } from '../../types';
|
||||
import { ExpressionAST, TelemetryCustomElement, TelemetryCustomElementDocument } from '../../types';
|
||||
import {
|
||||
ExpressionAST,
|
||||
TelemetryCollector,
|
||||
TelemetryCustomElement,
|
||||
TelemetryCustomElementDocument,
|
||||
} from '../../types';
|
||||
|
||||
const CUSTOM_ELEMENT_TYPE = 'canvas-element';
|
||||
interface CustomElementSearch {
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import clonedeep from 'lodash.clonedeep';
|
||||
import { summarizeWorkpads } from './workpad_collector';
|
||||
import { workpads } from '../../__tests__/fixtures/workpads';
|
||||
import { workpads } from '../../../../legacy/plugins/canvas/__tests__/fixtures/workpads';
|
||||
|
||||
describe('usage collector handle es response data', () => {
|
||||
it('should summarize workpads, pages, and elements', () => {
|
|
@ -7,7 +7,7 @@
|
|||
import { SearchParams } from 'elasticsearch';
|
||||
import { sum as arraySum, min as arrayMin, max as arrayMax, get } from 'lodash';
|
||||
import { fromExpression } from '@kbn/interpreter/common';
|
||||
import { CANVAS_TYPE } from '../../common/lib/constants';
|
||||
import { CANVAS_TYPE } from '../../../../legacy/plugins/canvas/common/lib/constants';
|
||||
import { collectFns } from './collector_helpers';
|
||||
import { ExpressionAST, TelemetryCollector, CanvasWorkpad } from '../../types';
|
||||
|
|
@ -4,19 +4,32 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { first } from 'rxjs/operators';
|
||||
import { CoreSetup, PluginInitializerContext, Plugin, Logger } from 'src/core/server';
|
||||
import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
|
||||
import { initRoutes } from './routes';
|
||||
import { registerCanvasUsageCollector } from './collectors';
|
||||
|
||||
interface PluginsSetup {
|
||||
usageCollection?: UsageCollectionSetup;
|
||||
}
|
||||
|
||||
export class CanvasPlugin implements Plugin {
|
||||
private readonly logger: Logger;
|
||||
constructor(initializerContext: PluginInitializerContext) {
|
||||
constructor(public readonly initializerContext: PluginInitializerContext) {
|
||||
this.logger = initializerContext.logger.get();
|
||||
}
|
||||
|
||||
public setup(coreSetup: CoreSetup): void {
|
||||
public async setup(coreSetup: CoreSetup, plugins: PluginsSetup) {
|
||||
const canvasRouter = coreSetup.http.createRouter();
|
||||
|
||||
initRoutes({ router: canvasRouter, logger: this.logger });
|
||||
|
||||
// we need the kibana index provided by global config for the Canvas usage collector
|
||||
const globalConfig = await this.initializerContext.config.legacy.globalConfig$
|
||||
.pipe(first())
|
||||
.toPromise();
|
||||
registerCanvasUsageCollector(plugins.usageCollection, globalConfig.kibana.index);
|
||||
}
|
||||
|
||||
public start() {}
|
||||
|
|
7
x-pack/plugins/canvas/types/index.ts
Normal file
7
x-pack/plugins/canvas/types/index.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
export * from '../../../legacy/plugins/canvas/types';
|
Loading…
Add table
Add a link
Reference in a new issue