Skip to content

Commit

Permalink
added docs for new Taskmanager plugin API
Browse files Browse the repository at this point in the history
  • Loading branch information
gmmorris committed Jan 8, 2020
1 parent c8ec059 commit bb2789d
Show file tree
Hide file tree
Showing 3 changed files with 229 additions and 136 deletions.
28 changes: 4 additions & 24 deletions x-pack/legacy/plugins/task_manager/server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,13 @@ import { Legacy } from 'kibana';
import mappings from './mappings.json';
import { migrations } from './migrations';
import { TaskManagerSetupContract } from '../../../../plugins/task_manager/server';
import { LegacyTaskManagerApi } from './legacy';

import { createLegacyApi } from './legacy';
export { LegacyTaskManagerApi, getTaskManagerSetup, getTaskManagerStart } from './legacy';

// Once all plugins are migrated to NP, this can be removed
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { TaskManager } from '../../../../plugins/task_manager/server/task_manager';
import { Middleware } from '../../../../plugins/task_manager/server/lib/middleware.js';
import {
TaskDictionary,
TaskInstanceWithDeprecatedFields,
TaskInstanceWithId,
TaskDefinition,
} from '../../../../plugins/task_manager/server/task.js';
import { FetchOpts } from '../../../../plugins/task_manager/server/task_store.js';

const savedObjectSchemas = {
task: {
Expand Down Expand Up @@ -74,24 +66,12 @@ export function taskManager(kibana: any) {
});
return taskManagerPlugin;
});

/*
* We must expose the New Platform Task Manager Plugin via the legacy Api
* as that would be a breaking change - we'll remove this in v8.0.0
* as removing it now would be a breaking change - we'll remove this in v8.0.0
*/
const legacyApi: LegacyTaskManagerApi = {
addMiddleware: (middleware: Middleware) =>
legacyTaskManager.then((tm: TaskManager) => tm.addMiddleware(middleware)),
registerTaskDefinitions: (taskDefinitions: TaskDictionary<TaskDefinition>) =>
legacyTaskManager.then((tm: TaskManager) => tm.registerTaskDefinitions(taskDefinitions)),
fetch: (opts: FetchOpts) => legacyTaskManager.then((tm: TaskManager) => tm.fetch(opts)),
remove: (id: string) => legacyTaskManager.then((tm: TaskManager) => tm.remove(id)),
schedule: (taskInstance: TaskInstanceWithDeprecatedFields, options?: any) =>
legacyTaskManager.then((tm: TaskManager) => tm.schedule(taskInstance, options)),
runNow: (taskId: string) => legacyTaskManager.then((tm: TaskManager) => tm.runNow(taskId)),
ensureScheduled: (taskInstance: TaskInstanceWithId, options?: any) =>
legacyTaskManager.then((tm: TaskManager) => tm.ensureScheduled(taskInstance, options)),
};
server.expose(legacyApi);
server.expose(createLegacyApi(legacyTaskManager));
},
uiExports: {
mappings,
Expand Down
32 changes: 32 additions & 0 deletions x-pack/legacy/plugins/task_manager/server/legacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@ import {
TaskManagerStartContract,
} from '../../../../plugins/task_manager/server';

import { Middleware } from '../../../../plugins/task_manager/server/lib/middleware.js';
import {
TaskDictionary,
TaskInstanceWithDeprecatedFields,
TaskInstanceWithId,
TaskDefinition,
} from '../../../../plugins/task_manager/server/task.js';
import { FetchOpts } from '../../../../plugins/task_manager/server/task_store.js';

// Once all plugins are migrated to NP and we can remove Legacy TaskManager in version 8.0.0,
// this can be removed
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { TaskManager } from '../../../../plugins/task_manager/server/task_manager';

export type LegacyTaskManagerApi = Pick<
TaskManagerSetupContract,
'addMiddleware' | 'registerTaskDefinitions'
Expand All @@ -23,3 +37,21 @@ export function getTaskManagerSetup(server: Server): TaskManagerSetupContract |
export function getTaskManagerStart(server: Server): TaskManagerStartContract | undefined {
return server?.newPlatform?.start?.plugins?.taskManager as TaskManagerStartContract;
}

export function createLegacyApi(legacyTaskManager: Promise<TaskManager>): LegacyTaskManagerApi {
return {
addMiddleware: (middleware: Middleware) => {
legacyTaskManager.then((tm: TaskManager) => tm.addMiddleware(middleware));
},
registerTaskDefinitions: (taskDefinitions: TaskDictionary<TaskDefinition>) => {
legacyTaskManager.then((tm: TaskManager) => tm.registerTaskDefinitions(taskDefinitions));
},
fetch: (opts: FetchOpts) => legacyTaskManager.then((tm: TaskManager) => tm.fetch(opts)),
remove: (id: string) => legacyTaskManager.then((tm: TaskManager) => tm.remove(id)),
schedule: (taskInstance: TaskInstanceWithDeprecatedFields, options?: any) =>
legacyTaskManager.then((tm: TaskManager) => tm.schedule(taskInstance, options)),
runNow: (taskId: string) => legacyTaskManager.then((tm: TaskManager) => tm.runNow(taskId)),
ensureScheduled: (taskInstance: TaskInstanceWithId, options?: any) =>
legacyTaskManager.then((tm: TaskManager) => tm.ensureScheduled(taskInstance, options)),
};
}
Loading

0 comments on commit bb2789d

Please sign in to comment.