alasio 6.0.0 → 8.0.0

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 (115) hide show
  1. package/dist/cli/src/branches.js +106 -31
  2. package/dist/cli/src/branches.js.map +1 -1
  3. package/dist/cli/src/cluster/docker-engine.js +6 -4
  4. package/dist/cli/src/cluster/docker-engine.js.map +1 -1
  5. package/dist/cli/src/cluster/docker.js +49 -10
  6. package/dist/cli/src/cluster/docker.js.map +1 -1
  7. package/dist/cli/src/cluster/host.js +45 -19
  8. package/dist/cli/src/cluster/host.js.map +1 -1
  9. package/dist/cli/src/cluster/k3s.js +104 -5
  10. package/dist/cli/src/cluster/k3s.js.map +1 -1
  11. package/dist/cli/src/cluster/node.js +102 -51
  12. package/dist/cli/src/cluster/node.js.map +1 -1
  13. package/dist/cli/src/cluster/tar.js +43 -1
  14. package/dist/cli/src/cluster/tar.js.map +1 -1
  15. package/dist/cli/src/commands/branch.js +7 -3
  16. package/dist/cli/src/commands/branch.js.map +1 -1
  17. package/dist/cli/src/commands/init.js +54 -4
  18. package/dist/cli/src/commands/init.js.map +1 -1
  19. package/dist/cli/src/commands/lake.js +40 -6
  20. package/dist/cli/src/commands/lake.js.map +1 -1
  21. package/dist/cli/src/commands/restore-filer-store.js +56 -13
  22. package/dist/cli/src/commands/restore-filer-store.js.map +1 -1
  23. package/dist/cli/src/commands/status.js +182 -10
  24. package/dist/cli/src/commands/status.js.map +1 -1
  25. package/dist/cli/src/commands/up.js +40 -3
  26. package/dist/cli/src/commands/up.js.map +1 -1
  27. package/dist/cli/src/commands/upgrade.js +22 -6
  28. package/dist/cli/src/commands/upgrade.js.map +1 -1
  29. package/dist/cli/src/config.js +20 -8
  30. package/dist/cli/src/config.js.map +1 -1
  31. package/dist/cli/src/cpu-baseline.js +97 -0
  32. package/dist/cli/src/cpu-baseline.js.map +1 -0
  33. package/dist/cli/src/install.js +94 -13
  34. package/dist/cli/src/install.js.map +1 -1
  35. package/dist/cli/src/kept-releases.js +59 -0
  36. package/dist/cli/src/kept-releases.js.map +1 -0
  37. package/dist/cli/src/kube/api.js +9 -2
  38. package/dist/cli/src/kube/api.js.map +1 -1
  39. package/dist/cli/src/kube/apply.js +1 -1
  40. package/dist/cli/src/kube/apply.js.map +1 -1
  41. package/dist/cli/src/kube/rollout.js +79 -12
  42. package/dist/cli/src/kube/rollout.js.map +1 -1
  43. package/dist/cli/src/lake.js +124 -0
  44. package/dist/cli/src/lake.js.map +1 -0
  45. package/dist/cli/src/manifests/admission.js +183 -24
  46. package/dist/cli/src/manifests/admission.js.map +1 -1
  47. package/dist/cli/src/manifests/alasio.js +198 -27
  48. package/dist/cli/src/manifests/alasio.js.map +1 -1
  49. package/dist/cli/src/manifests/branch.js +2 -1
  50. package/dist/cli/src/manifests/branch.js.map +1 -1
  51. package/dist/cli/src/manifests/collector.js +229 -122
  52. package/dist/cli/src/manifests/collector.js.map +1 -1
  53. package/dist/cli/src/manifests/common.js +23 -8
  54. package/dist/cli/src/manifests/common.js.map +1 -1
  55. package/dist/cli/src/manifests/config.js +254 -21
  56. package/dist/cli/src/manifests/config.js.map +1 -1
  57. package/dist/cli/src/manifests/grafana.js +18 -6
  58. package/dist/cli/src/manifests/grafana.js.map +1 -1
  59. package/dist/cli/src/manifests/index.js +15 -6
  60. package/dist/cli/src/manifests/index.js.map +1 -1
  61. package/dist/cli/src/manifests/juicefs-csi.js +7 -6
  62. package/dist/cli/src/manifests/juicefs-csi.js.map +1 -1
  63. package/dist/cli/src/manifests/keda.js +2 -1
  64. package/dist/cli/src/manifests/keda.js.map +1 -1
  65. package/dist/cli/src/manifests/lake.js +340 -73
  66. package/dist/cli/src/manifests/lake.js.map +1 -1
  67. package/dist/cli/src/manifests/log.js +298 -0
  68. package/dist/cli/src/manifests/log.js.map +1 -0
  69. package/dist/cli/src/manifests/neon.js +282 -66
  70. package/dist/cli/src/manifests/neon.js.map +1 -1
  71. package/dist/cli/src/manifests/network-policies.js +211 -45
  72. package/dist/cli/src/manifests/network-policies.js.map +1 -1
  73. package/dist/cli/src/manifests/node-agent.js +116 -0
  74. package/dist/cli/src/manifests/node-agent.js.map +1 -0
  75. package/dist/cli/src/manifests/object-store.js +42 -10
  76. package/dist/cli/src/manifests/object-store.js.map +1 -1
  77. package/dist/cli/src/manifests/priorities.js +1 -0
  78. package/dist/cli/src/manifests/priorities.js.map +1 -1
  79. package/dist/cli/src/manifests/scalers.js.map +1 -1
  80. package/dist/cli/src/manifests/valkey.js +1 -1
  81. package/dist/cli/src/manifests/webhook.js +102 -0
  82. package/dist/cli/src/manifests/webhook.js.map +1 -0
  83. package/dist/cli/src/neon-storage.js +115 -0
  84. package/dist/cli/src/neon-storage.js.map +1 -0
  85. package/dist/cli/src/release.js +9 -6
  86. package/dist/cli/src/release.js.map +1 -1
  87. package/dist/cli/src/secrets.js +45 -4
  88. package/dist/cli/src/secrets.js.map +1 -1
  89. package/dist/cli/src/target.js +1 -1
  90. package/dist/cli/src/target.js.map +1 -1
  91. package/dist/cli/src/telegram.js +56 -10
  92. package/dist/cli/src/telegram.js.map +1 -1
  93. package/dist/cli/src/webhook.js +182 -0
  94. package/dist/cli/src/webhook.js.map +1 -0
  95. package/dist/cluster/node/pins.json +11 -2
  96. package/dist/neon/control/branches.js +146 -22
  97. package/dist/neon/control/branches.js.map +1 -1
  98. package/dist/neon/control/endpoints.js +117 -0
  99. package/dist/neon/control/endpoints.js.map +1 -0
  100. package/dist/neon/control/jwt.js +16 -3
  101. package/dist/neon/control/jwt.js.map +1 -1
  102. package/dist/neon/control/scram.js +13 -1
  103. package/dist/neon/control/scram.js.map +1 -1
  104. package/dist/neon/control/secrets.js +88 -14
  105. package/dist/neon/control/secrets.js.map +1 -1
  106. package/dist/src/kube/config.js +27 -3
  107. package/dist/src/kube/config.js.map +1 -1
  108. package/dist/src/kube/sandbox-shape.js +49 -3
  109. package/dist/src/kube/sandbox-shape.js.map +1 -1
  110. package/dist/src/node-agent/names.js +140 -0
  111. package/dist/src/node-agent/names.js.map +1 -0
  112. package/dist/src/telegram/deliveries.js +40 -0
  113. package/dist/src/telegram/deliveries.js.map +1 -0
  114. package/package.json +2 -2
  115. package/dist/cluster/node/config-v3.toml.tmpl +0 -12
