@forgezero/agent 0.1.31 → 0.1.32
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/dist/agent-heartbeat.d.ts +10 -2
- package/dist/agent-heartbeat.js +396 -54
- package/dist/agent-update-helper.d.ts +41 -2
- package/dist/agent-update-helper.js +360 -43
- package/dist/agent-update.d.ts +1 -0
- package/dist/agent-update.js +34 -2
- package/dist/fz-agent.js +418 -73
- package/dist/fz.js +3 -1
- package/dist/index.d.ts +2 -2
- package/dist/provision.js +363 -49
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/agent-update.js
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
import { createHash, timingSafeEqual, randomUUID } from "node:crypto";
|
|
3
3
|
import {
|
|
4
4
|
chmodSync,
|
|
5
|
+
closeSync,
|
|
5
6
|
existsSync,
|
|
7
|
+
fsyncSync,
|
|
6
8
|
mkdirSync,
|
|
9
|
+
openSync,
|
|
7
10
|
readFileSync,
|
|
8
11
|
readlinkSync,
|
|
9
12
|
renameSync,
|
|
@@ -17,6 +20,25 @@ var DEFAULT_AGENT_UPDATE_SOCKET = "/run/forgezero-update/helper.sock";
|
|
|
17
20
|
var MAX_AGENT_TARBALL_BYTES = 32 * 1024 * 1024;
|
|
18
21
|
var VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
|
|
19
22
|
var REGISTRY = "registry.npmjs.org";
|
|
23
|
+
var syncPath = (path) => {
|
|
24
|
+
const descriptor = openSync(path, "r");
|
|
25
|
+
try {
|
|
26
|
+
fsyncSync(descriptor);
|
|
27
|
+
} finally {
|
|
28
|
+
closeSync(descriptor);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
var syncReleaseDirectory = (directory) => {
|
|
32
|
+
for (const path of [
|
|
33
|
+
join(directory, "package.json"),
|
|
34
|
+
join(directory, "dist", "fz-agent.js"),
|
|
35
|
+
join(directory, "dist", "fz.js"),
|
|
36
|
+
join(directory, "dist"),
|
|
37
|
+
directory,
|
|
38
|
+
dirname(directory)
|
|
39
|
+
])
|
|
40
|
+
syncPath(path);
|
|
41
|
+
};
|
|
20
42
|
function validateAgentRelease(release) {
|
|
21
43
|
if (release?.package !== "@forgezero/agent")
|
|
22
44
|
throw new Error("agent update package is fixed");
|
|
@@ -135,16 +157,24 @@ async function stageAgentRelease(releaseInput, options) {
|
|
|
135
157
|
]
|
|
136
158
|
}, "agent update extraction");
|
|
137
159
|
await validateReleaseDirectory(unpacked, release, run);
|
|
138
|
-
if (!existsSync(finalDirectory))
|
|
160
|
+
if (!existsSync(finalDirectory)) {
|
|
139
161
|
renameSync(unpacked, finalDirectory);
|
|
140
|
-
|
|
162
|
+
syncReleaseDirectory(finalDirectory);
|
|
163
|
+
} else
|
|
141
164
|
await validateReleaseDirectory(finalDirectory, release, run);
|
|
142
165
|
if (!existsSync(currentLink)) {
|
|
143
166
|
throw new Error("agent update requires an active immutable release to roll back to");
|
|
144
167
|
}
|
|
145
168
|
const previousTarget = readlinkSync(currentLink);
|
|
169
|
+
if (previousTarget !== join("versions", options.currentVersion)) {
|
|
170
|
+
throw new Error("agent update current release does not match the running version");
|
|
171
|
+
}
|
|
172
|
+
if (!existsSync(join(root, previousTarget))) {
|
|
173
|
+
throw new Error("agent update rollback release is missing");
|
|
174
|
+
}
|
|
146
175
|
return {
|
|
147
176
|
version: release.version,
|
|
177
|
+
fromVersion: options.currentVersion,
|
|
148
178
|
directory: finalDirectory,
|
|
149
179
|
previousTarget,
|
|
150
180
|
nextTarget: join("versions", release.version),
|
|
@@ -159,6 +189,7 @@ function selectAgentRelease(staged) {
|
|
|
159
189
|
try {
|
|
160
190
|
symlinkSync(staged.nextTarget, next);
|
|
161
191
|
renameSync(next, staged.currentLink);
|
|
192
|
+
syncPath(dirname(staged.currentLink));
|
|
162
193
|
} finally {
|
|
163
194
|
rmSync(next, { force: true });
|
|
164
195
|
}
|
|
@@ -168,6 +199,7 @@ function restoreAgentRelease(staged) {
|
|
|
168
199
|
try {
|
|
169
200
|
symlinkSync(staged.previousTarget, next);
|
|
170
201
|
renameSync(next, staged.currentLink);
|
|
202
|
+
syncPath(dirname(staged.currentLink));
|
|
171
203
|
} finally {
|
|
172
204
|
rmSync(next, { force: true });
|
|
173
205
|
}
|