@webda/async 3.9.3 → 4.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +92 -8
  2. package/lib/asyncaction.model.d.ts +207 -0
  3. package/lib/asyncaction.model.d.ts.map +1 -0
  4. package/lib/asyncaction.model.js +269 -0
  5. package/lib/asyncaction.model.js.map +1 -0
  6. package/lib/index.d.ts +7 -5
  7. package/lib/index.d.ts.map +1 -0
  8. package/lib/index.js +6 -5
  9. package/lib/index.js.map +1 -1
  10. package/lib/services/asyncevents.service.d.ts +154 -0
  11. package/lib/services/asyncevents.service.d.ts.map +1 -0
  12. package/lib/services/asyncevents.service.js +219 -0
  13. package/lib/services/asyncevents.service.js.map +1 -0
  14. package/lib/services/{asyncjobservice.d.ts → asyncjobservice.service.d.ts} +81 -87
  15. package/lib/services/asyncjobservice.service.d.ts.map +1 -0
  16. package/lib/services/asyncjobservice.service.js +596 -0
  17. package/lib/services/asyncjobservice.service.js.map +1 -0
  18. package/lib/services/{localrunner.d.ts → localrunner.service.d.ts} +24 -9
  19. package/lib/services/localrunner.service.d.ts.map +1 -0
  20. package/lib/services/localrunner.service.js +87 -0
  21. package/lib/services/localrunner.service.js.map +1 -0
  22. package/lib/services/{runner.d.ts → runner.service.d.ts} +17 -11
  23. package/lib/services/runner.service.d.ts.map +1 -0
  24. package/lib/services/{runner.js → runner.service.js} +16 -13
  25. package/lib/services/runner.service.js.map +1 -0
  26. package/lib/services/{servicerunner.d.ts → servicerunner.service.d.ts} +39 -37
  27. package/lib/services/servicerunner.service.d.ts.map +1 -0
  28. package/lib/services/servicerunner.service.js +131 -0
  29. package/lib/services/servicerunner.service.js.map +1 -0
  30. package/package.json +35 -39
  31. package/webda.module.json +1910 -868
  32. package/lib/models.d.ts +0 -169
  33. package/lib/models.js +0 -177
  34. package/lib/models.js.map +0 -1
  35. package/lib/services/asyncjobservice.js +0 -521
  36. package/lib/services/asyncjobservice.js.map +0 -1
  37. package/lib/services/localrunner.js +0 -70
  38. package/lib/services/localrunner.js.map +0 -1
  39. package/lib/services/runner.js.map +0 -1
  40. package/lib/services/servicerunner.js +0 -152
  41. package/lib/services/servicerunner.js.map +0 -1