@@ -1,19 +1,29 @@
1
- import { Console, Effect, Option, Schema } from "effect";
1
+ import { Console, Effect, Option, Redacted, Schema } from "effect";
2
2
  import { Command } from "effect/cli";
3
3
  import { DockerCluster } from "../cluster/docker.js";
4
4
  import { HostCluster } from "../cluster/host.js";
5
5
  import { readySince } from "../cluster/k3s.js";
6
6
  import { describeShortfall, InotifyLimitsTooLow, inotifyShortfalls, requireLocalMachine } from "../cluster/machine.js";
7
- import { SERVICE } from "../cluster/node.js";
7
+ import { gvisorReleases, NODE_PINS, SERVICE } from "../cluster/node.js";
8
8
  import { loadConfig } from "../config.js";
9
- import { describeMemory, describeScale, describeSizing, memoryBytes } from "../capacity.js";
9
+ import { describeBaseline, recordedBaseline, standingOf, surveyCpu } from "../cpu-baseline.js";
10
+ import { clusterReleases, describeKept, snapshotReleases } from "../kept-releases.js";
11
+ import { describeMemory, describeScale, describeSizing, memoryBytes, memoryText } from "../capacity.js";
10
12
  import { describeRef, hasStatus, kind, KubeApi, refOf } from "../kube/api.js";
11
13
  import { INSTALLATION_SELECTOR, WORKLOADS } from "../kube/apply.js";
12
- import { diagnose, readiness, selectorOf } from "../kube/rollout.js";
13
- import { NAMESPACE, RELEASE } from "../manifests/common.js";
14
+ import { diagnose, readiness, selectorOf, starting } from "../kube/rollout.js";
15
+ import { componentName, NAMESPACE, neonName, RELEASE } from "../manifests/common.js";
16
+ import { LOADER_COMPONENT } from "../manifests/lake.js";
17
+ import { REPLICA_NAME } from "../manifests/neon.js";
14
18
  import { MASTER, METRICS_PORT, VOLUME_SERVER } from "../manifests/object-store.js";
15
19
  import { describeReplication, describeVolumeServer, volumeServerDisk } from "../object-store.js";
20
+ import { computeTimes, tenantView } from "../branches.js";
16
21
  import { describeTarget, dockerCluster, kubeApi, resolveTarget } from "../target.js";
22
+ import { branchNamespaces } from "../branches.js";
23
+ import { installConfig } from "../install.js";
24
+ import { readTelegramBot, TELEGRAM_SECRET } from "../secrets.js";
25
+ import { describeBots } from "../webhook.js";
26
+ import { branchNamespace } from "../../../src/branch/names.js";
17
27
  import { notRunning, runIn } from "./common.js";
18
28
  /** Some of alasio's workloads do not run as they should. */
