Skip to content

Commit 4d322f1

Browse files
authored
feat(orchestrator): verify availability and cache workflow definition IDs (janus-idp#1309)
* feat(orchestrator): verify availability and cache workflow definition IDs * Remove unnecessary line * Minor fix after conflict resolution * Minor improvements * Add tests for OrchestratorService * Cached data should be considerd for listing queries * Remove definition from cache that does not exist on Data Index anymore * Update the API sha * Fix for empty cache corner case
1 parent f4d5e70 commit 4d322f1

26 files changed

+1784
-889
lines changed

plugins/orchestrator-backend/dev/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { createServiceBuilder, UrlReader } from '@backstage/backend-common';
2+
import { PluginTaskScheduler } from '@backstage/backend-tasks';
23
import { CatalogApi } from '@backstage/catalog-client';
34
import { Config } from '@backstage/config';
45
import { DiscoveryApi } from '@backstage/core-plugin-api';
@@ -19,6 +20,7 @@ export interface ServerOptions {
1920
discovery: DiscoveryApi;
2021
catalogApi: CatalogApi;
2122
urlReader: UrlReader;
23+
scheduler: PluginTaskScheduler;
2224
}
2325

2426
export async function startStandaloneServer(
@@ -32,6 +34,7 @@ export async function startStandaloneServer(
3234
discovery: options.discovery,
3335
catalogApi: options.catalogApi,
3436
urlReader: options.urlReader,
37+
scheduler: options.scheduler,
3538
});
3639

3740
let service = createServiceBuilder(module)

plugins/orchestrator-backend/src/OrchestratorPlugin.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const orchestratorPlugin = createBackendPlugin({
1717
discovery: coreServices.discovery,
1818
httpRouter: coreServices.httpRouter,
1919
urlReader: coreServices.urlReader,
20+
scheduler: coreServices.scheduler,
2021
catalogApi: catalogServiceRef,
2122
},
2223
async init({
@@ -26,6 +27,7 @@ export const orchestratorPlugin = createBackendPlugin({
2627
httpRouter,
2728
catalogApi,
2829
urlReader,
30+
scheduler,
2931
}) {
3032
const log = loggerToWinstonLogger(logger);
3133
const router = await createRouter({
@@ -34,6 +36,7 @@ export const orchestratorPlugin = createBackendPlugin({
3436
discovery: discovery,
3537
catalogApi: catalogApi,
3638
urlReader: urlReader,
39+
scheduler: scheduler,
3740
});
3841
httpRouter.use(router);
3942
},
Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,46 @@
11
import { UrlReader } from '@backstage/backend-common';
2+
import { PluginTaskScheduler } from '@backstage/backend-tasks';
23
import { CatalogApi } from '@backstage/catalog-client';
34
import { Config } from '@backstage/config';
45
import { DiscoveryApi } from '@backstage/core-plugin-api';
56

67
import express from 'express';
78
import { Logger } from 'winston';
89

9-
import { DataIndexService } from '../service/DataIndexService';
10+
import { DevModeService } from '../service/DevModeService';
1011
import { createBackendRouter } from '../service/router';
11-
import { SonataFlowService } from '../service/SonataFlowService';
1212

1313
export interface RouterArgs {
1414
config: Config;
1515
logger: Logger;
1616
discovery: DiscoveryApi;
1717
catalogApi: CatalogApi;
1818
urlReader: UrlReader;
19+
scheduler: PluginTaskScheduler;
1920
}
2021

2122
export async function createRouter(args: RouterArgs): Promise<express.Router> {
22-
const dataIndexService = initDataIndexService(args.logger, args.config);
23-
const sonataFlowService = new SonataFlowService(
24-
args.config,
25-
dataIndexService,
26-
args.logger,
27-
);
28-
29-
const router = await createBackendRouter({
23+
const autoStartDevMode =
24+
args.config.getOptionalBoolean(
25+
'orchestrator.sonataFlowService.autoStart',
26+
) ?? false;
27+
28+
if (autoStartDevMode) {
29+
const devModeService = new DevModeService(args.config, args.logger);
30+
31+
const isSonataFlowUp = await devModeService.launchDevMode();
32+
33+
if (!isSonataFlowUp) {
34+
args.logger.error('SonataFlow is not up. Check your configuration.');
35+
}
36+
}
37+
38+
return await createBackendRouter({
3039
config: args.config,
3140
logger: args.logger,
3241
discovery: args.discovery,
3342
catalogApi: args.catalogApi,
3443
urlReader: args.urlReader,
35-
sonataFlowService,
36-
dataIndexService,
44+
scheduler: args.scheduler,
3745
});
38-
39-
const isSonataFlowUp = await sonataFlowService.connect();
40-
41-
if (!isSonataFlowUp) {
42-
args.logger.error('SonataFlow is not up. Check your configuration.');
43-
}
44-
45-
return router;
46-
}
47-
48-
function initDataIndexService(
49-
logger: Logger,
50-
config: Config,
51-
): DataIndexService {
52-
const dataIndexUrl = config.getString('orchestrator.dataIndexService.url');
53-
return new DataIndexService(dataIndexUrl, logger);
5446
}

plugins/orchestrator-backend/src/run.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
loadBackendConfig,
55
UrlReaders,
66
} from '@backstage/backend-common';
7+
import { TaskScheduler } from '@backstage/backend-tasks';
78
import { CatalogClient } from '@backstage/catalog-client';
89
import { DefaultEventBroker } from '@backstage/plugin-events-backend';
910

@@ -17,6 +18,7 @@ const logger = getRootLogger();
1718
const config = await loadBackendConfig({ logger, argv: process.argv });
1819
const eventBroker = new DefaultEventBroker(logger);
1920
const discovery = HostDiscovery.fromConfig(config);
21+
const scheduler = TaskScheduler.fromConfig(config).forPlugin('orchestrator');
2022
const catalogApi = new CatalogClient({
2123
discoveryApi: HostDiscovery.fromConfig(config),
2224
});
@@ -31,6 +33,7 @@ startStandaloneServer({
3133
discovery,
3234
catalogApi,
3335
urlReader,
36+
scheduler,
3437
}).catch(err => {
3538
logger.error(err);
3639
process.exit(1);

0 commit comments

Comments
 (0)