Scaffolder: Set router scheduler param
Signed-off-by: OscarDHdz <v-ohernandez@expediagroup.com>
This commit is contained in:
@@ -33,5 +33,6 @@ export default async function createPlugin(
|
||||
catalogClient: catalogClient,
|
||||
reader: env.reader,
|
||||
identity: env.identity,
|
||||
scheduler: env.scheduler,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import { Logger } from 'winston';
|
||||
import { Observable } from '@backstage/types';
|
||||
import { Octokit } from 'octokit';
|
||||
import { PluginDatabaseManager } from '@backstage/backend-common';
|
||||
import { PluginTaskScheduler } from '@backstage/backend-tasks';
|
||||
import { Schema } from 'jsonschema';
|
||||
import { ScmIntegrationRegistry } from '@backstage/integration';
|
||||
import { ScmIntegrations } from '@backstage/integration';
|
||||
@@ -543,16 +544,18 @@ export interface RouterOptions {
|
||||
// (undocumented)
|
||||
database: PluginDatabaseManager;
|
||||
// (undocumented)
|
||||
databaseTaskStore?: DatabaseTaskStore;
|
||||
// (undocumented)
|
||||
identity?: IdentityApi;
|
||||
// (undocumented)
|
||||
logger: Logger;
|
||||
// (undocumented)
|
||||
reader: UrlReader;
|
||||
// (undocumented)
|
||||
scheduler?: PluginTaskScheduler;
|
||||
// (undocumented)
|
||||
taskBroker?: TaskBroker;
|
||||
// (undocumented)
|
||||
taskStore?: DatabaseTaskStore;
|
||||
// (undocumented)
|
||||
taskWorkers?: number;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,16 +27,6 @@ import express from 'express';
|
||||
import request from 'supertest';
|
||||
import ObservableImpl from 'zen-observable';
|
||||
|
||||
jest.mock('@backstage/backend-tasks', () => ({
|
||||
TaskScheduler: {
|
||||
fromConfig: () => ({
|
||||
forPlugin: () => ({
|
||||
scheduleTask: jest.fn(),
|
||||
}),
|
||||
}),
|
||||
},
|
||||
}));
|
||||
|
||||
/**
|
||||
* TODO: The following should import directly from the router file.
|
||||
* Due to a circular dependency between this plugin and the
|
||||
@@ -161,7 +151,7 @@ describe('createRouter', () => {
|
||||
database: createDatabase(),
|
||||
catalogClient,
|
||||
reader: mockUrlReader,
|
||||
databaseTaskStore,
|
||||
taskStore: databaseTaskStore,
|
||||
taskBroker,
|
||||
});
|
||||
app = express().use(router);
|
||||
@@ -570,9 +560,11 @@ describe('createRouter', () => {
|
||||
expect(responseDataFn).toHaveBeenCalledTimes(2);
|
||||
expect(responseDataFn).toHaveBeenCalledWith(`event: log
|
||||
data: {"id":0,"taskId":"a-random-id","type":"log","createdAt":"","body":{"message":"My log message"}}
|
||||
|
||||
`);
|
||||
expect(responseDataFn).toHaveBeenCalledWith(`event: completion
|
||||
data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{"message":"Finished!"}}
|
||||
|
||||
`);
|
||||
|
||||
expect(taskBroker.event$).toHaveBeenCalledTimes(1);
|
||||
@@ -759,7 +751,7 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
|
||||
database: createDatabase(),
|
||||
catalogClient,
|
||||
reader: mockUrlReader,
|
||||
databaseTaskStore,
|
||||
taskStore: databaseTaskStore,
|
||||
taskBroker,
|
||||
identity: { getIdentity },
|
||||
});
|
||||
@@ -1149,9 +1141,11 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
|
||||
expect(responseDataFn).toHaveBeenCalledTimes(2);
|
||||
expect(responseDataFn).toHaveBeenCalledWith(`event: log
|
||||
data: {"id":0,"taskId":"a-random-id","type":"log","createdAt":"","body":{"message":"My log message"}}
|
||||
|
||||
`);
|
||||
expect(responseDataFn).toHaveBeenCalledWith(`event: completion
|
||||
data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{"message":"Finished!"}}
|
||||
|
||||
`);
|
||||
|
||||
expect(taskBroker.event$).toHaveBeenCalledTimes(1);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import { PluginDatabaseManager, UrlReader } from '@backstage/backend-common';
|
||||
import { TaskScheduler } from '@backstage/backend-tasks';
|
||||
import { PluginTaskScheduler } from '@backstage/backend-tasks';
|
||||
import { CatalogApi } from '@backstage/catalog-client';
|
||||
import {
|
||||
Entity,
|
||||
@@ -64,11 +64,12 @@ export interface RouterOptions {
|
||||
reader: UrlReader;
|
||||
database: PluginDatabaseManager;
|
||||
catalogClient: CatalogApi;
|
||||
scheduler?: PluginTaskScheduler;
|
||||
|
||||
actions?: TemplateAction<any>[];
|
||||
taskWorkers?: number;
|
||||
taskBroker?: TaskBroker;
|
||||
databaseTaskStore?: DatabaseTaskStore;
|
||||
taskStore?: DatabaseTaskStore;
|
||||
additionalTemplateFilters?: Record<string, TemplateFilter>;
|
||||
identity?: IdentityApi;
|
||||
}
|
||||
@@ -158,6 +159,7 @@ export async function createRouter(
|
||||
catalogClient,
|
||||
actions,
|
||||
taskWorkers,
|
||||
scheduler,
|
||||
additionalTemplateFilters,
|
||||
} = options;
|
||||
|
||||
@@ -170,10 +172,10 @@ export async function createRouter(
|
||||
const integrations = ScmIntegrations.fromConfig(config);
|
||||
|
||||
let databaseTaskStore: DatabaseTaskStore;
|
||||
if (!options.databaseTaskStore) {
|
||||
if (!options.taskStore) {
|
||||
databaseTaskStore = await DatabaseTaskStore.create({ database });
|
||||
} else {
|
||||
databaseTaskStore = options.databaseTaskStore;
|
||||
databaseTaskStore = options.taskStore;
|
||||
}
|
||||
|
||||
let taskBroker: TaskBroker;
|
||||
@@ -211,8 +213,7 @@ export async function createRouter(
|
||||
actionsToRegister.forEach(action => actionRegistry.register(action));
|
||||
workers.forEach(worker => worker.start());
|
||||
|
||||
if (databaseTaskStore.shutdownTask) {
|
||||
const scheduler = TaskScheduler.fromConfig(config).forPlugin('scaffolder');
|
||||
if (scheduler && databaseTaskStore.listStaleTasks) {
|
||||
await scheduler.scheduleTask({
|
||||
id: 'close_stale_tasks',
|
||||
frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration
|
||||
@@ -223,8 +224,8 @@ export async function createRouter(
|
||||
});
|
||||
|
||||
for (const task of tasks) {
|
||||
logger.info(`Successfully closed stale task ${task.taskId}`);
|
||||
await databaseTaskStore.shutdownTask(task);
|
||||
logger.info(`Successfully closed stale task ${task.taskId}`);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user