iobroker.bee 0.2.2 → 0.2.4
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 +32 -4
- package/admin/jsonConfig.json +23 -5
- package/build/lib/commands.js +12 -0
- package/build/lib/commands.js.map +1 -1
- package/build/lib/instances.js +67 -0
- package/build/lib/instances.js.map +1 -0
- package/build/lib/inventory.js +14 -2
- package/build/lib/inventory.js.map +1 -1
- package/build/lib/jobs.js +122 -3
- package/build/lib/jobs.js.map +1 -1
- package/build/lib/node.js +239 -0
- package/build/lib/node.js.map +1 -0
- package/build/lib/planner.js +25 -7
- package/build/lib/planner.js.map +1 -1
- package/build/lib/preflight.js +7 -0
- package/build/lib/preflight.js.map +1 -1
- package/build/lib/protocol.js.map +1 -1
- package/build/main.js +67 -9
- package/build/main.js.map +1 -1
- package/build/runner.js +8 -0
- package/build/runner.js.map +1 -1
- package/io-package.json +10 -2
- package/package.json +3 -2
- package/scripts/node-update.sh +134 -0
package/README.md
CHANGED
|
@@ -13,9 +13,25 @@ Fleet agent for ioBroker. It connects a delivered ioBroker system (in a house, a
|
|
|
13
13
|
3. **Desired state instead of commands.** The server publishes the desired profile as a retained message. A system that was offline for months reads the current profile, not a backlog of orders.
|
|
14
14
|
4. **Reconciliation.** The agent compares the profile with the installed versions and plans install, upgrade, downgrade (and removal only when the server asks for it on return to managed mode). It never touches adapters that are not in the profile.
|
|
15
15
|
5. **Preflight.** Emergency stop, dependencies of the target versions (`io-package.json` of the target version, `engines.node`), free space, maintenance window and configurable conditions on ioBroker states (installation not in use, battery charged, no roaming, vehicle standing, …). Conditions that change by themselves mean *waiting*, everything that needs a human means *blocked*.
|
|
16
|
-
6. **Execution.** A detached runner process performs backup (`iobroker backup`) and the steps (`iobroker add/upgrade/del`) one by one. It survives restarts of the adapter, including the update of the agent itself, which always comes last.
|
|
16
|
+
6. **Execution.** A detached runner process performs backup (`iobroker backup`) and the steps (`iobroker add/upgrade/del`) one by one. It survives restarts of the adapter, including the update of the agent itself, which always comes last. A new major line of Node.js comes right after the backup, see below.
|
|
17
17
|
7. **Verification.** Versions must match, all enabled daemon instances of the changed adapters must be alive, and no new errors may appear in their log during the observation time. Otherwise the agent rolls back the changed adapters to their previous versions and reports *blocked*. A blocked job is not repeated until the fleet manager releases a new attempt.
|
|
18
18
|
|
|
19
|
+
### Node.js
|
|
20
|
+
|
|
21
|
+
The profile names the major line of Node.js (e.g. `22`). If this system runs an older one, the plan starts with a step `node`. Never downwards: a newer Node.js than in the profile stays. Within a major line Node.js is updated with the OS updates.
|
|
22
|
+
|
|
23
|
+
The update stops ioBroker, so the agent cannot do it itself. It starts `scripts/node-update.sh` as root in a systemd unit of its own (`sudo -n systemd-run`, allowed by the installer of ioBroker), so stopping ioBroker does not end it. The script
|
|
24
|
+
|
|
25
|
+
1. stops the ioBroker service, points the NodeSource source (`/etc/apt/sources.list.d/nodesource.sources` or `.list`) to the new line and installs the newest `nodejs` of it, with the capabilities the old binary had (ports below 1024, raw sockets),
|
|
26
|
+
2. starts ioBroker and waits for the verdict of the agent: under the new Node.js the agent checks that every instance that ran before runs again (at least 10 minutes, or the start timeout if longer) and then writes `node-verdict.json`,
|
|
27
|
+
3. without a positive verdict in time it stops ioBroker, puts the source back, installs the old package again and starts ioBroker.
|
|
28
|
+
|
|
29
|
+
Afterwards the runner continues with the adapters. A failed adapter later rolls back the adapters, Node.js stays. If the old version came back, the job is *blocked* with the reason. Adapters with native modules are rebuilt by js-controller when they start.
|
|
30
|
+
|
|
31
|
+
Preflight blocks with a reason unless all of this holds: Linux, ioBroker runs as a systemd service, sudo without password for `systemd-run` (not with `--hardened`), Node.js is `/usr/bin/node` of the package `nodejs` from NodeSource, architecture amd64 or arm64, `nodejs` not on hold, an off-device backup target (BackItUp), and no installed package (js-controller, adapters that the job does not change) excludes the new line in `engines.node`.
|
|
32
|
+
|
|
33
|
+
Limits: a power loss while the script works leaves the system as far as the script got; the agent then reports *blocked* and `node-update.log` tells where it stopped.
|
|
34
|
+
|
|
19
35
|
### Behaviour without server
|
|
20
36
|
|
|
21
37
|
- **Unknown means self-stop.** If the server explicitly rejects the device (unknown token, revoked certificate), the agent writes the reason to `bee.0.info.status`, raises a notification and terminates. It does not keep knocking.
|
|
@@ -72,13 +88,13 @@ From the asset detail a technician (permission `operate`) can start, stop and re
|
|
|
72
88
|
| `job.state`, `job.detail`, `job.steps` | current or last job |
|
|
73
89
|
| `control.halted` | emergency stop of the fleet is active |
|
|
74
90
|
| `control.refresh`, `control.check` | buttons: send inventory, check desired state now |
|
|
75
|
-
| `info.remoteAccess`, `info.remoteAccessBy` | remote access running now, and by whom with which purpose |
|
|
91
|
+
| `info.remoteAccess`, `info.remoteAccessBy` | remote access running now, and by whom with which purpose (`keiner` if none; scripts should use `info.remoteAccess`) |
|
|
76
92
|
|
|
77
|
-
Files in `iobroker-data/bee.0/`: `device.json` (certificate and key, mode 0600), `desired.json`, `job.json`, `runner.json`, `runner.log` (complete CLI output of all jobs), `tunnels.json` (running remote access sessions, resumed after a restart).
|
|
93
|
+
Files in `iobroker-data/bee.0/`: `device.json` (certificate and key, mode 0600), `desired.json`, `job.json`, `runner.json`, `runner.log` (complete CLI output of all jobs), `tunnels.json` (running remote access sessions, resumed after a restart), and for an update of Node.js `node-update.sh` (copy of the script), `node-status.json`, `node-verdict.json` and `node-update.log` (complete output of the script).
|
|
78
94
|
|
|
79
95
|
## Not in this version
|
|
80
96
|
|
|
81
|
-
|
|
97
|
+
Updates of js-controller through the fleet (with a watchdog outside ioBroker), vis-2 project distribution, recording of console sessions, signed artifacts. See the concept of the beekeeper project.
|
|
82
98
|
|
|
83
99
|
## Development
|
|
84
100
|
|
|
@@ -92,6 +108,18 @@ npm test # unit tests of planner, preflight and diff
|
|
|
92
108
|
|
|
93
109
|
## Changelog
|
|
94
110
|
|
|
111
|
+
### 0.2.4 (2026-11-10)
|
|
112
|
+
|
|
113
|
+
- Settings, tab *Remote access*: "Remote access in progress" instead of "Access right now", and `info.remoteAccessBy` says `keiner` when nobody accesses the system
|
|
114
|
+
- Settings, tab *Enrollment*: the connection to the fleet management in green or red, the status (now naming the server) next to it
|
|
115
|
+
- Instances without a process (mode `none` or `extension`) refuse start, stop and restart
|
|
116
|
+
- Updates Node.js to the major line of the profile, as the first step of a job: a script as root in a systemd unit of its own, back to the old version if the instances do not run again under the new one (see *Node.js*)
|
|
117
|
+
|
|
118
|
+
### 0.2.3 (2026-11-10)
|
|
119
|
+
|
|
120
|
+
- Instances that run as a web extension inside a web instance (`common.webExtension` and `native.webInstance`, e.g. mcp) have no process of their own; they count as running when their web instance runs, as in admin. Before, the fleet management showed them as not running, and the check after an update of such an adapter would have rolled it back.
|
|
121
|
+
- Instances of adapters that only bring files for web (`common.onlyWWW`, e.g. material) have no process either: no longer reported as not running, not checked after an update, no commands.
|
|
122
|
+
|
|
95
123
|
### 0.2.2 (2026-11-10)
|
|
96
124
|
|
|
97
125
|
- Console: a shell on this system for the fleet management, in the browser of the technician; off unless the owner allows it, Linux with `script` (util-linux) only
|
package/admin/jsonConfig.json
CHANGED
|
@@ -53,16 +53,34 @@
|
|
|
53
53
|
"lg": 12,
|
|
54
54
|
"xl": 12
|
|
55
55
|
},
|
|
56
|
+
"_connection": {
|
|
57
|
+
"type": "state",
|
|
58
|
+
"oid": "info.connection",
|
|
59
|
+
"label": { "en": "Fleet management", "de": "Flottenverwaltung" },
|
|
60
|
+
"trueText": { "en": "connected", "de": "verbunden" },
|
|
61
|
+
"falseText": { "en": "not connected", "de": "nicht verbunden" },
|
|
62
|
+
"trueTextStyle": { "color": "#4caf50", "fontWeight": "bold" },
|
|
63
|
+
"falseTextStyle": { "color": "#f44336", "fontWeight": "bold" },
|
|
64
|
+
"narrow": true,
|
|
65
|
+
"addColon": true,
|
|
66
|
+
"newLine": true,
|
|
67
|
+
"xs": 12,
|
|
68
|
+
"sm": 12,
|
|
69
|
+
"md": 4,
|
|
70
|
+
"lg": 3,
|
|
71
|
+
"xl": 3
|
|
72
|
+
},
|
|
56
73
|
"_status": {
|
|
57
74
|
"type": "state",
|
|
58
75
|
"oid": "info.status",
|
|
59
76
|
"label": { "en": "Status", "de": "Status" },
|
|
60
|
-
"
|
|
77
|
+
"narrow": true,
|
|
78
|
+
"addColon": true,
|
|
61
79
|
"xs": 12,
|
|
62
80
|
"sm": 12,
|
|
63
|
-
"md":
|
|
64
|
-
"lg":
|
|
65
|
-
"xl":
|
|
81
|
+
"md": 8,
|
|
82
|
+
"lg": 9,
|
|
83
|
+
"xl": 9
|
|
66
84
|
}
|
|
67
85
|
}
|
|
68
86
|
},
|
|
@@ -126,7 +144,7 @@
|
|
|
126
144
|
"_remoteAccessBy": {
|
|
127
145
|
"type": "state",
|
|
128
146
|
"oid": "info.remoteAccessBy",
|
|
129
|
-
"label": { "en": "
|
|
147
|
+
"label": { "en": "Remote access in progress", "de": "Laufender Fernzugriff" },
|
|
130
148
|
"newLine": true,
|
|
131
149
|
"xs": 12,
|
|
132
150
|
"sm": 12,
|
package/build/lib/commands.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.osUpdatesFrom = osUpdatesFrom;
|
|
|
6
6
|
exports.instanceRefusal = instanceRefusal;
|
|
7
7
|
exports.chooseOsPackages = chooseOsPackages;
|
|
8
8
|
const protocol_1 = require("./protocol");
|
|
9
|
+
const instances_1 = require("./instances");
|
|
9
10
|
const util_1 = require("./util");
|
|
10
11
|
/**
|
|
11
12
|
* Commands of the fleet management to this system: start, stop or restart an instance (as admin does it,
|
|
@@ -72,12 +73,23 @@ function instanceRefusal(id, action, own, obj, host) {
|
|
|
72
73
|
if (obj.common.host !== host) {
|
|
73
74
|
return `Instanz ${id} gehört zum Host ${obj.common.host}, nicht zu ${host}`;
|
|
74
75
|
}
|
|
76
|
+
if ((0, instances_1.onlyWww)(obj)) {
|
|
77
|
+
return `${id} hat keinen eigenen Prozess (nur Dateien für web)`;
|
|
78
|
+
}
|
|
79
|
+
if (obj.common.mode === 'none' || obj.common.mode === 'extension') {
|
|
80
|
+
return `${id} hat keinen eigenen Prozess (Modus ${obj.common.mode})`;
|
|
81
|
+
}
|
|
75
82
|
if (id === own && action === 'stop') {
|
|
76
83
|
return 'bee stoppen trennt die Anlage von der Flottenverwaltung; das geht nur am Gerät';
|
|
77
84
|
}
|
|
78
85
|
if (action === 'restart' && !obj.common.enabled) {
|
|
79
86
|
return `Instanz ${id} ist ausgeschaltet; starten statt neu starten`;
|
|
80
87
|
}
|
|
88
|
+
const web = (0, instances_1.webExtensionOf)(obj);
|
|
89
|
+
if (action === 'restart' && web) {
|
|
90
|
+
// web ignores a write of the object that changes nothing
|
|
91
|
+
return `${id} läuft als Erweiterung in ${(0, instances_1.webText)(web)} und hat keinen eigenen Prozess; dafür ${(0, instances_1.webText)(web)} neu starten`;
|
|
92
|
+
}
|
|
81
93
|
return null;
|
|
82
94
|
}
|
|
83
95
|
exports.ACTION_DONE = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/lib/commands.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/lib/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Whether an instance runs. Most instances have a process of their own and report it in
|
|
4
|
+
* system.adapter.<id>.alive. An adapter with a web extension that is set to run inside a web instance
|
|
5
|
+
* (common.webExtension and native.webInstance, the rule of admin) has no process of its own: its alive
|
|
6
|
+
* stays false while it runs inside web. It runs when its web instance runs ("*": any of them) and it does
|
|
7
|
+
* not report the opposite in its state info.extension.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.webExtensionOf = webExtensionOf;
|
|
11
|
+
exports.instanceRunning = instanceRunning;
|
|
12
|
+
exports.onlyWww = onlyWww;
|
|
13
|
+
exports.webText = webText;
|
|
14
|
+
/**
|
|
15
|
+
* The web instance an instance runs in as a web extension, e.g. "web.0", "*" for every web instance;
|
|
16
|
+
* undefined if it has a process of its own.
|
|
17
|
+
*
|
|
18
|
+
* @param obj the object system.adapter.<id>
|
|
19
|
+
*/
|
|
20
|
+
function webExtensionOf(obj) {
|
|
21
|
+
const web = obj.native?.webInstance;
|
|
22
|
+
if (obj.common.mode !== 'daemon' ||
|
|
23
|
+
!obj.common.enabled ||
|
|
24
|
+
!obj.common.webExtension ||
|
|
25
|
+
typeof web !== 'string' ||
|
|
26
|
+
!web) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
return web.replace(/^system\.adapter\./, '');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Whether an instance runs, also as a web extension.
|
|
33
|
+
*
|
|
34
|
+
* @param obj the object system.adapter.<id>
|
|
35
|
+
* @param readState reads a foreign state
|
|
36
|
+
* @param webInstances the enabled web instances, e.g. ["web.0"]; only asked for "*"
|
|
37
|
+
*/
|
|
38
|
+
async function instanceRunning(obj, readState, webInstances) {
|
|
39
|
+
const web = webExtensionOf(obj);
|
|
40
|
+
if (!web) {
|
|
41
|
+
return !!(await readState(`${obj._id}.alive`))?.val;
|
|
42
|
+
}
|
|
43
|
+
const id = obj._id.replace(/^system\.adapter\./, '');
|
|
44
|
+
if ((await readState(`${id}.info.extension`))?.val === false) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
for (const w of web === '*' ? await webInstances() : [web]) {
|
|
48
|
+
if ((await readState(`system.adapter.${w}.alive`))?.val) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* An adapter that only brings files for web (common.onlyWWW, e.g. material): js-controller starts no
|
|
56
|
+
* process for it, except for the old vis.
|
|
57
|
+
*
|
|
58
|
+
* @param obj the object system.adapter.<id>
|
|
59
|
+
*/
|
|
60
|
+
function onlyWww(obj) {
|
|
61
|
+
return !!obj.common.onlyWWW && obj.common.name !== 'vis';
|
|
62
|
+
}
|
|
63
|
+
/** "web.0", or "web" for every web instance */
|
|
64
|
+
function webText(web) {
|
|
65
|
+
return web === '*' ? 'web' : web;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instances.js","sourceRoot":"","sources":["../../src/lib/instances.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAUH,wCAYC;AASD,0CAmBC;AAQD,0BAEC;AAGD,0BAEC;AA7DD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAA4B;IACvD,MAAM,GAAG,GAAI,GAAG,CAAC,MAA8C,EAAE,WAAW,CAAC;IAC7E,IACI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC5B,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;QACnB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY;QACxB,OAAO,GAAG,KAAK,QAAQ;QACvB,CAAC,GAAG,EACN,CAAC;QACC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACjC,GAA4B,EAC5B,SAAsB,EACtB,YAAqC;IAErC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACxD,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,MAAM,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,GAA4B;IAChD,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;AAC7D,CAAC;AAED,+CAA+C;AAC/C,SAAgB,OAAO,CAAC,GAAW;IAC/B,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACrC,CAAC"}
|
package/build/lib/inventory.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.installedVersions = installedVersions;
|
|
|
11
11
|
const node_child_process_1 = require("node:child_process");
|
|
12
12
|
const promises_1 = require("node:fs/promises");
|
|
13
13
|
const node_os_1 = __importDefault(require("node:os"));
|
|
14
|
+
const instances_1 = require("./instances");
|
|
14
15
|
/**
|
|
15
16
|
* Collects the inventory of this ioBroker system. Versions and system data only;
|
|
16
17
|
* no measured values of the end customer (data minimization).
|
|
@@ -90,14 +91,25 @@ async function collectInventory(adapter, opts) {
|
|
|
90
91
|
});
|
|
91
92
|
const instances = {};
|
|
92
93
|
let offDevice = false;
|
|
94
|
+
// web instances on any host, for extensions that run in every one of them
|
|
95
|
+
const webInstances = () => Promise.resolve(instanceRows.rows
|
|
96
|
+
.map(r => r.value)
|
|
97
|
+
.filter(o => o?.common.name === 'web' && o.common.enabled)
|
|
98
|
+
.map(o => o._id.replace(/^system\.adapter\./, '')));
|
|
93
99
|
for (const row of instanceRows.rows) {
|
|
94
100
|
const obj = row.value;
|
|
95
101
|
if (!obj || obj.common.host !== adapter.host) {
|
|
96
102
|
continue;
|
|
97
103
|
}
|
|
98
104
|
const id = obj._id.replace(/^system\.adapter\./, '');
|
|
99
|
-
const
|
|
100
|
-
instances[id] = {
|
|
105
|
+
const web = (0, instances_1.webExtensionOf)(obj);
|
|
106
|
+
instances[id] = {
|
|
107
|
+
enabled: !!obj.common.enabled,
|
|
108
|
+
alive: await (0, instances_1.instanceRunning)(obj, sid => adapter.getForeignStateAsync(sid), webInstances),
|
|
109
|
+
mode: obj.common.mode,
|
|
110
|
+
...(web ? { webInstance: web } : {}),
|
|
111
|
+
...((0, instances_1.onlyWww)(obj) ? { onlyWWW: true } : {}),
|
|
112
|
+
};
|
|
101
113
|
if (obj.common.name === 'backitup' && obj.common.enabled) {
|
|
102
114
|
const native = obj.native;
|
|
103
115
|
offDevice ||= OFF_DEVICE_KEYS.some(k => native[k] === true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/lib/inventory.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/lib/inventory.ts"],"names":[],"mappings":"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"}
|
package/build/lib/jobs.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.JobManager = void 0;
|
|
4
7
|
const node_child_process_1 = require("node:child_process");
|
|
5
8
|
const node_fs_1 = require("node:fs");
|
|
6
9
|
const promises_1 = require("node:fs/promises");
|
|
7
10
|
const node_path_1 = require("node:path");
|
|
11
|
+
const semver_1 = __importDefault(require("semver"));
|
|
12
|
+
const node_1 = require("./node");
|
|
8
13
|
const planner_1 = require("./planner");
|
|
9
14
|
const util_1 = require("./util");
|
|
10
15
|
function pidAlive(pid) {
|
|
@@ -104,12 +109,13 @@ class JobManager {
|
|
|
104
109
|
profileName: profile.name,
|
|
105
110
|
profileHash: profile.hash,
|
|
106
111
|
retry: desired.retry,
|
|
107
|
-
targets: Object.fromEntries(steps.map(s => [s.adapter, s.to ?? null])),
|
|
112
|
+
targets: Object.fromEntries(steps.filter(s => s.adapter).map(s => [s.adapter, s.to ?? null])),
|
|
108
113
|
state: 'preflight',
|
|
109
114
|
detail: '',
|
|
110
115
|
steps: all,
|
|
111
116
|
phase: 'apply',
|
|
112
117
|
createdAt: Date.now(),
|
|
118
|
+
...(Object.keys(files).length ? { files } : {}),
|
|
113
119
|
};
|
|
114
120
|
await this.save();
|
|
115
121
|
await this.spawnRunner('apply', all, files);
|
|
@@ -125,6 +131,9 @@ class JobManager {
|
|
|
125
131
|
if (this.job.phase === 'apply' || this.job.phase === 'rollback') {
|
|
126
132
|
await this.pollRunner();
|
|
127
133
|
}
|
|
134
|
+
else if (this.job.phase === 'node') {
|
|
135
|
+
await this.pollNode();
|
|
136
|
+
}
|
|
128
137
|
else if (this.job.phase === 'verify') {
|
|
129
138
|
await this.verify();
|
|
130
139
|
}
|
|
@@ -142,7 +151,10 @@ class JobManager {
|
|
|
142
151
|
if (!runner) {
|
|
143
152
|
return;
|
|
144
153
|
}
|
|
145
|
-
const finished = runner.phase === 'done' ||
|
|
154
|
+
const finished = runner.phase === 'done' ||
|
|
155
|
+
runner.phase === 'failed' ||
|
|
156
|
+
runner.phase === 'halted' ||
|
|
157
|
+
runner.phase === 'node';
|
|
146
158
|
if (!finished && runner.phase === 'running' && !pidAlive(runner.pid)) {
|
|
147
159
|
// runner died (power loss, reboot)
|
|
148
160
|
runner.phase = 'failed';
|
|
@@ -163,7 +175,10 @@ class JobManager {
|
|
|
163
175
|
}
|
|
164
176
|
if (job.phase === 'apply') {
|
|
165
177
|
job.steps = runner.steps;
|
|
166
|
-
if (runner.phase === '
|
|
178
|
+
if (runner.phase === 'node') {
|
|
179
|
+
await this.startNode();
|
|
180
|
+
}
|
|
181
|
+
else if (runner.phase === 'done') {
|
|
167
182
|
job.phase = 'verify';
|
|
168
183
|
job.verifyStartedAt = Date.now();
|
|
169
184
|
await this.setState('verify', 'Instanzen und Log werden geprüft');
|
|
@@ -185,6 +200,110 @@ class JobManager {
|
|
|
185
200
|
}
|
|
186
201
|
await this.finish(job.halted && ok ? 'waiting' : 'blocked', detail);
|
|
187
202
|
}
|
|
203
|
+
/** Time the agent gives the instances under the new Node.js; the script waits 15 minutes longer */
|
|
204
|
+
get nodeWaitSeconds() {
|
|
205
|
+
return Math.max(this.deps.startTimeoutSeconds, 600);
|
|
206
|
+
}
|
|
207
|
+
async startNode() {
|
|
208
|
+
const job = this.job;
|
|
209
|
+
const step = job.steps.find(s => s.action === 'node' && s.status === 'pending');
|
|
210
|
+
step.status = 'running';
|
|
211
|
+
step.ts = Date.now();
|
|
212
|
+
job.phase = 'node';
|
|
213
|
+
job.node = { unit: (0, node_1.nodeUnit)(), startedAt: Date.now(), instances: await this.deps.running() };
|
|
214
|
+
// saved before: the script stops ioBroker and with it this process
|
|
215
|
+
await this.setState('rollout', `Node.js ${step.to} wird installiert, ioBroker startet dafür neu`);
|
|
216
|
+
try {
|
|
217
|
+
await this.deps.launchNode(step.to, job.node.unit, this.nodeWaitSeconds + 900);
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
await this.nodeFailed(`Node.js ${step.to} nicht gestartet: ${e.message}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/** The script for Node.js runs, or ran while this process was gone */
|
|
224
|
+
async pollNode() {
|
|
225
|
+
const job = this.job;
|
|
226
|
+
const step = job.steps.find(s => s.action === 'node');
|
|
227
|
+
const node = job.node;
|
|
228
|
+
const dir = this.deps.dataDir;
|
|
229
|
+
const status = await (0, node_1.readNodeStatus)(dir);
|
|
230
|
+
if (status?.state === 'restored') {
|
|
231
|
+
await this.nodeFailed(`Node.js ${step.to}: ${status.detail}; Node.js ${step.from} wiederhergestellt`);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
if (status?.state === 'failed') {
|
|
235
|
+
await this.nodeFailed(`Node.js ${step.to}: ${status.detail}`);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
const verdict = await (0, node_1.readVerdict)(dir);
|
|
239
|
+
if (status?.state === 'ok' || verdict?.ok) {
|
|
240
|
+
await this.nodeDone();
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const interrupted = `Node.js ${step.to}: Skript wurde unterbrochen, jetzt läuft Node.js ${process.version}; siehe node-update.log`;
|
|
244
|
+
if (status?.state !== 'waiting') {
|
|
245
|
+
// running: the script works (this process normally does not live that long)
|
|
246
|
+
if (Date.now() - node.startedAt > 60_000 && !(await this.deps.unitActive(node.unit))) {
|
|
247
|
+
await this.nodeFailed(interrupted);
|
|
248
|
+
}
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (verdict) {
|
|
252
|
+
// negative: the script goes back to the old version and restarts ioBroker
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (!(await this.deps.unitActive(node.unit))) {
|
|
256
|
+
await this.nodeFailed(interrupted);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (String(semver_1.default.major(process.version)) !== step.to) {
|
|
260
|
+
await (0, node_1.writeVerdict)(dir, false, `Der Agent läuft weiter unter Node.js ${process.version}`);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const running = new Set(await this.deps.running());
|
|
264
|
+
const down = node.instances.filter(id => !running.has(id));
|
|
265
|
+
if (!down.length) {
|
|
266
|
+
await (0, node_1.writeVerdict)(dir, true);
|
|
267
|
+
await this.nodeDone();
|
|
268
|
+
}
|
|
269
|
+
else if (Date.now() - status.ts > this.nodeWaitSeconds * 1000) {
|
|
270
|
+
await (0, node_1.writeVerdict)(dir, false, `Unter Node.js ${process.version} laufen nicht: ${down.join(', ')}`);
|
|
271
|
+
await this.setState('rollout', `Instanzen starten nicht, zurück zu Node.js ${step.from}`);
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
await this.setState('rollout', `Node.js ${process.version}: warte auf ${down.join(', ')}`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/** Node.js is new: the rest of the steps, or the verification */
|
|
278
|
+
async nodeDone() {
|
|
279
|
+
const job = this.job;
|
|
280
|
+
const step = job.steps.find(s => s.action === 'node');
|
|
281
|
+
step.status = 'ok';
|
|
282
|
+
step.detail = `${step.from} → ${process.version}`;
|
|
283
|
+
this.deps.log.info(`Node.js updated: ${step.detail}`);
|
|
284
|
+
if (job.steps.some(s => s.status === 'pending')) {
|
|
285
|
+
job.phase = 'apply';
|
|
286
|
+
await this.save();
|
|
287
|
+
await this.spawnRunner('apply', job.steps, job.files);
|
|
288
|
+
await this.setState('rollout', `Node.js ${process.version}, weiter mit den Adaptern`);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
job.phase = 'verify';
|
|
292
|
+
job.verifyStartedAt = Date.now();
|
|
293
|
+
await this.setState('verify', 'Instanzen und Log werden geprüft');
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/** Nothing after the backup has changed (the script went back to the old version, if it got so far) */
|
|
297
|
+
async nodeFailed(reason) {
|
|
298
|
+
const job = this.job;
|
|
299
|
+
const step = job.steps.find(s => s.action === 'node');
|
|
300
|
+
step.status = 'error';
|
|
301
|
+
step.detail = reason;
|
|
302
|
+
job.steps.filter(s => s.status === 'pending').forEach(s => (s.status = 'skipped'));
|
|
303
|
+
job.failure = reason;
|
|
304
|
+
this.deps.log.warn(reason);
|
|
305
|
+
await this.finish('blocked', reason);
|
|
306
|
+
}
|
|
188
307
|
async startRollback(reason, halted = false) {
|
|
189
308
|
const job = this.job;
|
|
190
309
|
job.failure = reason;
|
package/build/lib/jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/lib/jobs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/lib/jobs.ts"],"names":[],"mappings":"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"}
|