@usine/executor 0.4.1-next.255.gf24b4a3 → 0.4.1-next.257.ga22dc8e
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 +5 -4
- package/dist/executor.d.ts +5 -6
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js.map +1 -1
- package/dist/ssh/model.d.ts +3 -1
- package/dist/ssh/model.d.ts.map +1 -1
- package/dist/ssh/model.js.map +1 -1
- package/dist/ssh/provisioner/boat.d.ts +1 -2
- package/dist/ssh/provisioner/boat.d.ts.map +1 -1
- package/dist/ssh/provisioner/boat.js +6 -10
- package/dist/ssh/provisioner/boat.js.map +1 -1
- package/dist/ssh/provisioner/drivers.d.ts +13 -0
- package/dist/ssh/provisioner/drivers.d.ts.map +1 -0
- package/dist/ssh/provisioner/drivers.js +91 -0
- package/dist/ssh/provisioner/drivers.js.map +1 -0
- package/dist/ssh/provisioner/hetzner.d.ts +1 -2
- package/dist/ssh/provisioner/hetzner.d.ts.map +1 -1
- package/dist/ssh/provisioner/hetzner.js +6 -13
- package/dist/ssh/provisioner/hetzner.js.map +1 -1
- package/dist/ssh/provisioner/machines.d.ts +2 -2
- package/dist/ssh/provisioner/machines.d.ts.map +1 -1
- package/dist/ssh/provisioner/machines.js +120 -108
- package/dist/ssh/provisioner/machines.js.map +1 -1
- package/dist/ssh/provisioner/model.d.ts +4 -6
- package/dist/ssh/provisioner/model.d.ts.map +1 -1
- package/dist/ssh/provisioner/model.js.map +1 -1
- package/dist/ssh/ssh.d.ts.map +1 -1
- package/dist/ssh/ssh.js +4 -1
- package/dist/ssh/ssh.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machines.d.ts","sourceRoot":"","sources":["../../../src/ssh/provisioner/machines.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAEV,SAAS,EAET,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"machines.d.ts","sourceRoot":"","sources":["../../../src/ssh/provisioner/machines.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAEV,SAAS,EAET,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAIL,MAAM,EAEN,UAAU,EACV,MAAM,EACN,IAAI,EAIL,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,KAAK,aAAa,EAClB,sBAAsB,EAEtB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,KAAK,eAAe,EACpB,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AAClG,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,YAAY,CAAC;AA0FpB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,CAClB,KAAK,EAAE,cAAc,EACrB,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,aAAa,KACnB,UAAU,CAAC;IAChB,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,CACtB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,EAChC,qBAAqB,EAAE,MAAM,KAC1B,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,KACpB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CACrB,kBAAkB,EAClB,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,qBAAqB,CAC5F,CAAC;CACH;AAiBD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;8BA8xBA,UAAU,aAAa,SAAS;;;;;;;;yBAwErC,UAAU;gKAuBtC,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { boatTailnetsFor } from "./tailnet/bootstrap.js";
|
|
2
2
|
import { HarnessUnavailableError } from "@usine/core/agent/capability";
|
|
3
3
|
import { RemoteShell, SSH_FAILURE } from "@usine/agents/child-host";
|
|
4
|
-
import { Array as Arr,
|
|
5
|
-
import { homedir } from "node:os";
|
|
4
|
+
import { Array as Arr, DateTime, Duration, Effect, Exit, FileSystem, Option, Path, Random, Ref, Result, } from "effect";
|
|
6
5
|
import { ExecutorOperationError, MachineCheck, MachineGrant, MachineHold, MachineStatus, MachineUnavailableError, WorkerCapabilityError, WorkerMachines, } from "../../executor.js";
|
|
7
6
|
import { gatewayHolds, provisionedApiKey } from "../api-keys.js";
|
|
8
7
|
import { hostKeyAlias, knownHostsLine, } from "../workers.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { attemptTag, tagValue, machineName, } from "./model.js";
|
|
8
|
+
import { machineDriversFor } from "./drivers.js";
|
|
9
|
+
import { attemptTag, machineName, } from "./model.js";
|
|
12
10
|
/**
|
|
13
11
|
* A script that waits for cloud-init to finish, if the machine has it, creates the Worker root
|
|
14
12
|
* `$1`, and waits up to a minute for Docker to answer, if the machine has it.
|
|
@@ -66,8 +64,6 @@ const provisionerOf = (entry) => entry.address.machine._tag === "Provisioned"
|
|
|
66
64
|
: Option.none();
|
|
67
65
|
/** Returns `length` random hex digits. */
|
|
68
66
|
const randomHex = (length) => Effect.forEach(Array.from({ length }), () => Random.nextIntBetween(0, 16)).pipe(Effect.map((digits) => digits.map((digit) => digit.toString(16)).join("")));
|
|
69
|
-
/** Returns the absolute path of a key file given as absolute or `~/`. */
|
|
70
|
-
const expandHome = (file) => file.startsWith("~/") ? `${homedir()}/${file.slice(2)}` : file;
|
|
71
67
|
const operationError = (operation) => (error) => new ExecutorOperationError({ operation, message: error.message, cause: error });
|
|
72
68
|
/**
|
|
73
69
|
* Returns the machines of the SSH executor's provisioned Workers: the `WorkerMachines` port for
|
|
@@ -84,50 +80,18 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
84
80
|
const checkedOn = yield* Ref.make(new Map());
|
|
85
81
|
const earlierMachines = yield* Ref.make(new Map());
|
|
86
82
|
const process = yield* randomHex(12);
|
|
87
|
-
const
|
|
83
|
+
const readyTimeoutFor = (entry) => Duration.fromInputUnsafe(settings.machineReadyTimeout ??
|
|
84
|
+
Duration.seconds(entry.address.machine._tag === "Provisioned"
|
|
85
|
+
? entry.address.machine.provisioner.timings.sshWait
|
|
86
|
+
: 600));
|
|
88
87
|
const interval = Effect.sleep(settings.machinePollInterval ?? "3 seconds");
|
|
89
88
|
const knownHostsDirectory = settings.knownHostsDirectory === undefined
|
|
90
89
|
? yield* fs.makeTempDirectoryScoped({ prefix: "usine-known-hosts-" })
|
|
91
90
|
: settings.knownHostsDirectory;
|
|
92
91
|
yield* fs.makeDirectory(knownHostsDirectory, { recursive: true });
|
|
93
92
|
const knownHostsFile = (provider, id) => path.join(knownHostsDirectory, `${provider}-${id}`);
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
const identity = Option.getOrUndefined(entry.address.identityFile);
|
|
97
|
-
const file = identity === undefined ? undefined : `${expandHome(identity)}.pub`;
|
|
98
|
-
const text = file === undefined
|
|
99
|
-
? Option.none()
|
|
100
|
-
: yield* fs.readFileString(file).pipe(Effect.option);
|
|
101
|
-
const key = Option.filter(Option.map(text, (content) => content.trim()), (content) => content.length > 0);
|
|
102
|
-
if (Option.isSome(key))
|
|
103
|
-
return key.value;
|
|
104
|
-
return yield* new WorkerCapabilityError({
|
|
105
|
-
worker,
|
|
106
|
-
capability: "credentials",
|
|
107
|
-
message: `Provisioned worker "${worker}" needs the public key of identity_file at ${file ?? "<identity_file>.pub"}, which it adds to each Boat sandbox`,
|
|
108
|
-
cause: new Error(`no public key at ${file ?? "identity_file"}`),
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
const buildDriver = Effect.fn("SshExecutor.machineDriver")(function* (worker) {
|
|
112
|
-
const entry = yield* options.workerFor(worker);
|
|
113
|
-
const provisioner = provisionerOf(entry);
|
|
114
|
-
if (Option.isNone(provisioner))
|
|
115
|
-
return yield* new WorkerCapabilityError({
|
|
116
|
-
worker,
|
|
117
|
-
capability: "machine",
|
|
118
|
-
message: `SSH worker "${worker}" has a machine of its own and creates none`,
|
|
119
|
-
cause: new Error("long-lived SSH worker"),
|
|
120
|
-
});
|
|
121
|
-
const value = provisioner.value;
|
|
122
|
-
switch (value.provider) {
|
|
123
|
-
case "hetzner":
|
|
124
|
-
return yield* hetznerDriverFor(worker, value, Option.isSome(entry.gateway), settings.providerEndpoints?.hetzner ?? HETZNER_API);
|
|
125
|
-
case "boat":
|
|
126
|
-
return yield* boatDriverFor(worker, value, yield* readPublicKey(entry), settings.providerEndpoints?.boat ?? BOAT_API);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
const drivers = yield* Cache.make({ capacity: Number.POSITIVE_INFINITY, lookup: buildDriver });
|
|
130
|
-
const driverFor = (worker) => Cache.get(drivers, worker);
|
|
93
|
+
const drivers = yield* machineDriversFor(options);
|
|
94
|
+
const driverFor = drivers.get;
|
|
131
95
|
const register = (fields) => Ref.getAndUpdate(nextHold, (count) => count + 1).pipe(Effect.map((count) => ({
|
|
132
96
|
...fields,
|
|
133
97
|
hold: MachineHold.make(`machine-${String(count)}`),
|
|
@@ -158,7 +122,7 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
158
122
|
const cached = (yield* Ref.get(earlierMachines)).get(worker);
|
|
159
123
|
if (cached !== undefined)
|
|
160
124
|
return cached;
|
|
161
|
-
const listed = yield* driver.list(instance, worker);
|
|
125
|
+
const listed = yield* driver.list(instance, Option.some(worker));
|
|
162
126
|
yield* Ref.update(earlierMachines, (current) => new Map(current).set(worker, listed));
|
|
163
127
|
yield* Effect.logInfo("Listed the machines of a provisioned Worker for its earlier Attempts", {
|
|
164
128
|
worker,
|
|
@@ -297,16 +261,27 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
297
261
|
}
|
|
298
262
|
});
|
|
299
263
|
/**
|
|
300
|
-
* Runs the machine preflight
|
|
264
|
+
* Runs the machine preflight when its interval elapses, which a provisioned
|
|
301
265
|
* Worker's preflight at `usine up` can't. Each machine runs one Attempt, so the container
|
|
302
266
|
* limits it derives are for one Attempt; the Worker's machines get them until the next check.
|
|
303
267
|
*/
|
|
304
|
-
const
|
|
268
|
+
const checkMachine = Effect.fn("SshExecutor.checkMachine")(function* (machine, brains) {
|
|
305
269
|
const worker = machine.address.name;
|
|
306
|
-
|
|
307
|
-
|
|
270
|
+
yield* Effect.annotateCurrentSpan({ worker, host: machine.shell.destination });
|
|
271
|
+
const now = DateTime.toEpochMillis(yield* DateTime.now);
|
|
272
|
+
const last = (yield* Ref.get(checkedOn)).get(worker);
|
|
273
|
+
const provisioner = machine.address.machine;
|
|
274
|
+
if (provisioner._tag !== "Provisioned")
|
|
275
|
+
return yield* Effect.die(new Error("expected a provisioned machine"));
|
|
276
|
+
if (last !== undefined &&
|
|
277
|
+
now - last < provisioner.provisioner.timings.machineCheckInterval * 1000) {
|
|
278
|
+
yield* Effect.logDebug("Machine check interval has not elapsed", {
|
|
279
|
+
worker,
|
|
280
|
+
lastCheckedAt: last,
|
|
281
|
+
});
|
|
308
282
|
return Option.none();
|
|
309
|
-
|
|
283
|
+
}
|
|
284
|
+
yield* Effect.logInfo("Checking a provisioned Worker machine: Git, memory, the Gateway, Docker, the container limits, and the harnesses", { worker, host: machine.shell.destination, brains: brains.length });
|
|
310
285
|
const report = yield* options.verifyMachine(machine, brains, 1).pipe(Effect.catchTags({
|
|
311
286
|
ExecutorOperationError: (error) => Effect.fail(new WorkerCapabilityError({
|
|
312
287
|
worker,
|
|
@@ -321,24 +296,44 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
321
296
|
cause: error,
|
|
322
297
|
})),
|
|
323
298
|
}));
|
|
324
|
-
|
|
299
|
+
const checkedAt = DateTime.toEpochMillis(yield* DateTime.now);
|
|
300
|
+
yield* Ref.update(checkedOn, (current) => new Map(current).set(worker, checkedAt));
|
|
325
301
|
return Option.some(new MachineCheck({ brains, containerLimits: report.containerLimits }));
|
|
326
302
|
});
|
|
327
|
-
const timedOut = (worker, provider) => new MachineUnavailableError({
|
|
303
|
+
const timedOut = (worker, provider, readyTimeout) => new MachineUnavailableError({
|
|
328
304
|
worker,
|
|
329
305
|
provider,
|
|
330
306
|
reason: "timeout",
|
|
331
307
|
message: `The new ${provider} machine of worker "${worker}" didn't answer over SSH within ${Duration.format(readyTimeout)}`,
|
|
332
308
|
});
|
|
333
|
-
const create = Effect.fn("SshExecutor.createMachine")(function* (worker, runId, brains) {
|
|
334
|
-
yield* Effect.annotateCurrentSpan({ worker, runId });
|
|
309
|
+
const create = Effect.fn("SshExecutor.createMachine")(function* (worker, runId, attemptId, brains) {
|
|
310
|
+
yield* Effect.annotateCurrentSpan({ worker, runId, attemptId });
|
|
335
311
|
const defect = (error) => Effect.die(error);
|
|
336
312
|
const entry = yield* options
|
|
337
313
|
.workerFor(worker)
|
|
338
314
|
.pipe(Effect.catchTags({ ExecutorOperationError: defect, CredentialUnavailableError: defect }));
|
|
339
315
|
const driver = yield* driverFor(worker).pipe(Effect.catchTags({ ExecutorOperationError: defect, CredentialUnavailableError: defect }));
|
|
316
|
+
yield* Effect.gen(function* () {
|
|
317
|
+
const earlier = yield* driver.list(instance, Option.some(worker));
|
|
318
|
+
for (const machine of earlier.filter(({ tags }) => Option.contains(tags.attempt, attemptTag(attemptId)))) {
|
|
319
|
+
yield* destroy(driver, worker, machine.id);
|
|
320
|
+
const previous = [...(yield* Ref.get(held)).values()].filter((entry) => Option.contains(entry.id, machine.id));
|
|
321
|
+
yield* Effect.forEach(previous, ({ hold }) => unregister(hold), { discard: true });
|
|
322
|
+
yield* Effect.logInfo("Deleted a machine from an earlier failed creation before retrying", {
|
|
323
|
+
worker,
|
|
324
|
+
attemptId,
|
|
325
|
+
machine: machine.id,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}).pipe(Effect.mapError((error) => new MachineUnavailableError({
|
|
329
|
+
worker,
|
|
330
|
+
provider: driver.provider,
|
|
331
|
+
reason: "provider",
|
|
332
|
+
message: `Could not clean up the attempt's earlier machine creation: ${error.message}`,
|
|
333
|
+
})));
|
|
334
|
+
const readyTimeout = readyTimeoutFor(entry);
|
|
340
335
|
const since = yield* DateTime.now;
|
|
341
|
-
const tags = { instance, worker, run: runId, process, attempt:
|
|
336
|
+
const tags = { instance, worker, run: runId, process, attempt: attemptId };
|
|
342
337
|
const { hold } = yield* register({
|
|
343
338
|
worker,
|
|
344
339
|
provider: driver.provider,
|
|
@@ -346,15 +341,15 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
346
341
|
since,
|
|
347
342
|
id: Option.none(),
|
|
348
343
|
runId: Option.some(runId),
|
|
349
|
-
attemptId: Option.
|
|
344
|
+
attemptId: Option.some(attemptId),
|
|
350
345
|
machine: Option.none(),
|
|
351
|
-
tags: Option.some(tags),
|
|
352
346
|
holder: "lease",
|
|
353
347
|
checkout: false,
|
|
354
348
|
});
|
|
355
|
-
yield* Effect.logInfo("Creating a machine for the
|
|
349
|
+
yield* Effect.logInfo("Creating a machine for the persisted Attempt", {
|
|
356
350
|
worker,
|
|
357
351
|
runId,
|
|
352
|
+
attemptId,
|
|
358
353
|
provider: driver.provider,
|
|
359
354
|
});
|
|
360
355
|
const created = yield* driver
|
|
@@ -369,17 +364,18 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
369
364
|
message: error.message,
|
|
370
365
|
}))))), Effect.tap((machine) => update(hold, (current) => ({ ...current, machine: Option.some(machine) }))), Effect.tap(tailnets.join), Effect.timeoutOrElse({
|
|
371
366
|
duration: readyTimeout,
|
|
372
|
-
orElse: () => Effect.fail(timedOut(worker, driver.provider)),
|
|
367
|
+
orElse: () => Effect.fail(timedOut(worker, driver.provider, readyTimeout)),
|
|
373
368
|
}));
|
|
374
|
-
const prepared = yield* ready.pipe(Effect.flatMap((machine) =>
|
|
369
|
+
const prepared = yield* ready.pipe(Effect.flatMap((machine) => checkMachine(machine, brains).pipe(Effect.map((checked) => ({ machine, checked })))), Effect.onExit((exit) => Exit.isSuccess(exit) ? Effect.void : discard(hold, "the machine didn't become ready")));
|
|
375
370
|
yield* update(hold, (current) => ({
|
|
376
371
|
...current,
|
|
377
372
|
state: "located",
|
|
378
373
|
machine: Option.some(prepared.machine),
|
|
379
374
|
}));
|
|
380
|
-
yield* Effect.logInfo("The machine for the
|
|
375
|
+
yield* Effect.logInfo("The machine for the Attempt is ready", {
|
|
381
376
|
worker,
|
|
382
377
|
runId,
|
|
378
|
+
attemptId,
|
|
383
379
|
provider: driver.provider,
|
|
384
380
|
machine: id,
|
|
385
381
|
host: prepared.machine.shell.destination,
|
|
@@ -394,32 +390,6 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
394
390
|
checked: prepared.checked,
|
|
395
391
|
});
|
|
396
392
|
});
|
|
397
|
-
const assign = Effect.fn("SshExecutor.assignMachine")(function* (hold, attemptId) {
|
|
398
|
-
yield* Effect.annotateCurrentSpan({ hold, attemptId });
|
|
399
|
-
const entry = yield* entryOf(hold);
|
|
400
|
-
const holding = Option.flatMap(entry, (found) => Option.flatMap(found.id, (id) => Option.map(found.tags, (tags) => ({ found, id, tags }))));
|
|
401
|
-
if (Option.isNone(holding))
|
|
402
|
-
return yield* new ExecutorOperationError({
|
|
403
|
-
operation: "prepare",
|
|
404
|
-
message: "The attempt's machine is no longer held",
|
|
405
|
-
cause: new Error(`no machine for hold ${hold}`),
|
|
406
|
-
});
|
|
407
|
-
const { found, id } = holding.value;
|
|
408
|
-
const tags = { ...holding.value.tags, attempt: Option.some(attemptId) };
|
|
409
|
-
const driver = yield* driverFor(found.worker).pipe(Effect.mapError(operationError("prepare")));
|
|
410
|
-
yield* driver.tag(id, tags).pipe(Effect.mapError(operationError("prepare")));
|
|
411
|
-
yield* update(hold, (current) => ({
|
|
412
|
-
...current,
|
|
413
|
-
attemptId: Option.some(attemptId),
|
|
414
|
-
tags: Option.some(tags),
|
|
415
|
-
}));
|
|
416
|
-
yield* Effect.logInfo("The machine is the Attempt's", {
|
|
417
|
-
worker: found.worker,
|
|
418
|
-
machine: id,
|
|
419
|
-
attemptId,
|
|
420
|
-
runId: Option.getOrElse(found.runId, () => "none"),
|
|
421
|
-
});
|
|
422
|
-
});
|
|
423
393
|
/**
|
|
424
394
|
* Looks up the machine that an earlier process created for `entry`'s Attempt and records it
|
|
425
395
|
* in `entry`. Returns `false` if the provider doesn't list one.
|
|
@@ -434,9 +404,10 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
434
404
|
const listed = (yield* earlierMachinesOf(worker, driver)).find(({ tags }) => Option.contains(tags.attempt, attemptTag(attemptId)));
|
|
435
405
|
if (listed === undefined)
|
|
436
406
|
return false;
|
|
407
|
+
const readyTimeout = readyTimeoutFor(workerEntry);
|
|
437
408
|
const machine = yield* machineOf(workerEntry, driver, listed.id, Option.none()).pipe(Effect.timeoutOrElse({
|
|
438
409
|
duration: readyTimeout,
|
|
439
|
-
orElse: () => Effect.fail(timedOut(worker, driver.provider)),
|
|
410
|
+
orElse: () => Effect.fail(timedOut(worker, driver.provider, readyTimeout)),
|
|
440
411
|
}));
|
|
441
412
|
yield* update(entry.hold, (current) => ({
|
|
442
413
|
...current,
|
|
@@ -471,7 +442,6 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
471
442
|
runId: Option.none(),
|
|
472
443
|
attemptId: Option.some(attemptId),
|
|
473
444
|
machine: Option.none(),
|
|
474
|
-
tags: Option.none(),
|
|
475
445
|
holder,
|
|
476
446
|
checkout: false,
|
|
477
447
|
});
|
|
@@ -534,18 +504,14 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
534
504
|
const worker = entry.address.name;
|
|
535
505
|
yield* Effect.annotateCurrentSpan({ worker });
|
|
536
506
|
const driver = yield* driverFor(worker);
|
|
537
|
-
const listed = yield* driver.list(instance, worker);
|
|
507
|
+
const listed = yield* driver.list(instance, Option.some(worker));
|
|
538
508
|
const current = [...(yield* Ref.get(held)).values()].filter((machine) => machine.worker === worker);
|
|
539
509
|
const listedIds = new Set(listed.map(({ id }) => id));
|
|
540
|
-
const creatingRuns = new Set(current.flatMap((entry) => entry.state === "creating" && Option.isNone(entry.id)
|
|
541
|
-
? Option.match(entry.runId, {
|
|
542
|
-
onNone: () => [],
|
|
543
|
-
onSome: (runId) => [tagValue(runId), tagValue(runId, 32)],
|
|
544
|
-
})
|
|
545
|
-
: []));
|
|
546
510
|
const holding = (machine) => current.find((entry) => Option.contains(entry.id, machine.id) ||
|
|
547
|
-
Option.
|
|
511
|
+
(Option.isNone(entry.id) &&
|
|
512
|
+
Option.exists(entry.attemptId, (attemptId) => Option.contains(machine.tags.attempt, attemptTag(attemptId)))));
|
|
548
513
|
let deleted = 0;
|
|
514
|
+
let failed = 0;
|
|
549
515
|
for (const machine of listed) {
|
|
550
516
|
const holder = holding(machine);
|
|
551
517
|
if (holder !== undefined) {
|
|
@@ -553,16 +519,20 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
553
519
|
if (Option.isNone(holder.id))
|
|
554
520
|
yield* update(holder.hold, (found) => ({ ...found, id: Option.some(machine.id) }));
|
|
555
521
|
yield* discard(holder.hold, "an earlier deletion failed");
|
|
522
|
+
if (Option.isSome(yield* entryOf(holder.hold)))
|
|
523
|
+
failed += 1;
|
|
556
524
|
}
|
|
557
525
|
continue;
|
|
558
526
|
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
if (!removed)
|
|
527
|
+
const removed = yield* destroy(driver, worker, machine.id).pipe(Effect.as(true), Effect.tapError((error) => Effect.logWarning("Could not delete a machine no Attempt holds", {
|
|
528
|
+
worker,
|
|
529
|
+
machine: machine.id,
|
|
530
|
+
message: error.message,
|
|
531
|
+
})), Effect.orElseSucceed(() => false));
|
|
532
|
+
if (!removed) {
|
|
533
|
+
failed += 1;
|
|
565
534
|
continue;
|
|
535
|
+
}
|
|
566
536
|
deleted += 1;
|
|
567
537
|
yield* Effect.logInfo("Deleted a machine that no Attempt holds", {
|
|
568
538
|
worker,
|
|
@@ -582,15 +552,57 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
582
552
|
listed: listed.length,
|
|
583
553
|
deleted,
|
|
584
554
|
held: current.length,
|
|
555
|
+
failed,
|
|
585
556
|
});
|
|
557
|
+
return failed;
|
|
586
558
|
});
|
|
587
559
|
const sweep = Effect.fn("SshExecutor.sweepProvisionedMachines")(function* () {
|
|
588
560
|
const provisioned = (yield* options.entries).filter((entry) => Option.isSome(provisionerOf(entry)));
|
|
561
|
+
yield* drivers.warnUnowned(provisioned);
|
|
589
562
|
yield* Effect.forEach(provisioned, (entry) => sweepWorker(entry).pipe(Effect.tapError((error) => Effect.logWarning("Could not sweep the machines of a provisioned Worker", {
|
|
590
563
|
worker: entry.address.name,
|
|
591
564
|
message: error.message,
|
|
592
565
|
})), Effect.ignore), { discard: true });
|
|
593
566
|
});
|
|
567
|
+
const retire = Effect.fn("SshExecutor.sweepRemovedWorker")(function* (worker) {
|
|
568
|
+
yield* Effect.annotateCurrentSpan({ worker });
|
|
569
|
+
yield* Effect.gen(function* () {
|
|
570
|
+
const entry = yield* options.workerFor(worker);
|
|
571
|
+
if (Option.isNone(provisionerOf(entry)))
|
|
572
|
+
return;
|
|
573
|
+
const failed = yield* sweepWorker(entry);
|
|
574
|
+
if (failed > 0)
|
|
575
|
+
return yield* Effect.logWarning("The removed Worker's final sweep could not delete all machines; delete them at the provider using the instance and worker labels", { worker, instance, failed });
|
|
576
|
+
yield* Effect.logInfo("Swept the removed Worker's machines before discarding its provider token", { worker });
|
|
577
|
+
}).pipe(Effect.tapError((error) => Effect.logWarning("The removed Worker's final machine sweep failed; delete its machines at the provider using the instance and worker labels", { worker, instance, message: error.message })), Effect.ignore);
|
|
578
|
+
yield* drivers.forget(worker);
|
|
579
|
+
const remaining = yield* Ref.modify(held, (current) => {
|
|
580
|
+
const next = new Map(current);
|
|
581
|
+
let remaining = 0;
|
|
582
|
+
for (const [hold, entry] of current) {
|
|
583
|
+
if (entry.worker !== worker)
|
|
584
|
+
continue;
|
|
585
|
+
remaining += 1;
|
|
586
|
+
if (entry.state === "deleting")
|
|
587
|
+
next.delete(hold);
|
|
588
|
+
else
|
|
589
|
+
next.set(hold, { ...entry, state: "unlocated", machine: Option.none() });
|
|
590
|
+
}
|
|
591
|
+
return [remaining, next];
|
|
592
|
+
});
|
|
593
|
+
if (remaining > 0)
|
|
594
|
+
yield* Effect.logWarning("Removed Worker still has machines with retained checkouts or failed deletions; restore its configuration to recover them or delete them at the provider", { worker, instance, remaining });
|
|
595
|
+
yield* Ref.update(checkedOn, (current) => {
|
|
596
|
+
const next = new Map(current);
|
|
597
|
+
next.delete(worker);
|
|
598
|
+
return next;
|
|
599
|
+
});
|
|
600
|
+
yield* Ref.update(earlierMachines, (current) => {
|
|
601
|
+
const next = new Map(current);
|
|
602
|
+
next.delete(worker);
|
|
603
|
+
return next;
|
|
604
|
+
});
|
|
605
|
+
});
|
|
594
606
|
const machines = Ref.get(held).pipe(Effect.map((current) => [...current.values()]
|
|
595
607
|
.filter((entry) => entry.state !== "unlocated")
|
|
596
608
|
.sort((left, right) => DateTime.toEpochMillis(left.since) - DateTime.toEpochMillis(right.since))
|
|
@@ -640,7 +652,7 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
640
652
|
/**
|
|
641
653
|
* Verifies a provisioned Worker without a machine: the provider token, image, key, and limits,
|
|
642
654
|
* the Gateway's admin API, and that every harness has a credential no machine has to keep.
|
|
643
|
-
* The machine checks run
|
|
655
|
+
* The machine checks run at the configured interval.
|
|
644
656
|
*/
|
|
645
657
|
const verifyProvisioned = Effect.fn("SshExecutor.verifyProvisioned")(function* (entry, brains, maxConcurrentAttempts) {
|
|
646
658
|
const worker = entry.address.name;
|
|
@@ -656,14 +668,14 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
656
668
|
const gap = harnessCredentialGap(entry, brains);
|
|
657
669
|
if (Option.isSome(gap))
|
|
658
670
|
return yield* gap.value;
|
|
659
|
-
yield* Effect.logInfo("Provisioned SSH Worker preflight verified; its
|
|
671
|
+
yield* Effect.logInfo("Provisioned SSH Worker preflight verified; its next due machine check verifies the harnesses", {
|
|
660
672
|
worker,
|
|
661
673
|
provider: driver.provider,
|
|
662
674
|
harnesses: Arr.dedupe(brains.map(({ harness }) => harness)).join(","),
|
|
663
675
|
});
|
|
664
676
|
return {
|
|
665
677
|
degraded: Option.none(),
|
|
666
|
-
deferred: Option.some(
|
|
678
|
+
deferred: Option.some(`Checked on the first machine, then every ${provisioner.value.timings.machineCheckInterval} seconds when a machine is created.`),
|
|
667
679
|
containerLimits: Option.none(),
|
|
668
680
|
};
|
|
669
681
|
});
|
|
@@ -672,12 +684,12 @@ export const provisionedMachinesFor = Effect.fn("SshExecutor.provisionedMachines
|
|
|
672
684
|
port: WorkerMachines.of({
|
|
673
685
|
provisions,
|
|
674
686
|
create,
|
|
675
|
-
assign,
|
|
676
687
|
adopt,
|
|
677
688
|
release,
|
|
678
689
|
sweep: sweep(),
|
|
679
690
|
machines,
|
|
680
691
|
}),
|
|
692
|
+
retire,
|
|
681
693
|
attemptMachine,
|
|
682
694
|
recoveryMachine,
|
|
683
695
|
recovered,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machines.js","sourceRoot":"","sources":["../../../src/ssh/provisioner/machines.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"machines.js","sourceRoot":"","sources":["../../../src/ssh/provisioner/machines.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,14 +13,14 @@ export interface MachineTags {
|
|
|
13
13
|
readonly worker: WorkerName;
|
|
14
14
|
readonly run: RunId;
|
|
15
15
|
readonly process: string;
|
|
16
|
-
readonly attempt:
|
|
16
|
+
readonly attempt: AttemptId;
|
|
17
17
|
}
|
|
18
18
|
/** The tags of a machine as its provider lists them, each encoded by `tagValue`. */
|
|
19
19
|
interface ListedTags {
|
|
20
20
|
readonly worker: string;
|
|
21
21
|
readonly run: string;
|
|
22
22
|
readonly process: string;
|
|
23
|
-
/** `None`
|
|
23
|
+
/** `None` for an orphan created by an older release. */
|
|
24
24
|
readonly attempt: Option.Option<string>;
|
|
25
25
|
}
|
|
26
26
|
/** A machine that a provider lists for this instance and Worker. */
|
|
@@ -72,12 +72,10 @@ export interface MachineDriver {
|
|
|
72
72
|
readonly create: (name: string, tags: MachineTags) => Effect.Effect<CreatedMachine, MachineUnavailableError>;
|
|
73
73
|
/** Waits until the machine runs and has an SSH address. Polls every `interval`. */
|
|
74
74
|
readonly endpoint: (id: MachineId, interval: Effect.Effect<void>) => Effect.Effect<MachineEndpoint, MachineUnavailableError>;
|
|
75
|
-
/** Replaces the machine's tags, for example to add its Attempt. */
|
|
76
|
-
readonly tag: (id: MachineId, tags: MachineTags) => Effect.Effect<void, ProviderApiError>;
|
|
77
75
|
/** Deletes the machine. A machine that is already gone counts as deleted. */
|
|
78
76
|
readonly remove: (id: MachineId) => Effect.Effect<void, ProviderApiError>;
|
|
79
|
-
/** Lists
|
|
80
|
-
readonly list: (instance: string, worker: WorkerName) => Effect.Effect<ReadonlyArray<ListedMachine>, ProviderApiError>;
|
|
77
|
+
/** Lists machines tagged with `instance`, optionally limited to one Worker. */
|
|
78
|
+
readonly list: (instance: string, worker: Option.Option<WorkerName>) => Effect.Effect<ReadonlyArray<ListedMachine>, ProviderApiError>;
|
|
81
79
|
}
|
|
82
80
|
/**
|
|
83
81
|
* Returns `value` as a tag value of at most `maxLength` characters: `value` itself if it fits
|