@webda/async 4.0.0-beta.2 → 4.0.0-beta.3
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.
- package/README.md +89 -4
- package/lib/{models.d.ts → asyncaction.model.d.ts} +75 -37
- package/lib/asyncaction.model.d.ts.map +1 -0
- package/lib/asyncaction.model.js +269 -0
- package/lib/asyncaction.model.js.map +1 -0
- package/lib/index.d.ts +6 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -4
- package/lib/index.js.map +1 -1
- package/lib/services/asyncevents.service.d.ts +154 -0
- package/lib/services/asyncevents.service.d.ts.map +1 -0
- package/lib/services/asyncevents.service.js +219 -0
- package/lib/services/asyncevents.service.js.map +1 -0
- package/lib/services/{asyncjobservice.d.ts → asyncjobservice.service.d.ts} +78 -61
- package/lib/services/asyncjobservice.service.d.ts.map +1 -0
- package/lib/services/asyncjobservice.service.js +584 -0
- package/lib/services/asyncjobservice.service.js.map +1 -0
- package/lib/services/{localrunner.d.ts → localrunner.service.d.ts} +24 -10
- package/lib/services/localrunner.service.d.ts.map +1 -0
- package/lib/services/localrunner.service.js +87 -0
- package/lib/services/localrunner.service.js.map +1 -0
- package/lib/services/{runner.d.ts → runner.service.d.ts} +17 -12
- package/lib/services/runner.service.d.ts.map +1 -0
- package/lib/services/{runner.js → runner.service.js} +16 -13
- package/lib/services/runner.service.js.map +1 -0
- package/lib/services/servicerunner.service.d.ts +105 -0
- package/lib/services/servicerunner.service.d.ts.map +1 -0
- package/lib/services/servicerunner.service.js +131 -0
- package/lib/services/servicerunner.service.js.map +1 -0
- package/package.json +32 -42
- package/webda.module.json +1925 -890
- package/lib/models.d.ts.map +0 -1
- package/lib/models.js +0 -179
- package/lib/models.js.map +0 -1
- package/lib/models.spec.d.ts +0 -7
- package/lib/models.spec.d.ts.map +0 -1
- package/lib/models.spec.js +0 -64
- package/lib/models.spec.js.map +0 -1
- package/lib/services/asyncjobservice.d.ts.map +0 -1
- package/lib/services/asyncjobservice.js +0 -469
- package/lib/services/asyncjobservice.js.map +0 -1
- package/lib/services/asyncjobservice.spec.d.ts +0 -2
- package/lib/services/asyncjobservice.spec.d.ts.map +0 -1
- package/lib/services/asyncjobservice.spec.js +0 -561
- package/lib/services/asyncjobservice.spec.js.map +0 -1
- package/lib/services/localrunner.d.ts.map +0 -1
- package/lib/services/localrunner.js +0 -70
- package/lib/services/localrunner.js.map +0 -1
- package/lib/services/localrunner.spec.d.ts +0 -2
- package/lib/services/localrunner.spec.d.ts.map +0 -1
- package/lib/services/localrunner.spec.js +0 -113
- package/lib/services/localrunner.spec.js.map +0 -1
- package/lib/services/runner.d.ts.map +0 -1
- package/lib/services/runner.js.map +0 -1
- package/lib/services/servicerunner.d.ts +0 -68
- package/lib/services/servicerunner.d.ts.map +0 -1
- package/lib/services/servicerunner.js +0 -97
- package/lib/services/servicerunner.js.map +0 -1
- package/lib/services/servicerunner.spec.d.ts +0 -2
- package/lib/services/servicerunner.spec.d.ts.map +0 -1
- package/lib/services/servicerunner.spec.js +0 -111
- package/lib/services/servicerunner.spec.js.map +0 -1
|
@@ -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
|
-
const 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":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localrunner.spec.d.ts","sourceRoot":"","sources":["../../src/services/localrunner.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { suite, test } from "@testdeck/mocha";
|
|
8
|
-
import { WebdaTest } from "@webda/core/lib/test.js";
|
|
9
|
-
import * as assert from "assert";
|
|
10
|
-
import { EventEmitter } from "events";
|
|
11
|
-
import { nextTick } from "process";
|
|
12
|
-
import { stub } from "sinon";
|
|
13
|
-
import LocalRunner from "./localrunner.js";
|
|
14
|
-
import { Runner } from "./runner.js";
|
|
15
|
-
class FakeRunner extends Runner {
|
|
16
|
-
launchAction(action) {
|
|
17
|
-
throw new Error("Method not implemented.");
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
class FakeChildProcess extends EventEmitter {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(...arguments);
|
|
23
|
-
this.pid = 666;
|
|
24
|
-
this.stdout = new EventEmitter();
|
|
25
|
-
this.stderr = new EventEmitter();
|
|
26
|
-
}
|
|
27
|
-
send(type, ...args) {
|
|
28
|
-
this.emit(type, ...args);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
let LocalRunnerTest = class LocalRunnerTest extends WebdaTest {
|
|
32
|
-
cov() {
|
|
33
|
-
new LocalRunner(this.webda, "runner", {});
|
|
34
|
-
const runner = new LocalRunner(this.webda, "runner", { actions: ["plop"], options: { env: { OK: "test" } } });
|
|
35
|
-
assert.strictEqual(runner.handleType("plop"), true);
|
|
36
|
-
assert.strictEqual(runner.handleType("plop2"), false);
|
|
37
|
-
new LocalRunner(this.webda, "runner", { options: { env: { OK: "test" } } });
|
|
38
|
-
// Just for loadParameters
|
|
39
|
-
new FakeRunner(this.webda, "fake", {});
|
|
40
|
-
}
|
|
41
|
-
getJobInfo(action) {
|
|
42
|
-
return {
|
|
43
|
-
JOB_HOOK: "",
|
|
44
|
-
JOB_ID: action.getUuid(),
|
|
45
|
-
JOB_ORCHESTRATOR: "test",
|
|
46
|
-
JOB_SECRET_KEY: action.__secretKey
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
async launchAction() {
|
|
50
|
-
const runner = new LocalRunner(this.webda, "runner", {});
|
|
51
|
-
// @ts-expect-error
|
|
52
|
-
const spawn = stub(runner, "spawn").returns({ pid: "fake" });
|
|
53
|
-
try {
|
|
54
|
-
const action = await this.getService("AsyncJobs").save({ status: "STARTING", logs: [] });
|
|
55
|
-
const job = await runner.launchAction(action, this.getJobInfo(action));
|
|
56
|
-
assert.strictEqual(spawn.calledOnce, true);
|
|
57
|
-
assert.strictEqual(job.pid, "fake");
|
|
58
|
-
await action.refresh();
|
|
59
|
-
assert.strictEqual(action.status, "STARTING");
|
|
60
|
-
runner.getParameters().args = ["test"];
|
|
61
|
-
await runner.launchAction(action, this.getJobInfo(action));
|
|
62
|
-
}
|
|
63
|
-
finally {
|
|
64
|
-
spawn.restore();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
async launchActionAutoStatus() {
|
|
68
|
-
const child = new FakeChildProcess();
|
|
69
|
-
const runner = new LocalRunner(this.webda, "runner", { autoStatus: true });
|
|
70
|
-
// @ts-expect-error
|
|
71
|
-
const spawn = stub(runner, "spawn").returns(child);
|
|
72
|
-
try {
|
|
73
|
-
const action = await this.getService("AsyncJobs").save({ status: "STARTING", logs: [] });
|
|
74
|
-
const job = await runner.launchAction(action, this.getJobInfo(action));
|
|
75
|
-
assert.strictEqual(spawn.calledOnce, true);
|
|
76
|
-
assert.strictEqual(job.pid, 666);
|
|
77
|
-
await action.refresh();
|
|
78
|
-
assert.strictEqual(action.status, "RUNNING");
|
|
79
|
-
assert.deepStrictEqual(action.logs, []);
|
|
80
|
-
child.stdout.emit("data", "stdout output");
|
|
81
|
-
child.stderr.emit("data", "stderr output");
|
|
82
|
-
await new Promise(resolve => nextTick(resolve));
|
|
83
|
-
await this.sleep(1000);
|
|
84
|
-
await action.refresh();
|
|
85
|
-
assert.strictEqual(action.status, "RUNNING");
|
|
86
|
-
assert.deepStrictEqual(action.logs, ["stdout output", "stderr output"]);
|
|
87
|
-
child.emit("exit", 1);
|
|
88
|
-
await new Promise(resolve => nextTick(resolve));
|
|
89
|
-
await action.refresh();
|
|
90
|
-
assert.strictEqual(action.status, "ERROR");
|
|
91
|
-
child.emit("exit", 0);
|
|
92
|
-
await new Promise(resolve => nextTick(resolve));
|
|
93
|
-
await action.refresh();
|
|
94
|
-
assert.strictEqual(action.status, "SUCCESS");
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
spawn.restore();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
__decorate([
|
|
102
|
-
test
|
|
103
|
-
], LocalRunnerTest.prototype, "cov", null);
|
|
104
|
-
__decorate([
|
|
105
|
-
test
|
|
106
|
-
], LocalRunnerTest.prototype, "launchAction", null);
|
|
107
|
-
__decorate([
|
|
108
|
-
test
|
|
109
|
-
], LocalRunnerTest.prototype, "launchActionAutoStatus", null);
|
|
110
|
-
LocalRunnerTest = __decorate([
|
|
111
|
-
suite
|
|
112
|
-
], LocalRunnerTest);
|
|
113
|
-
//# sourceMappingURL=localrunner.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localrunner.spec.js","sourceRoot":"","sources":["../../src/services/localrunner.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/services/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,qBAAa,gBAAiB,SAAQ,iBAAiB;IACrD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEP,MAAM,EAAE,GAAG;CAIxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,8BAAsB,MAAM,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC5F;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,iBAAiB;IAG9C;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACH,MAAM,CAAC,YAAY,IAAI,SAAS;IAShC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;CACxE"}
|
|
@@ -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"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { MemoryLogger, WorkerLogLevel, WorkerMessage, WorkerOutput } from "@webda/workout";
|
|
2
|
-
import { AsyncAction } from "../models.js";
|
|
3
|
-
import { JobInfo } from "./asyncjobservice.js";
|
|
4
|
-
import { AgentInfo, Runner, RunnerParameters } from "./runner.js";
|
|
5
|
-
/**
|
|
6
|
-
* Type of action returned by LocalRunner
|
|
7
|
-
*/
|
|
8
|
-
export interface ServiceAction {
|
|
9
|
-
/**
|
|
10
|
-
* Info on the server running it
|
|
11
|
-
*/
|
|
12
|
-
agent: AgentInfo;
|
|
13
|
-
/**
|
|
14
|
-
* Promise of the implementation
|
|
15
|
-
*
|
|
16
|
-
* Useful for unit test
|
|
17
|
-
*/
|
|
18
|
-
promise: Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Keep log in memory and save it to the action object every 5s
|
|
22
|
-
*/
|
|
23
|
-
export declare class ActionMemoryLogger extends MemoryLogger {
|
|
24
|
-
protected action: AsyncAction;
|
|
25
|
-
logSaveDelay: number;
|
|
26
|
-
format?: string;
|
|
27
|
-
protected timeout: NodeJS.Timeout;
|
|
28
|
-
constructor(output: WorkerOutput, level: WorkerLogLevel, limit: number, action: AsyncAction, logSaveDelay: number, format?: string);
|
|
29
|
-
onMessage(msg: WorkerMessage): void;
|
|
30
|
-
save(): Promise<void>;
|
|
31
|
-
saveAndClose(): Promise<void>;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Add the log format to capture
|
|
35
|
-
*/
|
|
36
|
-
export declare class ServiceRunnerParameters extends RunnerParameters {
|
|
37
|
-
/**
|
|
38
|
-
* Define the log format
|
|
39
|
-
*
|
|
40
|
-
* @default ConsoleLoggerDefaultFormat
|
|
41
|
-
*/
|
|
42
|
-
logFormat?: string;
|
|
43
|
-
/**
|
|
44
|
-
* How long before saving logs (in ms)
|
|
45
|
-
*
|
|
46
|
-
* @default 5000
|
|
47
|
-
*/
|
|
48
|
-
logSaveDelay?: number;
|
|
49
|
-
constructor(params: any);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Run a Job locally on the server by spawning a child process
|
|
53
|
-
*
|
|
54
|
-
* @WebdaModda
|
|
55
|
-
*/
|
|
56
|
-
export default class ServiceRunner<T extends ServiceRunnerParameters = ServiceRunnerParameters> extends Runner<T> {
|
|
57
|
-
/**
|
|
58
|
-
* Load parameters
|
|
59
|
-
* @param params
|
|
60
|
-
* @returns
|
|
61
|
-
*/
|
|
62
|
-
loadParameters(params: any): ServiceRunnerParameters;
|
|
63
|
-
/**
|
|
64
|
-
* @inheritdoc
|
|
65
|
-
*/
|
|
66
|
-
launchAction(action: AsyncAction, info: JobInfo): Promise<ServiceAction>;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=servicerunner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"servicerunner.d.ts","sourceRoot":"","sources":["../../src/services/servicerunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAE,WAAW,EAA0C,MAAM,WAAW,CAAC;AAChF,OAAwB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAOhD,SAAS,CAAC,MAAM,EAAE,WAAW;IACtB,YAAY,EAAE,MAAM;IACpB,MAAM,CAAC,EAAE,MAAM;IARxB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;gBAGhC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACH,MAAM,EAAE,WAAW,EACtB,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM;IAKxB,SAAS,CAAC,GAAG,EAAE,aAAa;IAO5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQf,YAAY;CAInB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEV,MAAM,EAAE,GAAG;CAIxB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC/G;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG;IAG1B;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;CAiD/E"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { ConsoleLogger, MemoryLogger } from "@webda/workout";
|
|
2
|
-
import { AsyncOperationAction, AsyncWebdaAction } from "../models.js";
|
|
3
|
-
import { Runner, RunnerParameters } from "./runner.js";
|
|
4
|
-
/**
|
|
5
|
-
* Keep log in memory and save it to the action object every 5s
|
|
6
|
-
*/
|
|
7
|
-
export class ActionMemoryLogger extends MemoryLogger {
|
|
8
|
-
constructor(output, level, limit, action, logSaveDelay, format) {
|
|
9
|
-
super(output, level, limit);
|
|
10
|
-
this.action = action;
|
|
11
|
-
this.logSaveDelay = logSaveDelay;
|
|
12
|
-
this.format = format;
|
|
13
|
-
}
|
|
14
|
-
onMessage(msg) {
|
|
15
|
-
super.onMessage(msg);
|
|
16
|
-
if (!this.timeout) {
|
|
17
|
-
this.timeout = setTimeout(() => this.save(), this.logSaveDelay);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
save() {
|
|
21
|
-
if (this.timeout) {
|
|
22
|
-
clearTimeout(this.timeout);
|
|
23
|
-
this.timeout = undefined;
|
|
24
|
-
}
|
|
25
|
-
return this.action.patch({ logs: this.getLogs().map(msg => ConsoleLogger.format(msg, this.format)) }, null);
|
|
26
|
-
}
|
|
27
|
-
async saveAndClose() {
|
|
28
|
-
this.close();
|
|
29
|
-
return this.save();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Add the log format to capture
|
|
34
|
-
*/
|
|
35
|
-
export class ServiceRunnerParameters extends RunnerParameters {
|
|
36
|
-
constructor(params) {
|
|
37
|
-
super(params);
|
|
38
|
-
this.logSaveDelay ?? (this.logSaveDelay = 5000);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Run a Job locally on the server by spawning a child process
|
|
43
|
-
*
|
|
44
|
-
* @WebdaModda
|
|
45
|
-
*/
|
|
46
|
-
export default class ServiceRunner extends Runner {
|
|
47
|
-
/**
|
|
48
|
-
* Load parameters
|
|
49
|
-
* @param params
|
|
50
|
-
* @returns
|
|
51
|
-
*/
|
|
52
|
-
loadParameters(params) {
|
|
53
|
-
return new ServiceRunnerParameters(params);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* @inheritdoc
|
|
57
|
-
*/
|
|
58
|
-
async launchAction(action, info) {
|
|
59
|
-
if (!(action instanceof AsyncWebdaAction || action instanceof AsyncOperationAction)) {
|
|
60
|
-
this.log("ERROR", "Can only handle AsyncWebdaAction or AsyncOperationAction got", action.constructor.name);
|
|
61
|
-
throw new Error("Can only handle AsyncWebdaAction or AsyncOperationAction got " + action.constructor.name);
|
|
62
|
-
}
|
|
63
|
-
// Launch within current process
|
|
64
|
-
const promise = (async (action) => {
|
|
65
|
-
let logger;
|
|
66
|
-
try {
|
|
67
|
-
await action.patch({ status: "RUNNING" });
|
|
68
|
-
this.log("INFO", "Job", action.getUuid(), "started");
|
|
69
|
-
// Inject a MemoryLogger to capture and report any logs
|
|
70
|
-
logger = new ActionMemoryLogger(this.getWebda().getWorkerOutput(), action.logLevel, this.getService(info.JOB_ORCHESTRATOR)?.getParameters().logsLimit || 5000, action, this.parameters.logSaveDelay, this.parameters.logFormat);
|
|
71
|
-
if (action instanceof AsyncWebdaAction) {
|
|
72
|
-
await this.getService(action.serviceName)[action.method](...(action.arguments || []));
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
await this.getWebda().callOperation(action.context, action.operationId);
|
|
76
|
-
}
|
|
77
|
-
await logger.saveAndClose();
|
|
78
|
-
await action.patch({ status: "SUCCESS" }, null);
|
|
79
|
-
this.log("INFO", "Job", action.getUuid(), "finished");
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
await logger?.saveAndClose();
|
|
83
|
-
await action.patch({
|
|
84
|
-
status: "ERROR",
|
|
85
|
-
errorMessage: err.message,
|
|
86
|
-
errorName: err.name
|
|
87
|
-
}, null);
|
|
88
|
-
this.log("ERROR", "Job", action.getUuid(), "errored", err);
|
|
89
|
-
}
|
|
90
|
-
})(action);
|
|
91
|
-
return {
|
|
92
|
-
agent: Runner.getAgentInfo(),
|
|
93
|
-
promise
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=servicerunner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"servicerunner.js","sourceRoot":"","sources":["../../src/services/servicerunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"servicerunner.spec.d.ts","sourceRoot":"","sources":["../../src/services/servicerunner.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { suite, test } from "@testdeck/mocha";
|
|
8
|
-
import { CoreModel, Operation, OperationContext, SimpleOperationContext } from "@webda/core";
|
|
9
|
-
import { WebdaTest } from "@webda/core/lib/test.js";
|
|
10
|
-
import assert from "assert";
|
|
11
|
-
import { AsyncOperationAction, AsyncWebdaAction } from "../models.js";
|
|
12
|
-
import { Runner } from "./runner.js";
|
|
13
|
-
import ServiceRunner from "./servicerunner.js";
|
|
14
|
-
class FakeRunner extends Runner {
|
|
15
|
-
launchAction(action) {
|
|
16
|
-
throw new Error("Method not implemented.");
|
|
17
|
-
}
|
|
18
|
-
test(arg) {
|
|
19
|
-
this.log("INFO", "FakeRunner test", arg);
|
|
20
|
-
if (arg === 666) {
|
|
21
|
-
throw new Error("Error");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
operation(ctx) {
|
|
25
|
-
this.log("INFO", "Logging test");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
__decorate([
|
|
29
|
-
Operation()
|
|
30
|
-
], FakeRunner.prototype, "operation", null);
|
|
31
|
-
let ServiceRunnerTest = class ServiceRunnerTest extends WebdaTest {
|
|
32
|
-
async operationAction() {
|
|
33
|
-
this.registerService(new FakeRunner(this.webda, "calledRunner"));
|
|
34
|
-
this.webda.initStatics();
|
|
35
|
-
const runner = new ServiceRunner(this.webda, "runner", { actions: ["plop"] });
|
|
36
|
-
const ctx = new OperationContext(this.webda);
|
|
37
|
-
const action = new AsyncOperationAction("calledRunner.testOp", ctx);
|
|
38
|
-
await this.getService("AsyncJobs").save(action);
|
|
39
|
-
await runner.launchAction(action, {
|
|
40
|
-
JOB_HOOK: "",
|
|
41
|
-
JOB_ID: action.getUuid(),
|
|
42
|
-
JOB_ORCHESTRATOR: "test",
|
|
43
|
-
JOB_SECRET_KEY: ""
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
async cov() {
|
|
47
|
-
this.registerService(new FakeRunner(this.webda, "calledRunner"));
|
|
48
|
-
const runner = new ServiceRunner(this.webda, "runner", { actions: ["plop"] });
|
|
49
|
-
const action = new AsyncWebdaAction();
|
|
50
|
-
action.serviceName = "calledRunner";
|
|
51
|
-
action.method = "test";
|
|
52
|
-
await this.getService("AsyncJobs").save(action);
|
|
53
|
-
let serviceAction = await runner.launchAction(action, {
|
|
54
|
-
JOB_HOOK: "",
|
|
55
|
-
JOB_ID: action.getUuid(),
|
|
56
|
-
JOB_ORCHESTRATOR: "test",
|
|
57
|
-
JOB_SECRET_KEY: ""
|
|
58
|
-
});
|
|
59
|
-
await serviceAction.promise;
|
|
60
|
-
await action.refresh();
|
|
61
|
-
assert.strictEqual(action.logs?.length, 1);
|
|
62
|
-
assert.ok(action.logs[0].endsWith(" [ INFO] [calledRunner] FakeRunner test undefined"));
|
|
63
|
-
const action2 = new AsyncWebdaAction();
|
|
64
|
-
action2.serviceName = "calledRunner";
|
|
65
|
-
action2.method = "test";
|
|
66
|
-
action2.arguments = [666];
|
|
67
|
-
await this.getService("AsyncJobs").save(action2);
|
|
68
|
-
serviceAction = await runner.launchAction(action2, {
|
|
69
|
-
JOB_HOOK: "",
|
|
70
|
-
JOB_ID: action2.getUuid(),
|
|
71
|
-
JOB_ORCHESTRATOR: "test",
|
|
72
|
-
JOB_SECRET_KEY: ""
|
|
73
|
-
});
|
|
74
|
-
await serviceAction.promise;
|
|
75
|
-
await action2.refresh();
|
|
76
|
-
assert.strictEqual(action2.status, "ERROR");
|
|
77
|
-
assert.strictEqual(action2.logs?.length, 1);
|
|
78
|
-
assert.ok(action2.logs[0].endsWith(" [ INFO] [calledRunner] FakeRunner test 666"));
|
|
79
|
-
action.type = "plop";
|
|
80
|
-
await assert.rejects(() => runner.launchAction(new CoreModel(), {
|
|
81
|
-
JOB_HOOK: "",
|
|
82
|
-
JOB_ID: action2.getUuid(),
|
|
83
|
-
JOB_ORCHESTRATOR: "test",
|
|
84
|
-
JOB_SECRET_KEY: ""
|
|
85
|
-
}), /Can only handle AsyncWebdaAction or AsyncOperationAction got CoreModel/);
|
|
86
|
-
const opAction = new AsyncOperationAction("CalledRunner.Operation", new SimpleOperationContext(this.webda).setInput(Buffer.from("{}")));
|
|
87
|
-
this.webda.initStatics();
|
|
88
|
-
await this.getService("AsyncJobs").save(opAction);
|
|
89
|
-
serviceAction = await runner.launchAction(opAction, {
|
|
90
|
-
JOB_HOOK: "",
|
|
91
|
-
JOB_ID: opAction.getUuid(),
|
|
92
|
-
JOB_ORCHESTRATOR: "test",
|
|
93
|
-
JOB_SECRET_KEY: ""
|
|
94
|
-
});
|
|
95
|
-
await serviceAction.promise;
|
|
96
|
-
await opAction.refresh();
|
|
97
|
-
assert.strictEqual(opAction.status, "SUCCESS");
|
|
98
|
-
assert.strictEqual(opAction.logs?.length, 1);
|
|
99
|
-
assert.ok(opAction.logs[0].endsWith(" [ INFO] [calledRunner] Logging test"));
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
__decorate([
|
|
103
|
-
test
|
|
104
|
-
], ServiceRunnerTest.prototype, "operationAction", null);
|
|
105
|
-
__decorate([
|
|
106
|
-
test
|
|
107
|
-
], ServiceRunnerTest.prototype, "cov", null);
|
|
108
|
-
ServiceRunnerTest = __decorate([
|
|
109
|
-
suite
|
|
110
|
-
], ServiceRunnerTest);
|
|
111
|
-
//# sourceMappingURL=servicerunner.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"servicerunner.spec.js","sourceRoot":"","sources":["../../src/services/servicerunner.spec.ts"],"names":[],"mappings":"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"}
|