19
29
  export class Unhealthy extends Schema.TaggedError()("Unhealthy", {
@@ -26,6 +36,14 @@ export class Unhealthy extends Schema.TaggedError()("Unhealthy", {
26
36
  : `${this.notReady} of alasio's ${this.of} workloads are not ready`;
27
37
  }
28
38
  }
39
+ /** Telegram cannot deliver to an environment's bot, or its deliveries fail: their fixes, each once. */
40
+ export class DeliveriesFailing extends Schema.TaggedError()("DeliveriesFailing", {
41
+ fixes: Schema.Array(Schema.String),
42
+ }) {
43
+ get message() {
44
+ return `Telegram does not deliver to the webhook intake as it should: ${this.fixes.join("; ")}`;
45
+ }
46
+ }
29
47
  /** What `look` finds, or none where this kubeconfig's rights do not reach it. */
30
48
  const seen = (look) => look.pipe(Effect.map(Option.some), Effect.catchIf(hasStatus(403), () => Effect.succeedNone));
31
49
  /**
@@ -97,6 +115,124 @@ const objectStore = (workloads) => Effect.gen(function* () {
97
115
  });
98
116
  return [describeReplication(replication), ...disks.map((line) => ` ${line}`)];
99
117
  });
118
+ /**
119
+ * A compute that is ready, a primary or a read replica: asleep at no replica, as
120
+ * neon-control puts one no client has used for a while, until the next connection wakes
121
+ * it, or awake; when it was last woken, as neon-control recorded it; and a read
122
+ * replica's lag behind its primary, as neon-control last read it.
123
+ */
124
+ function describeCompute(workload, computes) {
125
+ const compute = computes.get(`${workload.metadata?.namespace ?? ""}/${workload.metadata?.name ?? ""}`);
126
+ const lag = compute?.lagBytes;
127
+ return [
128
+ workload.spec?.replicas === 0 ? "asleep" : "awake",
129
+ ...(compute?.wokenAt ? [`last woken ${compute.wokenAt}`] : []),
130
+ ...(lag === undefined || lag === null ? [] : [`${memoryText(lag)} of WAL behind its primary`]),
131
+ ].join(", ");
132
+ }
133
+ /** Neon's tenant: its shards, and each pageserver, with how many of them it holds. */
134
+ function describeTenant({ shards, pageservers }) {
135
+ return [
136
+ `Neon: ${shards} shard${shards === 1 ? "" : "s"} on ${pageservers.length} pageserver${pageservers.length === 1 ? "" : "s"}`,
137
+ ...pageservers.map(({ id, address, availability, shards: held }) => ` pageserver ${id} at ${address}: ${availability}, ${held} shard${held === 1 ? "" : "s"}`),
138
+ ];
139
+ }
140
+ /** KEDA's annotations pausing a ScaledObject: at its replicas now, or at a count of them. */
141
+ const PAUSED = "autoscaling.keda.sh/paused";
142
+ const PAUSED_REPLICAS = "autoscaling.keda.sh/paused-replicas";
143
+ /**
144
+ * Why KEDA would not wake `scaler`'s workload from no replica, if it would not: its
145
+ * ScaledObject gone, paused (its annotations, or its Paused condition), or not ready; null
146
+ * where it would.
147
+ */
148
+ function unwakeable(scaler) {
149
+ if (!scaler)
150
+ return "with no ScaledObject to wake it";
151
+ const annotations = scaler.metadata?.annotations ?? {};
152
+ const condition = (type) => scaler.status?.conditions?.find((each) => each.type === type);
153
+ if (annotations[PAUSED] === "true" || annotations[PAUSED_REPLICAS] !== undefined || condition("Paused")?.status === "True")
154
+ return "its ScaledObject paused, which wakes it no more";
155
+ const ready = condition("Ready");
156
+ if (ready && ready.status !== "True")
157
+ return `its ScaledObject not ready (${ready.message || ready.reason || ready.status}), which wakes it no more`;
158
+ return null;
159
+ }
160
+ /**
161
+ * A workload that is ready: a compute, a read replica among them, or the lake's loader,
162
+ * each asleep at no replica until it is woken, a compute by a connection and the loader
163
+ * by alasio's writing, or awake; any other, at no replica too, ready, as KEDA leaves one.
164
+ * The loader asleep is ready only while its ScaledObject would wake it (unwakeable): what
165
+ * it says, and whether it is ready.
166
+ */
167
+ function describeReady(workload, computes, scaler) {
168
+ switch (workload.metadata?.name) {
169
+ case neonName("compute"):
170
+ case REPLICA_NAME:
171
+ return { said: describeCompute(workload, computes), ready: true };
172
+ case componentName(LOADER_COMPONENT): {
173
+ if (workload.spec?.replicas !== 0)
174
+ return { said: "awake", ready: true };
175
+ const why = unwakeable(scaler);
176
+ return why === null ? { said: "asleep, nothing left to load", ready: true } : { said: `at no replica, ${why}`, ready: false };
177
+ }
178
+ default:
179
+ return { said: "ready", ready: true };
180
+ }
181
+ }
182
+ /** How long Kubernetes gives a Deployment's pods to come up by default, of its progressDeadlineSeconds. */
183
+ const PROGRESS_DEADLINE_SECONDS = 600;
184
+ /**
185
+ * Whether `workload`, one that wakes on demand (describeReady's: a compute, a read replica
186
+ * among them, or the lake's loader) or that KEDA scales (`scaler`), as the lake's intake
187
+ * woken from none or Grafana scaled out, is waking: each of its pods not ready starting
188
+ * (../kube/rollout.ts), within its Deployment's progress deadline, or, where `scaler` woke
189
+ * it, its pods not all made yet while KEDA still finds it work, as it last did within that
190
+ * deadline, or its pods ready that the Deployment does not count yet, each come up within
191
+ * that deadline. KEDA renews its lastActiveTime at each poll it finds work at, and records
192
+ * no time it woke the loader, so a pod never made is bounded by the ReplicaSet's saying it
193
+ * cannot make it (ReplicaFailure), not by time. One whose pod crashed, whose pods cannot be
194
+ * made, or that has not come up within the deadline, is not ready.
195
+ */
196
+ const waking = Effect.fnUntraced(function* (workload, scaler) {
197
+ if (scaler === undefined && ![neonName("compute"), REPLICA_NAME, componentName(LOADER_COMPONENT)].includes(workload.metadata?.name ?? ""))
198
+ return false;
199
+ const { metadata, spec, status } = workload;
200
+ // Past its progress deadline, or its pods refused, as the Deployment says: stuck, not
201
+ // waking.
202
+ const said = (type, is) => status?.conditions?.some((condition) => condition.type === type && condition.status === is) ?? false;
203
+ if (said("Progressing", "False") || said("ReplicaFailure", "True"))
204
+ return false;
205
+ const pods = yield* (yield* KubeApi).list(kind("Pod"), { namespace: metadata?.namespace, labelSelector: selectorOf(spec?.selector.matchLabels ?? {}) });
206
+ const readyAt = (pod) => pod.status?.conditions?.find(({ type, status: ready }) => type === "Ready" && ready === "True")?.lastTransitionTime;
207
+ const unready = pods.filter((pod) => readyAt(pod) === undefined);
208
+ const now = Date.now();
209
+ const deadlineMs = (spec?.progressDeadlineSeconds ?? PROGRESS_DEADLINE_SECONDS) * 1000;
210
+ // Its pods not all made yet, as just after KEDA woke it, while KEDA still finds it work.
211
+ const woken = scaler?.status?.lastActiveTime;
212
+ const unmade = pods.length < (spec?.replicas ?? 0) && woken !== undefined && now - Date.parse(woken) < deadlineMs;
213
+ // Its pods ready that the Deployment does not count available, each as one just come up,
214
+ // within the deadline: ready since the Deployment was read, which status reads before
215
+ // its pods, or before its controller counted them.
216
+ const uncounted = pods.length - unready.length - (status?.availableReplicas ?? 0);
217
+ const cameUp = pods.filter((pod) => {
218
+ const at = readyAt(pod);
219
+ return at !== undefined && now - new Date(at).getTime() < deadlineMs;
220
+ }).length;
221
+ const comingUp = uncounted > 0 && cameUp >= uncounted;
222
+ return (unready.length > 0 || unmade || comingUp) && unready.every((pod) => starting(pod, deadlineMs, now));
223
+ });
224
+ /** How main's bot's and each branch environment's deliveries fare, as Telegram says. */
225
+ const deliveries = (config) => Effect.gen(function* () {
226
+ const kube = yield* KubeApi;
227
+ const main = yield* readTelegramBot;
228
+ const branches = yield* branchNamespaces.pipe(Effect.catchIf(hasStatus(403), () => Effect.succeed([])));
229
+ const branchBots = yield* Effect.forEach(branches, (name) => kube.get({ ...kind("Secret"), namespace: branchNamespace(name), name: TELEGRAM_SECRET }).pipe(Effect.map((found) => {
230
+ const token = found?.data?.["token"];
231
+ const bot = { token: Redacted.make(token ? Buffer.from(token, "base64").toString("utf8") : ""), allowedUserIds: [], username: "" };
232
+ return token ? [{ environment: name, bot }] : [];
233
+ }), Effect.catchIf(hasStatus(403), () => Effect.succeed([]))));
234
+ return yield* describeBots(yield* installConfig(config), [...(main ? [{ environment: "main", bot: main }] : []), ...branchBots.flat()]);
235
+ });
100
236
  /** Whether `scaledObject` scales on what the metrics server measures: its pods' CPU. */
101
237
  const onResources = (scaledObject) => scaledObject.spec.triggers.some(({ type }) => type === "cpu");
102
238
  export const status = Command.make("status", {}, () => Effect.gen(function* () {
@@ -118,7 +254,7 @@ export const status = Command.make("status", {}, () => Effect.gen(function* () {
118
254
  }
119
255
  if (target._tag === "Host") {
120
256
  const { unit, installed } = yield* Effect.provide(Effect.flatMap(HostCluster, (cluster) => cluster.status), HostCluster.layer(target.cluster));
121
- yield* Console.log(`k3s${installed?.k3s ? ` ${installed.k3s}` : ""} on this machine${installed?.gvisor ? `, with gVisor ${installed.gvisor}` : ""}:`);
257
+ yield* Console.log(`k3s${installed?.k3s ? ` ${installed.k3s}` : ""} on this machine${installed?.gvisor?.length ? `, with gVisor ${installed.gvisor.join(" and ")}` : ""}:`);
122
258
  yield* Console.log(unit.loaded ? ` service ${SERVICE}: ${unit.active}, ${unit.enabled ? "enabled" : "disabled"}` : " not installed");
123
259
  if (unit.active === "active") {
124
260
  const nodes = yield* Effect.provide(Effect.flatMap(KubeApi, (kube) => kube.list(kind("Node"))), kubeApi(target));
@@ -137,14 +273,24 @@ export const status = Command.make("status", {}, () => Effect.gen(function* () {
137
273
  const scaledObjects = (yield* installedOf(kind("ScaledObject"))).objects;
138
274
  const sizings = (yield* installedOf(kind("VerticalPodAutoscaler"))).objects;
139
275
  yield* Console.log(`alasio${version ? ` ${version}` : ""}, in ${describeTarget(target)} (${kube.server}):`);
276
+ const computes = yield* computeTimes;
140
277
  let notReady = 0;
141
278
  for (const workload of workloads) {
142
279
  const state = readiness(workload);
143
280
  // A DaemonSet runs a pod on every node it schedules to, of no scale of its own.
144
- const scale = workload.kind === "DaemonSet" ? "" : `${describeScale(workload, of(scaledObjects, workload, ({ spec }) => spec.scaleTargetRef.name))}; `;
281
+ const scaler = of(scaledObjects, workload, ({ spec }) => spec.scaleTargetRef.name);
282
+ const scale = workload.kind === "DaemonSet" ? "" : `${describeScale(workload, scaler)}; `;
145
283
  const sizing = ` ${scale}${describeSizing(workload, of(sizings, workload, ({ spec }) => spec.targetRef.name))}`;
146
284
  if (state._tag === "Ready") {
147
- yield* Console.log(` ${describeRef(refOf(workload))}: ready`);
285
+ const { said, ready } = describeReady(workload, computes, scaler);
286
+ if (!ready)
287
+ notReady += 1;
288
+ yield* Console.log(` ${describeRef(refOf(workload))}: ${said}`);
289
+ yield* Console.log(sizing);
290
+ continue;
291
+ }
292
+ if (state._tag === "Waiting" && (yield* waking(workload, scaler))) {
293
+ yield* Console.log(` ${describeRef(refOf(workload))}: waking, ${state.status}`);
148
294
  yield* Console.log(sizing);
149
295
  continue;
150
296
  }
@@ -154,11 +300,32 @@ export const status = Command.make("status", {}, () => Effect.gen(function* () {
154
300
  for (const line of yield* diagnose(refOf(workload)))
155
301
  yield* Console.log(` ${line}`);
156
302
  }
303
+ // Where the node agents run, the CPU baseline sessions are held to, and the nodes that fall short of it.
304
+ if (workloads.some((workload) => workload.kind === "DaemonSet" && workload.metadata?.name === componentName("node-agent"))) {
305
+ const standing = yield* seen(Effect.all([recordedBaseline, surveyCpu]));
306
+ const lines = Option.match(standing, {
307
+ onNone: () => ["the CPU baseline: not seen, as this kubeconfig may not read alasio's templates and node agents"],
308
+ onSome: ([{ baseline }, survey]) => describeBaseline(standingOf(survey, baseline)),
309
+ });
310
+ for (const line of lines)
311
+ yield* Console.log(` ${line}`);
312
+ // The gVisor releases kept, and the snapshots naming each.
313
+ const releases = describeKept(yield* clusterReleases(gvisorReleases(NODE_PINS)), yield* snapshotReleases);
314
+ for (const line of releases)
315
+ yield* Console.log(` ${line}`);
316
+ }
317
+ const tenant = yield* tenantView;
318
+ if (tenant)
319
+ for (const line of describeTenant(tenant))
320
+ yield* Console.log(line);
157
321
  if (listed.some(({ whole }) => !whole)) {
158
322
  yield* Console.log(` alasio's workloads outside its namespace, ${NAMESPACE}: not seen, as this kubeconfig may list them there alone`);
159
323
  }
160
324
  for (const line of yield* objectStore(workloads))
161
325
  yield* Console.log(line);
326
+ const telegram = workloads.length > 0 ? yield* deliveries(config) : { lines: [], fixes: [] };
327
+ for (const line of telegram.lines)
328
+ yield* Console.log(line);
162
329
  const cluster = yield* memory;
163
330
  yield* Console.log(cluster.memory ? describeMemory(cluster.memory) : "memory: not seen, as this kubeconfig may not list the cluster's nodes and pods");
164
331
  if (cluster.measures === null)
@@ -169,13 +336,18 @@ export const status = Command.make("status", {}, () => Effect.gen(function* () {
169
336
  }
170
337
  if (workloads.length === 0 || notReady > 0)
171
338
  return yield* new Unhealthy({ notReady, of: workloads.length });
339
+ if (telegram.fixes.length > 0)
340
+ return yield* new DeliveriesFailing({ fixes: telegram.fixes });
172
341
  }), kubeApi(target));
173
342
  if (shortfalls.length > 0)
174
343
  return yield* new InotifyLimitsTooLow({ shortfalls });
175
344
  })).pipe(Command.withShortDescription("Say what runs, and whether it is healthy"), Command.withDescription("Says where alasio runs (and, for the cluster on this machine, k3s's service and node, or its nodes in Docker, and this " +
176
- "machine's inotify limits when they are too low for it), its version, and each of its workloads: ready, or what it is at and " +
345
+ "machine's inotify limits when they are too low for it), its version, and each of its workloads: ready (a compute awake, or " +
346
+ "asleep, as one no client has used for a while is until the next connection wakes it, and when it was last woken; the lake's loader " +
347
+ "awake, or asleep with nothing left to load until alasio writes again), waking (a compute or the loader whose pod starts, within " +
348
+ "its Deployment's progress deadline), or what it is at and " +
177
349
  "why; its replicas, and its scale where KEDA moves it; and its pods' requests, beside " +
178
- "what VPA recommends once it has measured them. Of the bundled object store, the copies it keeps of each object, and of each " +
350
+ "what VPA recommends once it has measured them; where sessions are snapshotted, the CPU baseline they are held to, and the nodes that lack it, and the gVisor releases kept, with the snapshots naming each. Of the bundled object store, the copies it keeps of each object, and of each " +
179
351
  "volume server, as its metrics say: what it may still fill of its disk before it takes no more writes, what it keeps " +
180
352
  "free (minFreeSpace), its volumes, and what they take, deleted and not yet compacted away. Then the memory the cluster's pods request and use, of what its nodes have " +
181
353
  "for pods, and whether a metrics server measures them, which VPA and what scales on CPU need; of these, what the kubeconfig's " +
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
1
  /** `alasio up`: makes or starts the cluster on this machine, applies alasio, and waits until it runs. */
2
- import { Console, Effect } from "effect";
2
+ import { Console, Effect, Schema } from "effect";
3
3
  import { Command } from "effect/cli";
4
4
  import { DockerCluster } from "../cluster/docker.js";
5
5
  import { HostCluster } from "../cluster/host.js";
6
6
  import { inotifyStep, requireLocalMachine } from "../cluster/machine.js";
7
7
  import { Root } from "../cluster/root.js";
8
8
  import { loadConfig } from "../config.js";
9
- import { install } from "../install.js";
9
+ import { baselineShortfalls } from "../cpu-baseline.js";
10
+ import { checkInstallation, install } from "../install.js";
11
+ import { kind, KubeApi } from "../kube/api.js";
12
+ import { NAMESPACE } from "../manifests/common.js";
10
13
  import { VERSION } from "../release.js";
11
14
  import { describeTarget, dockerCluster, kubeApi, resolveTarget } from "../target.js";
12
15
  import { timeoutFlag, waitOptions } from "./common.js";
@@ -27,9 +30,42 @@ export const ensureCluster = (target) => Effect.gen(function* () {
27
30
  yield* Effect.flatMap(Root, (root) => root.run(raise ? [raise] : []));
28
31
  yield* Effect.provide(Effect.flatMap(DockerCluster, (cluster) => cluster.up(target.kubeconfig.path)), dockerCluster(target.cluster));
29
32
  });
33
+ /** The cluster on this machine alasio made is stopped, so what an upgrade would refuse cannot be checked before it changes the machine. */
34
+ export class ClusterStopped extends Schema.TaggedError()("ClusterStopped", {
35
+ cluster: Schema.String,
36
+ }) {
37
+ get message() {
38
+ return `${this.cluster} does not answer, so alasio cannot check whether it would refuse this upgrade before it changes this machine ` +
39
+ "for it: start it as it is, with the alasio that made it (its alasio up), then upgrade";
40
+ }
41
+ }
42
+ /**
43
+ * Runs `check`, which refuses what is not to be done, before `ensureCluster` changes anything
44
+ * of this machine for the cluster on it (k3s, gVisor, alasio's stamp of them), where that
45
+ * cluster answers. One alasio has not made yet holds nothing of alasio's to refuse. One it
46
+ * made, its kubeconfig written, that does not answer, as it is stopped, holds an
47
+ * installation: `whenStopped` says whether to go on, as up does, which starts it and checks
48
+ * as it applies alasio, or to refuse, as an upgrade does, which would change the machine
49
+ * before it could check. A cluster a kubeconfig reaches, which ensureCluster leaves alone, is
50
+ * checked as alasio is applied.
51
+ */
52
+ export const refuseFirst = (target, check, whenStopped) => Effect.gen(function* () {
53
+ if (target._tag === "Kubeconfig")
54
+ return;
55
+ const answers = Effect.flatMap(KubeApi, (kube) => kube.get({ ...kind("Namespace"), name: NAMESPACE })).pipe(Effect.as(true), Effect.catchIf((error) => error.status === undefined, () => Effect.succeed(false)));
56
+ const checked = Effect.gen(function* () {
57
+ if (yield* answers)
58
+ return yield* check;
59
+ if (whenStopped === "refuse")
60
+ return yield* new ClusterStopped({ cluster: describeTarget(target) });
61
+ });
62
+ yield* Effect.provide(checked, kubeApi(target)).pipe(Effect.catchTag("KubeconfigUnusable", () => Effect.void));
63
+ });
30
64
  /** Where alasio runs, and what the operator does next. */
31
- export const announce = (target, { bot, claude }) => Console.log([
65
+ export const announce = (target, { bot, claude, cpuBaseline }) => Console.log([
32
66
  `alasio ${VERSION} runs in ${describeTarget(target)}.`,
67
+ // What keeps sessions from being snapshotted, or restored on a node, if anything.
68
+ ...(cpuBaseline ? baselineShortfalls(cpuBaseline) : []),
33
69
  "",
34
70
  `Message ${bot.username ? `@${bot.username}` : "your bot"} on Telegram to talk to it.`,
35
71
  ...(claude ? [] : ["Claude Code has no token yet: alasio init asks for one, which `claude setup-token` makes."]),
@@ -39,6 +75,7 @@ export const announce = (target, { bot, claude }) => Console.log([
39
75
  /** Brings up what `config` describes, waiting `timeout` at most for it to run. */
40
76
  export const bringUp = Effect.fnUntraced(function* (config, timeout) {
41
77
  const target = yield* resolveTarget(config);
78
+ yield* refuseFirst(target, Effect.asVoid(checkInstallation(config)), "go on");
42
79
  yield* ensureCluster(target);
43
80
  const installed = yield* Effect.provide(install(config, waitOptions(timeout)), kubeApi(target));
44
81
  yield* announce(target, installed);
@@ -1 +1 @@
1
- {"version":3,"file":"up.js","sourceRoot":"","sources":["../../../../src/commands/up.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"up.js","sourceRoot":"","sources":["../../../../src/commands/up.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAkB,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAuB,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAE,EAAE,CACtD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO;IACzC,KAAK,CAAC,CAAC,mBAAmB,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChJ,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IACjC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvI,CAAC,CAAC,CAAC;AAEL,2IAA2I;AAC3I,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE;IACzF,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;IACA,IAAa,OAAO;QAClB,OAAO,GAAG,IAAI,CAAC,OAAO,+GAA+G;YACnI,uFAAuF,CAAC;IAC5F,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAI,MAAsB,EAAE,KAAsC,EAAE,WAA+B,EAAE,EAAE,CAChI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CACzG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EACf,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACnF,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClC,IAAI,KAAK,CAAC,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC;QACxC,IAAI,WAAW,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjH,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAC1D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAsB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAa,EAAuB,EAAE,CAC/G,OAAO,CAAC,GAAG,CACT;IACE,UAAU,OAAO,YAAY,cAAc,CAAC,MAAM,CAAC,GAAG;IACtD,kFAAkF;IAClF,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,EAAE;IACF,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,6BAA6B;IACtF,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC;IAChH,mDAAmD;IACnD,oEAAoE;CACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AAEJ,kFAAkF;AAClF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,MAAsB,EAAE,OAA0C;IACnH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChG,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CACpJ,OAAO,CAAC,oBAAoB,CAAC,yCAAyC,CAAC,EACvE,OAAO,CAAC,eAAe,CACrB,wHAAwH;IACtH,4HAA4H;IAC5H,4HAA4H;IAC5H,2GAA2G;IAC3G,0HAA0H;IAC1H,gIAAgI;IAChI,2DAA2D,CAC9D,CACF,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import { Console, Effect } from "effect";
2
- import { Command } from "effect/cli";
2
+ import { Command, Flag } from "effect/cli";
3
+ import { refuseBranchesOfOtherReleases } from "../branches.js";
3
4
  import { loadConfig } from "../config.js";
4
- import { install, installationObjects, installConfig } from "../install.js";
5
+ import { checkInstallation, install, installationObjects, installConfig } from "../install.js";
5
6
  import { kind, KubeApi } from "../kube/api.js";
6
7
  import { INSTALLATION_SELECTOR } from "../kube/apply.js";
7
8
  import { RELEASE } from "../manifests/common.js";
8
9
  import { VERSION } from "../release.js";
9
- import { kubeApi, resolveTarget } from "../target.js";
10
+ import { describeTarget, kubeApi, resolveTarget } from "../target.js";
10
11
  import { timeoutFlag, waitOptions } from "./common.js";
11
- import { announce, ensureCluster } from "./up.js";
12
+ import { announce, ensureCluster, refuseFirst } from "./up.js";
12
13
  const WORKLOADS = ["Deployment", "StatefulSet", "CronJob"];
13
14
  /** The images each workload of `objects` runs, by its name. */
14
15
  function imagesOf(objects) {
@@ -33,9 +34,19 @@ function imageChanges(before, after) {
33
34
  ...changed.map(([name, images]) => ` ${name}: ${before.images.get(name) ?? "(new)"} → ${images}`),
34
35
  ];
35
36
  }
36
- export const upgrade = Command.make("upgrade", { timeout: timeoutFlag }, ({ timeout }) => Effect.gen(function* () {
37
+ /** What an upgrade to this version refuses: a branch environment another release made, or what applying alasio refuses. */
38
+ const refusals = (config) => Effect.andThen(refuseBranchesOfOtherReleases(VERSION), Effect.asVoid(checkInstallation(config)));
39
+ export const upgrade = Command.make("upgrade", {
40
+ timeout: timeoutFlag,
41
+ check: Flag.Boolean("check").pipe(Flag.withDefault(false), Flag.withDescription("Check only, changing nothing, that alasio would upgrade: fail with what it would refuse, if anything")),
42
+ }, ({ timeout, check }) => Effect.gen(function* () {
37
43
  const config = yield* loadConfig;
38
44
  const target = yield* resolveTarget(config);
45
+ if (check) {
46
+ yield* Effect.provide(refusals(config), kubeApi(target));
47
+ return yield* Console.log(`alasio would upgrade ${describeTarget(target)} to ${VERSION}: it refuses nothing there now; nothing was changed.`);
48
+ }
49
+ yield* refuseFirst(target, refusals(config), "refuse");
39
50
  yield* ensureCluster(target);
40
51
  yield* Effect.provide(Effect.gen(function* () {
41
52
  const kube = yield* KubeApi;
@@ -43,9 +54,14 @@ export const upgrade = Command.make("upgrade", { timeout: timeoutFlag }, ({ time
43
54
  const version = running.find((object) => object.kind === "Deployment" && object.metadata?.name === RELEASE)?.metadata?.labels?.["app.kubernetes.io/version"] ?? null;
44
55
  const desired = installationObjects(yield* installConfig(config));
45
56
  yield* Console.log(imageChanges({ version, images: imagesOf(running) }, imagesOf(desired)).join("\n"));
57
+ yield* refuseBranchesOfOtherReleases(VERSION);
46
58
  yield* announce(target, yield* install(config, waitOptions(timeout)));
47
59
  }), kubeApi(target));
48
60
  })).pipe(Command.withShortDescription("Upgrade alasio to this version"), Command.withDescription("Does what alasio up does, with the images this version of alasio's package pins, after saying which images change " +
49
61
  "and from which version of alasio, and, for k3s on this machine, with the k3s and gVisor it pins, saying which it " +
50
- "installs in place of which. Run as npx alasio@latest upgrade to upgrade to the latest release."));
62
+ "installs in place of which. It upgrades main alone, and refuses while a branch environment another release of alasio " +
63
+ "made exists, which would not run on what it changes: delete each first, and make it again once upgraded. What it refuses " +
64
+ "it refuses before it changes anything, and with --check it checks for that alone, changing nothing; on this machine, of " +
65
+ "a cluster it made that does not answer, it can check nothing, so refuses. Run as npx alasio@latest upgrade to upgrade " +
66
+ "to the latest release."));
51
67
  //# sourceMappingURL=upgrade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
@@ -92,8 +92,14 @@ const configOf = (target) => Schema.Struct({
92
92
  install: defaulted(Schema.Record(Schema.String, Schema.Unknown), {}),
93
93
  });
94
94
  const OperatorConfigSchema = configOf(Target);
95
- /** Whether alasio may share `target`'s cluster with others: one a kubeconfig reaches, rather than one it makes. */
96
- export const sharedCluster = (target) => "kubeconfig" in target;
95
+ /** The kind of `target`. */
96
+ export const targetKind = (target) => ("host" in target ? "host" : "docker" in target ? "docker" : "kubeconfig");
97
+ /**
98
+ * How Telegram reaches the webhook intake on a cluster of `kind`: on this machine's
99
+ * address, from k3s on it; on the node's, from the cluster in Docker, whose port the
100
+ * machine maps; through a LoadBalancer Service, on one a kubeconfig reaches.
101
+ */
102
+ const EXPOSURES = { host: "hostAddress", docker: "node", kubeconfig: "loadBalancer" };
97
103
  /** The config file is not what alasio runs from: where, and which key and why. */
98
104
  export class OperatorConfigError extends Schema.TaggedError()("OperatorConfigError", {
99
105
  path: Schema.String,
@@ -114,20 +120,26 @@ export class NotInitialized extends Schema.TaggedError()("NotInitialized", {
114
120
  /**
115
121
  * The install configuration of `install`, with the Secrets alasio names: the bot's,
116
122
  * and Claude Code's when `claude`, as alasio finds Claude Code's login in its home when
117
- * there is none. On a cluster alasio may share with others (`shared`, one a kubeconfig
118
- * reaches), its pods take no other's place unless autoscaling.preemption says.
123
+ * there is none; and with how the webhook intake is reached, as the cluster's `target`
124
+ * makes it. On a cluster alasio may share with others (one a kubeconfig reaches), its
125
+ * pods take no other's place unless autoscaling.preemption says.
119
126
  */
120
- export function installConfigOf(install, { claude, shared }) {
127
+ export function installConfigOf(install, { claude, target }) {
121
128
  const alasio = Predicate.isObject(install["alasio"]) ? install["alasio"] : {};
122
129
  const own = ["telegram", "claude"].find((key) => Predicate.hasProperty(alasio, key));
123
130
  if (own)
124
131
  return Result.fail(`install.alasio.${own} is alasio's own to say: its Secret is the one alasio init writes`);
125
- // Given as anything but a map, it is refused as it is.
132
+ if (Predicate.hasProperty(install["webhook"], "exposure"))
133
+ return Result.fail("install.webhook.exposure is alasio's own to say: the target makes it");
134
+ // Given as anything but a map, each is refused as it is.
126
135
  const autoscaling = install["autoscaling"] ?? {};
136
+ const webhook = install["webhook"] ?? {};
137
+ const mapped = (value, defaults) => (Predicate.isObject(value) && !Array.isArray(value) ? { ...defaults, ...value } : value);
127
138
  return Result.mapBoth(decodeInstallConfig({
128
139
  ...install,
129
140
  alasio: { ...alasio, telegram: { existingSecret: TELEGRAM_SECRET }, claude: { existingSecret: claude ? CLAUDE_SECRET : "" } },
130
- autoscaling: Predicate.isObject(autoscaling) && !Array.isArray(autoscaling) ? { preemption: !shared, ...autoscaling } : autoscaling,
141
+ autoscaling: mapped(autoscaling, { preemption: target !== "kubeconfig" }),
142
+ webhook: mapped(webhook, { exposure: EXPOSURES[target] }),
131
143
  }), { onFailure: (error) => `install.${error.message}`, onSuccess: (config) => config });
132
144
  }
133
145
  /**
@@ -145,7 +157,7 @@ export function decodeOperatorConfig(path, input) {
145
157
  return Result.fail(new OperatorConfigError({ path, reason: describeIssue((Result.isFailure(precise) ? precise : decoded).failure.issue) }));
146
158
  }
147
159
  const { target, install } = decoded.success;
148
- const checked = installConfigOf(install, { claude: true, shared: sharedCluster(target) });
160
+ const checked = installConfigOf(install, { claude: true, target: targetKind(target) });
149
161
  if (Result.isFailure(checked))
150
162
  return Result.fail(new OperatorConfigError({ path, reason: checked.failure }));
151
163
  return Result.succeed({ path, file: input, target, install });