@@ -1,521 +0,0 @@
1
- import { CancelableLoopPromise, CancelablePromise, Core, CronService, FileUtils, JSONUtils, OperationError, Service, ServiceParameters, SimpleOperationContext, WebdaError } from "@webda/core";
2
- import axios from "axios";
3
- import * as crypto from "crypto";
4
- import { schedule as crontabSchedule } from "node-cron";
5
- import { AsyncOperationAction, AsyncWebdaAction } from "../models.js";
6
- import { Runner } from "./runner.js";
7
- import ServiceRunner, { ActionMemoryLogger } from "./servicerunner.js";
8
- /**
9
- * @inheritdoc
10
- */
11
- export class AsyncJobServiceParameters extends ServiceParameters {
12
- constructor(params) {
13
- super(params);
14
- this.url ?? (this.url = "/async/jobs");
15
- this.queue ?? (this.queue = "AsyncActionsQueue");
16
- this.runners ?? (this.runners = []);
17
- this.schedulerResolution ?? (this.schedulerResolution = 60000);
18
- this.onlyHttpHook ?? (this.onlyHttpHook = false);
19
- this.includeCron ?? (this.includeCron = true);
20
- this.logsLimit ?? (this.logsLimit = 500);
21
- this.asyncActionModel ?? (this.asyncActionModel = "Webda/AsyncWebdaAction");
22
- this.asyncOperationModel ?? (this.asyncOperationModel = "Webda/AsyncOperationAction");
23
- }
24
- }
25
- /**
26
- * AsyncService allows you to launch jobs and report status
27
- *
28
- * @WebdaModda
29
- */
30
- class AsyncJobService extends Service {
31
- constructor() {
32
- super(...arguments);
33
- /**
34
- * Validator of sessions
35
- */
36
- this.operationsQueries = {};
37
- }
38
- /**
39
- * @inheritdoc
40
- */
41
- loadParameters(params) {
42
- return new AsyncJobServiceParameters(params);
43
- }
44
- /**
45
- * @inheritdoc
46
- */
47
- resolve() {
48
- super.resolve();
49
- this.model = this.getWebda().getModel(this.parameters.asyncActionModel);
50
- this.queue = this.getService(this.parameters.queue);
51
- if (!this.queue && !this.parameters.localLaunch) {
52
- throw new Error(`AsyncService requires a valid queue. '${this.parameters.queue}' is invalid`);
53
- }
54
- // Get all runners
55
- this.runners = this.parameters.runners
56
- .map(n => {
57
- const res = this.getService(n);
58
- if (res === undefined) {
59
- this.log("WARN", `Runner ${n} does not exist`);
60
- }
61
- return res;
62
- })
63
- .filter(r => r !== undefined);
64
- // Add route for operations launch
65
- if (this.parameters.asyncOperationDefinition) {
66
- this.log("INFO", "Loading operations", this.parameters.asyncOperationDefinition);
67
- this.addRoute(`${this.parameters.url}{?full}`, ["GET"], this.listOperations);
68
- this.addRoute(`${this.parameters.url}/{operationId}{?schedule}`, ["PUT"], this.launchOperation);
69
- this.registerOperations(FileUtils.load(this.parameters.asyncOperationDefinition));
70
- }
71
- // Load operations model
72
- this.operationModel = this.getWebda().getModel(this.parameters.asyncOperationModel);
73
- // This is internal job reporting so no need to document the api
74
- this.addRoute(`${this.parameters.url}/status`, ["POST"], this.statusHook, { hidden: true });
75
- // Add upload/download route if needed
76
- if (this.parameters.binaryStore) {
77
- this.binaryStore = this.getService(this.parameters.binaryStore);
78
- // Call directly Webda addRoute as we are setting a route for another service in fact
79
- this.getWebda().addRoute(`${this.parameters.url}/download/{store}/{uuid}/{property}/{index}`, {
80
- _method: ctx => this.binaryStore.httpGet(ctx),
81
- executor: this.parameters.binaryStore,
82
- openapi: { hidden: true },
83
- methods: ["GET"]
84
- });
85
- this.getWebda().addRoute(`${this.parameters.url}/upload/{store}/{uuid}/{property}`, {
86
- _method: ctx => this.binaryStore.httpChallenge(ctx),
87
- executor: this.parameters.binaryStore,
88
- openapi: { hidden: true },
89
- methods: ["PUT"]
90
- });
91
- }
92
- this.getWebda().registerRequestFilter(this);
93
- return this;
94
- }
95
- /**
96
- * Register new operations
97
- * @param operations
98
- */
99
- registerOperations(operations) {
100
- this.operations ?? (this.operations = {
101
- application: operations.application || { name: "Unknown", version: "0.0.0" },
102
- operations: {},
103
- schemas: {}
104
- });
105
- // Register all schemas
106
- Object.keys(operations?.schemas || {})
107
- .filter(key => !this.getWebda().getApplication().hasSchema(key))
108
- .forEach(key => {
109
- this.getWebda().getApplication().registerSchema(key, operations.schemas[key]);
110
- this.operations.schemas[key] = operations.schemas[key];
111
- });
112
- // Register all operations now
113
- Object.keys(operations?.operations || {}).forEach(key => {
114
- this.getWebda().registerOperation(key, {
115
- ...operations.operations[key],
116
- method: "callOperation",
117
- service: this.getName()
118
- });
119
- this.operations.operations[key] = operations.operations[key];
120
- });
121
- }
122
- /**
123
- * Allow job status report url
124
- */
125
- async checkRequest(context) {
126
- const url = context.getHttpContext().getRelativeUri();
127
- // Only for status endpoint - operations endpoint should still be authorized by something else
128
- if (url === `${this.parameters.url}/status`) {
129
- // Allow status url to be called without other mechanism
130
- return true;
131
- }
132
- return false;
133
- }
134
- /**
135
- * Status hook for job report
136
- *
137
- * Only updates specific fields: status, errorMessage, statusDetails, results, logs (appending)
138
- */
139
- async statusHook(context) {
140
- if (!context.getHttpContext().getUniqueHeader("X-Job-Id")) {
141
- throw new WebdaError.NotFound("X-Job-Id header required");
142
- }
143
- const action = await this.model.ref(context.getHttpContext().getUniqueHeader("X-Job-Id")).get();
144
- if (!action) {
145
- throw new WebdaError.NotFound(`Unknown Job Id '${context.getHttpContext().getUniqueHeader("X-Job-Id")}'`);
146
- }
147
- await action.checkAct(context, "status");
148
- await action.statusAction(context);
149
- }
150
- /**
151
- * Worker
152
- *
153
- * This will launch actions based on defined runners
154
- */
155
- worker() {
156
- if (this.runners.length === 0) {
157
- throw new Error(`AsyncJobService.worker requires runners`);
158
- }
159
- let p = [this.queue.consume(this.handleEvent.bind(this))];
160
- if (this.parameters.includeSchedulerInWorker) {
161
- p.push(this.scheduler());
162
- }
163
- // Return a cancelable promise for both worker and scheduler
164
- return new CancelablePromise((resolve, reject) => {
165
- Promise.all(p).then(() => resolve(), reject);
166
- }, async () => {
167
- this.log("INFO", "Worker stopped");
168
- await Promise.all(p.map(pi => (pi.cancel ? pi.cancel() : "")));
169
- });
170
- }
171
- /**
172
- * Handle one event from the queue and launch the job
173
- * @param event
174
- */
175
- async handleEvent(event) {
176
- let selectedRunner;
177
- // Take first to acknowledge the job
178
- for (let runner of this.runners) {
179
- if (runner.handleType(event.type)) {
180
- selectedRunner = runner;
181
- break;
182
- }
183
- }
184
- // Fallback if needed
185
- if (selectedRunner === undefined && this.parameters.fallbackOnFirst) {
186
- selectedRunner = this.runners[0];
187
- }
188
- if (selectedRunner === undefined) {
189
- this.log("ERROR", `Cannot find a runner for action ${event.uuid}`);
190
- await this.model.ref(event.uuid).patch({ status: "ERROR", errorMessage: `No runner found for the job` });
191
- return;
192
- }
193
- this.log("INFO", `Starting action ${event.uuid}`);
194
- await this.model.ref(event.uuid).patch({ uuid: event.uuid, status: "STARTING" });
195
- const action = await this.model.ref(event.uuid).get();
196
- const job = await selectedRunner.launchAction(action, this.getJobInfo(action));
197
- await action.patch({ job }, null);
198
- return job.promise || Promise.resolve();
199
- }
200
- /**
201
- * Get the job info
202
- * @param action
203
- * @returns
204
- */
205
- getJobInfo(action) {
206
- return {
207
- JOB_SECRET_KEY: action.__secretKey,
208
- JOB_ID: action.getUuid(),
209
- JOB_HOOK: this.parameters.onlyHttpHook || !action.isInternal()
210
- ? action.getHookUrl() || this.getWebda().getApiUrl(this.parameters.url)
211
- : "store", // How to find the absolute url
212
- JOB_ORCHESTRATOR: this.getName()
213
- };
214
- }
215
- /**
216
- * List available operations through this service
217
- * @param context
218
- */
219
- async listOperations(context) {
220
- let filtered = JSONUtils.duplicate(this.operations);
221
- // Filter operations based on permissions
222
- Object.keys(filtered.operations)
223
- .filter(key => filtered.operations[key].permission && !this.getWebda().checkOperationPermission(context, key))
224
- .forEach(key => delete filtered.operations[key]);
225
- // Remove permission definition
226
- Object.values(filtered.operations)
227
- .filter(def => def.permission)
228
- .forEach(def => delete def.permission);
229
- if (!context.getParameters().full) {
230
- context.write(Object.keys(filtered.operations));
231
- return;
232
- }
233
- const schemas = [];
234
- Object.values(filtered.operations).forEach((operation) => {
235
- if (operation.input) {
236
- schemas.push(operation.input);
237
- }
238
- if (operation.output) {
239
- schemas.push(operation.output);
240
- }
241
- });
242
- // Filter schemas
243
- Object.keys(filtered.schemas)
244
- .filter(key => !schemas.includes(key))
245
- .forEach(key => {
246
- delete filtered.schemas[key];
247
- });
248
- context.write(filtered);
249
- }
250
- /**
251
- * Call an operation for an external system
252
- * @param context
253
- * @returns
254
- */
255
- async callOperation(context) {
256
- return await this.launchAction(new this.operationModel(context.getExtension("operation"), context));
257
- }
258
- /**
259
- * Launch an operation through this service
260
- */
261
- async launchOperation(context) {
262
- const { operationId, schedule } = context.getParameters();
263
- try {
264
- await this.getWebda().checkOperation(context, operationId);
265
- }
266
- catch (err) {
267
- if (err instanceof OperationError) {
268
- if (err.type === "InvalidInput") {
269
- throw new WebdaError.BadRequest("Invalid Input");
270
- }
271
- else if (err.type === "PermissionDenied") {
272
- throw new WebdaError.Forbidden("Permission Denied");
273
- }
274
- else if (err.type === "Unknown") {
275
- throw new WebdaError.NotFound("Operation not found");
276
- }
277
- }
278
- else {
279
- throw err;
280
- }
281
- }
282
- let action;
283
- if (schedule) {
284
- action = await this.scheduleAction(new this.operationModel(operationId, await SimpleOperationContext.fromContext(context)), schedule);
285
- }
286
- else {
287
- action = await this.callOperation((await SimpleOperationContext.fromContext(context)).setExtension("operation", operationId));
288
- }
289
- context.write(action);
290
- }
291
- /**
292
- * Launch the action asynchronously
293
- * @param action
294
- * @returns
295
- */
296
- async launchAction(action) {
297
- action.status = "QUEUED";
298
- action.type = action.constructor.name;
299
- action.__secretKey = this.getWebda().getUuid();
300
- await action.save();
301
- if (this.parameters.localLaunch) {
302
- // Directly call the handler but not wait for its result
303
- this.handleEvent({ uuid: action.getUuid(), __secretKey: action.__secretKey, type: action.type });
304
- }
305
- else {
306
- await this.queue.sendMessage({ uuid: action.getUuid(), __secretKey: action.__secretKey, type: action.type });
307
- }
308
- return action;
309
- }
310
- /**
311
- * Schedule action for later execution
312
- *
313
- * @param action
314
- * @param timestamp
315
- */
316
- async scheduleAction(action, timestamp) {
317
- action.status = "SCHEDULED";
318
- action.type = action.constructor.name;
319
- // Schedule based on the scheduler resolution
320
- action.scheduled = timestamp - (timestamp % this.parameters.schedulerResolution);
321
- await action.save();
322
- return action;
323
- }
324
- /**
325
- * Return headers to request status hook
326
- *
327
- * @param jobInfo
328
- * @returns
329
- */
330
- getHeaders(jobInfo) {
331
- let res = { "X-Job-Id": jobInfo.JOB_ID, "X-Job-Time": Date.now().toString() };
332
- res["X-Job-Hash"] = crypto
333
- .createHmac(AsyncJobService.HMAC_ALGO, jobInfo.JOB_SECRET_KEY)
334
- .update(res["X-Job-Time"])
335
- .digest("hex");
336
- return res;
337
- }
338
- /**
339
- * Post hook to a remote url or use local store to update status
340
- * @param jobInfo
341
- * @param message
342
- * @returns
343
- */
344
- async postHook(jobInfo, message) {
345
- // Http allow to break paradigm between the executor and the orchestrator
346
- if (jobInfo.JOB_HOOK.startsWith("http")) {
347
- const data = (await axios.post(jobInfo.JOB_HOOK, message, {
348
- headers: this.getHeaders(jobInfo)
349
- })).data;
350
- if (data.operationId) {
351
- return new this.operationModel(data.operationId, data.context, data.logLevel);
352
- }
353
- else if (data.service && data.method) {
354
- data.arguments ?? (data.arguments = []);
355
- return new this.model(data.service, data.method, ...data.arguments);
356
- }
357
- throw new Error("Unknown action received from hook");
358
- }
359
- else if (jobInfo.JOB_HOOK === "store") {
360
- // If executor and orchestrator runs within same privilege it simplify the infrastructure
361
- const model = await this.model.ref(jobInfo.JOB_ID).get();
362
- await model.patch(message, null);
363
- return model;
364
- }
365
- }
366
- /**
367
- * Launch a service.method as an AsyncAction
368
- * @param serviceName
369
- * @param method
370
- * @param args
371
- */
372
- async launchAsAsyncAction(serviceName, method, ...args) {
373
- return this.launchAction(new this.model(serviceName, method, ...args));
374
- }
375
- /**
376
- * Execute a service.method as an AsyncAction
377
- *
378
- * Useful for crontab execution
379
- * @param serviceName
380
- * @param method
381
- * @param args
382
- */
383
- async executeAsAsyncAction(serviceName, method, ...args) {
384
- let runner = Object.values(this.getWebda().getServicesOfType(ServiceRunner)).shift();
385
- // Create a temporary one if needed
386
- runner ?? (runner = await new ServiceRunner(this.getWebda(), this.getName() + "_temprunner").resolve().init());
387
- // Save action
388
- const action = await new this.model(serviceName, method, ...args).save();
389
- // Run it
390
- return (await runner.launchAction(action, this.getJobInfo(action))).promise;
391
- }
392
- /**
393
- * Wrap async job and call the job status hook
394
- */
395
- async runAsyncOperationAction(jobInfo) {
396
- // Get it from environment
397
- if (jobInfo === undefined) {
398
- jobInfo = {};
399
- Object.keys(process.env)
400
- .filter(k => k.startsWith("JOB_"))
401
- // @ts-ignore
402
- .forEach((k) => (jobInfo[k] = process.env[k]));
403
- }
404
- // Ensure correct context
405
- if (!jobInfo.JOB_ORCHESTRATOR || !jobInfo.JOB_ID || !jobInfo.JOB_SECRET_KEY || !jobInfo.JOB_HOOK) {
406
- this.log("ERROR", "Cannot run AsyncAction without context");
407
- throw new Error("Cannot run AsyncAction without context");
408
- }
409
- // If we are not the target redirect to the right one
410
- if (jobInfo.JOB_ORCHESTRATOR !== this.getName()) {
411
- this.log("DEBUG", `Passing jobInfo ${JSON.stringify(jobInfo)} to targeted service`);
412
- return this.getService(jobInfo.JOB_ORCHESTRATOR).runAsyncOperationAction(jobInfo);
413
- }
414
- this.log("DEBUG", "Getting action to execute from hook", jobInfo);
415
- let results, logger, errorMessage;
416
- let status = "SUCCESS";
417
- try {
418
- // Get action info by calling the hook
419
- let action = await this.postHook(jobInfo, {
420
- agent: { ...Runner.getAgentInfo(), nodeVersion: process.version },
421
- status: "RUNNING"
422
- });
423
- logger = new ActionMemoryLogger(this.getWebda().getWorkerOutput(), action.logLevel, this.parameters.logsLimit || 5000, async (logs) => {
424
- // Send logs to the hook
425
- if (jobInfo && jobInfo.JOB_HOOK) {
426
- await this.postHook(jobInfo, {
427
- logs
428
- });
429
- }
430
- }, this.parameters.logSaveDelay, this.parameters.logFormat);
431
- if (action instanceof AsyncWebdaAction) {
432
- // Check it contains the right info
433
- if (!action.method || !action.serviceName) {
434
- throw new Error("WebdaAsyncAction must have method and serviceName defined at least");
435
- }
436
- // Call the service[method](...args)
437
- let service = this.getService(action.serviceName);
438
- if (!service) {
439
- throw new Error(`WebdaAsyncAction Service '${action.serviceName}' not found: mismatch app version`);
440
- }
441
- // @ts-ignore
442
- if (!service[action.method]) {
443
- throw new Error(`WebdaAsyncAction Method '${action.method}' not found in service ${action.serviceName}: mismatch app version`);
444
- }
445
- // @ts-ignore
446
- results = await service[action.method](...(action.arguments || []));
447
- }
448
- else if (action instanceof AsyncOperationAction) {
449
- // Call the operation
450
- let ctx = new SimpleOperationContext(this.getWebda());
451
- // Unserialization might not have happened
452
- ctx.setSession(action.context.getSession ? action.context.getSession() : action.context["session"]);
453
- // Unserialization might not have happened
454
- ctx.setInput(Buffer.from(action.context["input"]?.data || []));
455
- // Set the logger in extension
456
- ctx.setExtension("actionLogger", logger);
457
- // Call the operation
458
- this.log("TRACE", `Calling operation ${action.operationId}`);
459
- await this.getWebda().callOperation(ctx, action.operationId);
460
- }
461
- }
462
- catch (err) {
463
- // Job is in error
464
- errorMessage = err?.message;
465
- status = "ERROR";
466
- }
467
- logger?.close(true);
468
- // Update status
469
- await this.postHook(jobInfo, { results, status, errorMessage, logs: logger?.getFormattedLogs() });
470
- }
471
- /**
472
- * Get the cron callback function
473
- * @param cron
474
- * @returns
475
- */
476
- getCronExecutor(cron) {
477
- return async () => {
478
- try {
479
- this.log("INFO", `Execute cron ${cron.cron}: ${cron.serviceName}.${cron.method}(...) # ${cron.description} as an AsyncOperationAction`);
480
- await this.launchAction(new this.model(cron.serviceName, cron.method, cron.args));
481
- }
482
- catch (err) {
483
- this.log("ERROR", `Execution error cron ${cron.cron}: ${cron.serviceName}.${cron.method}(...) # ${cron.description} - ${err}`);
484
- }
485
- };
486
- }
487
- /**
488
- * Manage scheduled actions and crontab actions
489
- * @returns
490
- */
491
- scheduler() {
492
- // Map cron to an AsyncOperationAction
493
- // It allows you to keep a trace of the cron execution in the AsyncAction
494
- if (this.parameters.includeCron) {
495
- CronService.loadAnnotations(this._webda.getServices()).forEach(cron => {
496
- this.log("INFO", `Schedule cron ${cron.cron}: ${cron.serviceName}.${cron.method}(...) # ${cron.description}`);
497
- crontabSchedule(cron.cron, this.getCronExecutor(cron));
498
- });
499
- }
500
- // Every schedulerResolution will check for scheduled task
501
- return new CancelableLoopPromise(async () => {
502
- let time = Date.now();
503
- time -= time % this.parameters.schedulerResolution;
504
- // Queue all actions
505
- await Promise.all((await this.model.query(`status = 'SCHEDULED' AND scheduled < ${time + 1}`)).results.map(a => this.launchAction(a)));
506
- time += this.parameters.schedulerResolution;
507
- // Wait for next scheduler resolution
508
- if (time > Date.now()) {
509
- await Core.sleep(time - Date.now());
510
- /* c8 ignore next */
511
- }
512
- });
513
- }
514
- }
515
- /**
516
- * HMAC Algorithm used for simple auth
517
- */
518
- AsyncJobService.HMAC_ALGO = "sha256";
519
- export default AsyncJobService;
520
- export { AsyncJobService };
521
- //# sourceMappingURL=asyncjobservice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asyncjobservice.js","sourceRoot":"","sources":["../../src/services/asyncjobservice.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import { spawn } from "child_process";
2
- import { Runner, RunnerParameters } from "./runner.js";
3
- export class LocalRunnerParameters extends RunnerParameters {
4
- constructor(params) {
5
- var _a;
6
- super(params);
7
- this.options ?? (this.options = {});
8
- (_a = this.options).env ?? (_a.env = {});
9
- }
10
- }
11
- /**
12
- * Run a Job locally on the server by spawning a child process
13
- *
14
- * @WebdaModda
15
- */
16
- export default class LocalRunner extends Runner {
17
- /**
18
- * @inheritdoc
19
- */
20
- loadParameters(params) {
21
- return new LocalRunnerParameters(params);
22
- }
23
- spawn(command, args, options) {
24
- /* c8 ignore next 2 */
25
- return spawn(command, args, options);
26
- }
27
- /**
28
- * @inheritdoc
29
- */
30
- async launchAction(action, info) {
31
- let envs = {
32
- ...this.parameters.options?.env,
33
- ...info
34
- };
35
- this.log("INFO", "Job", action.getUuid(), "started with", Object.keys(envs)
36
- .map(k => `${k}=${envs[k]}`)
37
- .join(" "), this.parameters.command, this.parameters.args ? this.parameters.args.map(a => `'${a}'`).join(" ") : "");
38
- const child = this.spawn(this.parameters.command, this.parameters.args || [], {
39
- ...this.parameters.options,
40
- env: envs,
41
- detached: true
42
- });
43
- // AutoStatus based on process info
44
- if (this.parameters.autoStatus && child) {
45
- child.stdout?.on("data", data => {
46
- action.getStore().upsertItemToCollection(action.getUuid(), "logs", data);
47
- });
48
- child.stderr?.on("data", data => {
49
- action.getStore().upsertItemToCollection(action.getUuid(), "logs", data);
50
- });
51
- // As this is local just and mostly used for batch auto status it
52
- await action.getStore().patch({ uuid: action.getUuid(), status: "RUNNING" });
53
- child.on("exit", async (code) => {
54
- if (code !== 0) {
55
- this.log("INFO", "Job", action.getUuid(), "errored with", code);
56
- await action.getStore().patch({ uuid: action.getUuid(), status: "ERROR" });
57
- }
58
- else {
59
- this.log("INFO", "Job", action.getUuid(), "successful");
60
- await action.getStore().patch({ uuid: action.getUuid(), status: "SUCCESS" });
61
- }
62
- });
63
- }
64
- return {
65
- agent: Runner.getAgentInfo(),
66
- pid: child?.pid || -1
67
- };
68
- }
69
- }
70
- //# sourceMappingURL=localrunner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"localrunner.js","sourceRoot":"","sources":["../../src/services/localrunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAa,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE/D,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IAoBzD,YAAY,MAAW;;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,KAAZ,IAAI,CAAC,OAAO,GAAK,EAAE,EAAC;QACpB,MAAA,IAAI,CAAC,OAAO,EAAC,GAAG,QAAH,GAAG,GAAK,EAAE,EAAC;IAC1B,CAAC;CACF;AAUD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,WAAqE,SAAQ,MAAS;IACzG;;OAEG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc,EAAE,OAAkC;QACvE,sBAAsB;QACtB,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAmB,EAAE,IAAa;QACnD,IAAI,IAAI,GAA8B;YACpC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG;YAC/B,GAAG,IAAI;SACR,CAAC;QACF,IAAI,CAAC,GAAG,CACN,MAAM,EACN,KAAK,EACL,MAAM,CAAC,OAAO,EAAE,EAChB,cAAc,EACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3B,IAAI,CAAC,GAAG,CAAC,EACZ,IAAI,CAAC,UAAU,CAAC,OAAO,EACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE;YAC5E,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;YAC1B,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,mCAAmC;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC;YACxC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YACH,iEAAiE;YACjE,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7E,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC5B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;oBAChE,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;oBACxD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;YAC5B,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;SACtB,CAAC;IACJ,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/services/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB,MAAM,OAAO,gBAAiB,SAAQ,iBAAiB;IAOrD,YAAY,MAAW;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,KAAZ,IAAI,CAAC,OAAO,GAAK,EAAE,EAAC;IACtB,CAAC;CACF;AAoBD;;GAEG;AACH,MAAM,OAAgB,MAAsD,SAAQ,OAAU;IAC5F;;OAEG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD;;;;OAIG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY;QACjB,OAAO;YACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;YACrB,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE;YACrB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;SAChB,CAAC;IACJ,CAAC;CAMF"}