alasio 4.2.0 → 5.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 (63) hide show
  1. package/dist/cli/src/branches.js +295 -0
  2. package/dist/cli/src/branches.js.map +1 -0
  3. package/dist/cli/src/commands/branch.js +112 -0
  4. package/dist/cli/src/commands/branch.js.map +1 -0
  5. package/dist/cli/src/commands/common.js +27 -8
  6. package/dist/cli/src/commands/common.js.map +1 -1
  7. package/dist/cli/src/commands/grafana.js +72 -0
  8. package/dist/cli/src/commands/grafana.js.map +1 -0
  9. package/dist/cli/src/commands/init.js +6 -5
  10. package/dist/cli/src/commands/init.js.map +1 -1
  11. package/dist/cli/src/commands/lake.js +18 -4
  12. package/dist/cli/src/commands/lake.js.map +1 -1
  13. package/dist/cli/src/commands/login.js +12 -7
  14. package/dist/cli/src/commands/login.js.map +1 -1
  15. package/dist/cli/src/commands/logs.js +12 -6
  16. package/dist/cli/src/commands/logs.js.map +1 -1
  17. package/dist/cli/src/commands/uninstall.js +16 -1
  18. package/dist/cli/src/commands/uninstall.js.map +1 -1
  19. package/dist/cli/src/commands.js +3 -1
  20. package/dist/cli/src/commands.js.map +1 -1
  21. package/dist/cli/src/kube/api.js +35 -2
  22. package/dist/cli/src/kube/api.js.map +1 -1
  23. package/dist/cli/src/kube/apply.js +21 -8
  24. package/dist/cli/src/kube/apply.js.map +1 -1
  25. package/dist/cli/src/manifests/alasio.js +143 -74
  26. package/dist/cli/src/manifests/alasio.js.map +1 -1
  27. package/dist/cli/src/manifests/branch.js +45 -0
  28. package/dist/cli/src/manifests/branch.js.map +1 -0
  29. package/dist/cli/src/manifests/collector.js +199 -0
  30. package/dist/cli/src/manifests/collector.js.map +1 -0
  31. package/dist/cli/src/manifests/common.js +44 -11
  32. package/dist/cli/src/manifests/common.js.map +1 -1
  33. package/dist/cli/src/manifests/config.js +33 -19
  34. package/dist/cli/src/manifests/config.js.map +1 -1
  35. package/dist/cli/src/manifests/grafana.js +81 -0
  36. package/dist/cli/src/manifests/grafana.js.map +1 -0
  37. package/dist/cli/src/manifests/index.js +6 -1
  38. package/dist/cli/src/manifests/index.js.map +1 -1
  39. package/dist/cli/src/manifests/juicefs-csi.js +11 -5
  40. package/dist/cli/src/manifests/juicefs-csi.js.map +1 -1
  41. package/dist/cli/src/manifests/lake.js +66 -18
  42. package/dist/cli/src/manifests/lake.js.map +1 -1
  43. package/dist/cli/src/manifests/neon.js +24 -154
  44. package/dist/cli/src/manifests/neon.js.map +1 -1
  45. package/dist/cli/src/manifests/network-policies.js +141 -38
  46. package/dist/cli/src/manifests/network-policies.js.map +1 -1
  47. package/dist/cli/src/manifests/workspace-storage.js +98 -29
  48. package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
  49. package/dist/cli/src/release.js +6 -5
  50. package/dist/cli/src/release.js.map +1 -1
  51. package/dist/neon/control/branches.js +292 -0
  52. package/dist/neon/control/branches.js.map +1 -0
  53. package/dist/neon/control/jwt.js +58 -0
  54. package/dist/neon/control/jwt.js.map +1 -0
  55. package/dist/neon/control/scram.js +15 -0
  56. package/dist/neon/control/scram.js.map +1 -0
  57. package/dist/neon/control/secrets.js +111 -0
  58. package/dist/neon/control/secrets.js.map +1 -0
  59. package/dist/src/branch/names.js +18 -0
  60. package/dist/src/branch/names.js.map +1 -0
  61. package/dist/src/kube/config.js +14 -1
  62. package/dist/src/kube/config.js.map +1 -1
  63. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"network-policies.js","sourceRoot":"","sources":["../../../../src/manifests/network-policies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network-policies.js","sourceRoot":"","sources":["../../../../src/manifests/network-policies.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,17 @@ export const WORKSPACES_CREDENTIALS = componentName("workspaces-juicefs");
9
9
  * quota check's and a restore's, which its store policies admit (./network-policies.ts).
10
10
  */
11
11
  export const JUICEFS_ADMIN = { "alasio.dev/workload": "juicefs-admin" };
12
- /** The quota check runs daily, after the database's backup. */
12
+ /** The quota check runs daily, after the database's backup, and the collection after it. */
13
13
  const QUOTA_CHECK_SCHEDULE = "47 3 * * *";
14
- /** Whom the quota check runs as: nobody, as it reaches Valkey alone and writes nothing of its own. */
14
+ const COLLECTION_SCHEDULE = "17 4 * * *";
15
+ /** Whom the quota check and the collection run as: nobody, as they write nothing of their own. */
15
16
  const NOBODY = 65534;
17
+ /**
18
+ * The directory of the file system a claim of the class is, `<namespace>-<claim>`: of
19
+ * the driver's template's variables in the StorageClass's pathPattern, of the shell's in
20
+ * the clone's script.
21
+ */
22
+ const volumeDirectory = (namespace, claim) => `${namespace}-${claim}`;
16
23
  /** Valkey's address, as the driver's pods reach it from their own namespace. */
17
24
  export const VALKEY_ADDRESS = `${VALKEY}.${NAMESPACE}.svc.cluster.local:${VALKEY_PORT}`;
18
25
  /** The workspaces bucket's URL, path-style, as the driver's pods reach it from their own namespace. */
@@ -35,7 +42,7 @@ function storageClass({ workspaceStorage }) {
35
42
  "csi.storage.k8s.io/node-publish-secret-namespace": secret.namespace,
36
43
  "csi.storage.k8s.io/controller-expand-secret-name": secret.name,
37
44
  "csi.storage.k8s.io/controller-expand-secret-namespace": secret.namespace,
38
- pathPattern: "${.pvc.namespace}-${.pvc.name}",
45
+ pathPattern: volumeDirectory("${.pvc.namespace}", "${.pvc.name}"),
39
46
  },
40
47
  reclaimPolicy: "Delete",
41
48
  allowVolumeExpansion: true,
@@ -43,20 +50,30 @@ function storageClass({ workspaceStorage }) {
43
50
  };
44
51
  }
45
52
  /**
46
- * The volumes' usage checked daily against what they hold, and repaired (guide/quota.md
47
- * "Usage check and fix"): a client that ends unexpectedly loses the usage it had yet to
48
- * write, after which a volume's quota counts wrongly. Each volume, as `juicefs quota
49
- * list` tables it, is checked in turn. Kept, as the driver's objects are, while the
50
- * volumes remain.
53
+ * A container of a JuiceFS admin pod, `name`, running `lines` with JuiceFS's command line
54
+ * of the pinned client, the file system's metadata engine's URL in `META_URL`.
51
55
  */
52
- function quotaCheck(config) {
53
- const component = "juicefs-quota-check";
56
+ function adminContainer(config, name, ...lines) {
57
+ return {
58
+ name,
59
+ image: imageReference(config.workspaceStorage.csi.mountImage),
60
+ imagePullPolicy: "IfNotPresent",
61
+ command: ["/bin/sh", "-c", script("set -eu", ...lines)],
62
+ env: [{ name: "META_URL", valueFrom: { secretKeyRef: { name: WORKSPACES_CREDENTIALS, key: "metaurl" } } }],
63
+ resources: { requests: { cpu: "50m", memory: "64Mi" }, limits: { memory: "512Mi" } },
64
+ };
65
+ }
66
+ /**
67
+ * A daily JuiceFS admin task, `component`, whose container `name` runs `lines` restricted
68
+ * as nobody. Kept, as the driver's objects are, while the volumes remain.
69
+ */
70
+ function dailyAdminTask(config, component, schedule, name, ...lines) {
54
71
  return {
55
72
  apiVersion: "batch/v1",
56
73
  kind: "CronJob",
57
74
  metadata: { name: componentName(component), namespace: NAMESPACE, labels: { ...labels(component), ...VOLUME_DRIVER } },
58
75
  spec: {
59
- schedule: QUOTA_CHECK_SCHEDULE,
76
+ schedule,
60
77
  concurrencyPolicy: "Forbid",
61
78
  successfulJobsHistoryLimit: 1,
62
79
  failedJobsHistoryLimit: 3,
@@ -70,22 +87,7 @@ function quotaCheck(config) {
70
87
  restartPolicy: "Never",
71
88
  ...imagePullSecrets(config),
72
89
  securityContext: restrictedPod(NOBODY, NOBODY),
73
- containers: [{
74
- name: "quota-check",
75
- image: imageReference(config.workspaceStorage.csi.mountImage),
76
- imagePullPolicy: "IfNotPresent",
77
- command: [
78
- "/bin/sh",
79
- "-c",
80
- script("set -eu", 'quotas=$(juicefs quota list "$META_URL")',
81
- // The table's rows of volumes, the directories at the file system's top
82
- // (not those deleted into its trash), whose first column is their path.
83
- "printf '%s\\n' \"$quotas\" | awk -F '|' '$2 ~ /^ \\/[^\\/ ]+ +$/ { gsub(/ /, \"\", $2); print $2 }' | while read -r path; do", ' juicefs quota check "$META_URL" --path "$path" --repair', "done"),
84
- ],
85
- env: [{ name: "META_URL", valueFrom: { secretKeyRef: { name: WORKSPACES_CREDENTIALS, key: "metaurl" } } }],
86
- securityContext: restrictedContainer(),
87
- resources: { requests: { cpu: "50m", memory: "64Mi" }, limits: { memory: "512Mi" } },
88
- }],
90
+ containers: [{ ...adminContainer(config, name, ...lines), securityContext: restrictedContainer() }],
89
91
  },
90
92
  },
91
93
  },
@@ -93,6 +95,73 @@ function quotaCheck(config) {
93
95
  },
94
96
  };
95
97
  }
98
+ /**
99
+ * The volumes' usage checked daily against what they hold, and repaired (guide/quota.md
100
+ * "Usage check and fix"): a client that ends unexpectedly loses the usage it had yet to
101
+ * write, after which a volume's quota counts wrongly. Each volume, as `juicefs quota
102
+ * list` tables it, is checked in turn.
103
+ */
104
+ function quotaCheck(config) {
105
+ return dailyAdminTask(config, "juicefs-quota-check", QUOTA_CHECK_SCHEDULE, "quota-check", 'quotas=$(juicefs quota list "$META_URL")',
106
+ // The table's rows of volumes, the directories at the file system's top (not those
107
+ // deleted into its trash), whose first column is their path.
108
+ "printf '%s\\n' \"$quotas\" | awk -F '|' '$2 ~ /^ \\/[^\\/ ]+ +$/ { gsub(/ /, \"\", $2); print $2 }' | while read -r path; do", ' juicefs quota check "$META_URL" --path "$path" --repair', "done");
109
+ }
110
+ /**
111
+ * The file system collected daily (`juicefs gc --delete`, guide/gc.md): what no file
112
+ * holds deleted from the bucket, and the trees of clones that never finished removed, a
113
+ * day after they were begun. A clone builds its tree detached and attaches it only once
114
+ * it is whole, and its client removes it when the clone fails; nothing but this removes
115
+ * one whose client ended first.
116
+ */
117
+ function collection(config) {
118
+ return dailyAdminTask(config, "juicefs-gc", COLLECTION_SCHEDULE, "gc", 'juicefs gc "$META_URL" --delete');
119
+ }
120
+ /**
121
+ * The Job that clones the session volume `$SOURCE_CLAIM` of `$SOURCE_NAMESPACE` into
122
+ * the newly made `$DESTINATION_CLAIM` of `$DESTINATION_NAMESPACE`, which alasio runs
123
+ * as it forks a session (src/sandbox/index.ts), giving it those. The workspace and home,
124
+ * `juicefs clone --preserve`d, keep their owners and modes, and their data, shared until
125
+ * either copy changes it, is copied by none. They are cloned under the destination's
126
+ * directory, which the driver makes and gives the claim's quota as it provisions the
127
+ * volume, after the claim is bound: the Job waits for the quota, which the clones are
128
+ * then charged to. The driver counts the new quota's usage in a scan of its own, though,
129
+ * which may end once a clone is in the directory, counting it a second time; so once the
130
+ * clones are done, and the client that charged them has stopped and written what it
131
+ * counted, the usage is counted anew (`juicefs quota check --repair`). The directory is
132
+ * given its source's owner and mode, as kubelet gives a volume whose root is not yet the
133
+ * pod's group that group throughout (fsGroupChangePolicy OnRootMismatch), which would
134
+ * widen every cloned file's mode. On a mount of the whole file system, as a volume's
135
+ * mount pod mounts its directory alone: privileged, as FUSE needs, and as root, to give
136
+ * each file its owner.
137
+ */
138
+ export function cloneJob(config) {
139
+ const component = "workspace-clone";
140
+ const source = `/jfs/${volumeDirectory("$SOURCE_NAMESPACE", "$SOURCE_CLAIM")}`;
141
+ const destination = volumeDirectory("$DESTINATION_NAMESPACE", "$DESTINATION_CLAIM");
142
+ return {
143
+ apiVersion: "batch/v1",
144
+ kind: "Job",
145
+ metadata: { generateName: `${componentName(component)}-`, namespace: NAMESPACE, labels: labels(component) },
146
+ spec: {
147
+ // A clone that fails leaves half a destination, which alasio deletes with the fork.
148
+ backoffLimit: 0,
149
+ activeDeadlineSeconds: 3600,
150
+ ttlSecondsAfterFinished: 3600,
151
+ template: {
152
+ metadata: { labels: { ...labels(component), ...JUICEFS_ADMIN } },
153
+ spec: {
154
+ restartPolicy: "Never",
155
+ ...imagePullSecrets(config),
156
+ containers: [{
157
+ ...adminContainer(config, "clone", `until [ -n "$(juicefs quota get "$META_URL" --path "/${destination}" 2>/dev/null)" ]; do sleep 2; done`, "mkdir -p /jfs", 'juicefs mount --no-bgjob --cache-size 0 "$META_URL" /jfs &', "client=$!", 'until [ "$(stat --file-system --format=%T /jfs)" = fuseblk ]; do kill -0 "$client"; sleep 1; done', "for dir in workspace home; do", ` juicefs clone --preserve "${source}/$dir" "/jfs/${destination}/$dir"`, "done", `chown "$(stat --format=%u:%g "${source}")" "/jfs/${destination}"`, `chmod "$(stat --format=%a "${source}")" "/jfs/${destination}"`, "umount /jfs", 'wait "$client"', `juicefs quota check "$META_URL" --path "/${destination}" --repair`),
158
+ securityContext: { privileged: true },
159
+ }],
160
+ },
161
+ },
162
+ },
163
+ };
164
+ }
96
165
  /**
97
166
  * Formats the file system, unless it is formatted already, beside Valkey's server, whose
98
167
  * pod is ready only once it is: JuiceFS's driver sets a new volume's quota before the
@@ -125,10 +194,10 @@ function formatter(config) {
125
194
  resources: { requests: { cpu: "10m", memory: "32Mi" }, limits: { memory: "256Mi" } },
126
195
  };
127
196
  }
128
- /** Workspace storage's objects, when it is on: Valkey, the CSI driver, the StorageClass, and the quota check. */
197
+ /** Workspace storage's objects, when it is on: Valkey, the CSI driver, the StorageClass, the quota check and the collection. */
129
198
  export function workspaceStorageObjects(config) {
130
199
  if (!config.workspaceStorage.enabled)
131
200
  return [];
132
- return [...valkeyObjects(config, [formatter(config)]), ...juicefsCsiObjects(config), storageClass(config), quotaCheck(config)];
201
+ return [...valkeyObjects(config, [formatter(config)]), ...juicefsCsiObjects(config), storageClass(config), quotaCheck(config), collection(config)];
133
202
  }
134
203
  //# sourceMappingURL=workspace-storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-storage.js","sourceRoot":"","sources":["../../../../src/manifests/workspace-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-storage.js","sourceRoot":"","sources":["../../../../src/manifests/workspace-storage.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,14 @@
3
3
  * version and the digests of the images it published here, with tooling/pin-release.ts,
4
4
  * before it builds the package; this module holds nothing else.
5
5
  */
6
- export const VERSION = "4.2.0";
6
+ export const VERSION = "5.0.0";
7
7
  /** alasio's own images, tagged with the version and pinned by digest once released. */
8
8
  export const IMAGES = {
9
- alasio: { repository: "ghcr.io/eaucoin/alasio", tag: VERSION, digest: "sha256:21d8eb93752e9de02554f056471b32f7898422fcc7d32be5dc5ff34bc3b870c6" },
10
- agent: { repository: "ghcr.io/eaucoin/alasio-agent", tag: VERSION, digest: "sha256:477587274974df027da1937a2f6b8558527801e0269e77f5207800ab13ce7ee5" },
11
- lake: { repository: "ghcr.io/eaucoin/alasio-lake", tag: VERSION, digest: "sha256:a9bb1894ea755fff84bacd1d5411d602359001e30e0e2ab2afcd2924d082d4a9" },
9
+ alasio: { repository: "ghcr.io/eaucoin/alasio", tag: VERSION, digest: "sha256:3e9e3ace6f20b94c242126a7ab57b7e210d6292829eb0f3b64f3f4ebafd9b98c" },
10
+ agent: { repository: "ghcr.io/eaucoin/alasio-agent", tag: VERSION, digest: "sha256:0a6671c6899b3df079fe0a0646019485a4205af3a0847c95e2def818c63e0261" },
11
+ lake: { repository: "ghcr.io/eaucoin/alasio-lake", tag: VERSION, digest: "sha256:265421f037f2677f955a4a6852872bee4aeb3a258132ef7bf05ab6e3b2ccf277" },
12
+ grafana: { repository: "ghcr.io/eaucoin/alasio-grafana", tag: VERSION, digest: "sha256:885de54829d3b96e5202384ab55b21c39d358dd44aea88eb51cb15d1942b1ad8" },
12
13
  };
13
14
  /** The node image of the cluster in Docker: k3s with gVisor (cluster/node), pinned like the others. */
14
- export const NODE_IMAGE = { repository: "ghcr.io/eaucoin/alasio-node", tag: VERSION, digest: "sha256:39089951ebcea855d8c2d54de6978d128d8dbaa57784212e0480747fa9957a94" };
15
+ export const NODE_IMAGE = { repository: "ghcr.io/eaucoin/alasio-node", tag: VERSION, digest: "sha256:5f11e256cdbc506f12c371de2b1a57651f9532d9b3e15f2faca477f6b3baa376" };
15
16
  //# sourceMappingURL=release.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sourceRoot":"","sources":["../../../src/release.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,uFAAuF;AACvF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE;IACjJ,KAAK,EAAE,EAAE,UAAU,EAAE,8BAA8B,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE;IACtJ,IAAI,EAAE,EAAE,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE;CACrJ,CAAC;AAEF,uGAAuG;AACvG,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE,CAAC"}
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../../src/release.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,uFAAuF;AACvF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE;IACjJ,KAAK,EAAE,EAAE,UAAU,EAAE,8BAA8B,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE;IACtJ,IAAI,EAAE,EAAE,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE;IACpJ,OAAO,EAAE,EAAE,UAAU,EAAE,gCAAgC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE;CAC3J,CAAC;AAEF,uGAAuG;AACvG,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,6BAA6B,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,yEAAyE,EAAE,CAAC"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * neon-control's branches: alasio's timeline, the branch `main`, and the child timelines
3
+ * branched from it or from each other, each with a compute neon-control serves a spec.
4
+ * What is decided about them, without I/O: names, requests, the record of each, what
5
+ * the storage controller's answers mean, and the spec of a branch's compute. The service
6
+ * (./service.ts) does the I/O.
7
+ *
8
+ * A branch is `creating` from the moment its timeline id is chosen until the storage
9
+ * controller has placed it, `ready` from then, and `deleting` from when its deletion
10
+ * starts until the storage controller has deleted it, when its record goes. Its id and
11
+ * branch point are recorded before the storage controller is first asked, so a creation
12
+ * asked again, after a failure or a restart, asks for exactly the same timeline.
13
+ *
14
+ * A branch's compute has credentials of its own, which whoever asks for the branch makes
15
+ * and neon-control is given only the hashes of: the SCRAM verifier of the password of
16
+ * alasio's role on it, which its spec gives the role, and the SHA-256 of the token it
17
+ * fetches its spec with, which fetches its spec alone. So what a branch is given reaches
18
+ * neither main's compute nor another branch's spec. main's compute keeps the stack's.
19
+ */
20
+ import { createHash, timingSafeEqual } from "node:crypto";
21
+ import { DATABASE, ROLE } from "./secrets.js";
22
+ /** alasio's own branch: its first timeline, bootstrapped, never deleted. */
23
+ export const MAIN = "main";
24
+ /**
25
+ * The longest name a branch may have. Branch environments name objects
26
+ * `alasio-branch-<name>-<part>`; at this length one with a part of up to 18 characters
27
+ * still fits the 63 characters Kubernetes allows a namespace, a Service or a label value.
28
+ */
29
+ export const MAX_NAME_LENGTH = 30;
30
+ /**
31
+ * The scope of the lake's token, which lists the branches and does nothing else: Neon's
32
+ * own services do not know it.
33
+ */
34
+ export const BRANCHES_SCOPE = "branches";
35
+ /**
36
+ * The scopes of the tokens a call of neon-control's API (`method` on `url`) is taken
37
+ * with: the admin's, as the storage controller's hooks bear it, and for a list of the
38
+ * branches the lake's too, which keeps its files while any branch may read them.
39
+ */
40
+ export function callScopes(method, url) {
41
+ return method === "GET" && url === "/branches" ? ["admin", BRANCHES_SCOPE] : ["admin"];
42
+ }
43
+ /** A refusal for the API's caller: its HTTP status, and what it says. */
44
+ export class BranchError extends Error {
45
+ status;
46
+ constructor(status, message) {
47
+ super(message);
48
+ this.status = status;
49
+ }
50
+ }
51
+ /** What is wrong with `name` as a branch's name, or null if nothing is. */
52
+ export function nameProblem(name) {
53
+ if (name === MAIN)
54
+ return `${MAIN} is alasio's own branch`;
55
+ if (name.length > MAX_NAME_LENGTH)
56
+ return `a branch's name is at most ${MAX_NAME_LENGTH} characters`;
57
+ // A DNS-1123 label, as the names of the objects named after it must be.
58
+ if (!/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/u.test(name))
59
+ return "a branch's name is lowercase letters, digits and inner hyphens";
60
+ return null;
61
+ }
62
+ /**
63
+ * The branch point `text` names, an LSN written `<high>/<low>` in hexadecimal, as Neon
64
+ * writes it, and aligned up to 8 bytes, as the pageserver branches at it; null if it
65
+ * names none.
66
+ */
67
+ export function branchPoint(text) {
68
+ const match = /^([0-9a-f]{1,8})\/([0-9a-f]{1,8})$/iu.exec(text);
69
+ if (!match)
70
+ return null;
71
+ const [, high = "", low = ""] = match;
72
+ const aligned = ((BigInt(`0x${high}`) << 32n) + BigInt(`0x${low}`) + 7n) & ~7n;
73
+ return `${(aligned >> 32n).toString(16).toUpperCase()}/${(aligned & 0xffffffffn).toString(16).toUpperCase()}`;
74
+ }
75
+ /** The SHA-256 of `token`, in hexadecimal: what neon-control keeps of a compute's token. */
76
+ export const tokenSha256 = (token) => createHash("sha256").update(token).digest("hex");
77
+ /** The credentials `value` gives a branch's compute, checked. */
78
+ function computeCredentials(value) {
79
+ const { passwordVerifier, tokenSha256: sha, ...rest } = (typeof value === "object" && value !== null ? value : {});
80
+ if (Object.keys(rest).length > 0 || typeof passwordVerifier !== "string" || !passwordVerifier.startsWith("SCRAM-SHA-256$") ||
81
+ typeof sha !== "string" || !/^[0-9a-f]{64}$/u.test(sha)) {
82
+ throw new BranchError(400, "a branch's compute is given as { passwordVerifier, tokenSha256 }: a SCRAM-SHA-256 verifier, and a SHA-256 in hexadecimal");
83
+ }
84
+ return { passwordVerifier, tokenSha256: sha };
85
+ }
86
+ /** The branch `body` asks for: `{ name, parent?, lsn?, compute }`, its parent main if not given. */
87
+ export function branchRequest(body) {
88
+ if (typeof body !== "object" || body === null)
89
+ throw new BranchError(400, "a branch is asked for as { name, parent?, lsn?, compute }");
90
+ const { name, parent = MAIN, lsn = null, compute, ...rest } = body;
91
+ const unknown = Object.keys(rest);
92
+ if (unknown.length > 0)
93
+ throw new BranchError(400, `a branch has no ${unknown.join(", ")}`);
94
+ if (typeof name !== "string")
95
+ throw new BranchError(400, "a branch is asked for by its name");
96
+ const problem = nameProblem(name);
97
+ if (problem)
98
+ throw new BranchError(400, `${name} is no branch's name: ${problem}`);
99
+ if (typeof parent !== "string")
100
+ throw new BranchError(400, "a branch's parent is a branch's name");
101
+ const credentials = computeCredentials(compute);
102
+ if (lsn === null)
103
+ return { name, parent, lsn, compute: credentials };
104
+ const point = typeof lsn === "string" ? branchPoint(lsn) : null;
105
+ if (point === null)
106
+ throw new BranchError(400, `${String(lsn)} is no LSN: an LSN is written <high>/<low>, in hexadecimal`);
107
+ return { name, parent, lsn: point, compute: credentials };
108
+ }
109
+ /** The id of the compute of the branch `name`: `alasio` for main's, `branch-<name>` for any other's. */
110
+ export function computeId(name) {
111
+ return name === MAIN ? "alasio" : `branch-${name}`;
112
+ }
113
+ /** The ready branch whose compute is `id`, if any. */
114
+ export function branchOfCompute(branches, id) {
115
+ return branches.find((branch) => branch.state === "ready" && computeId(branch.name) === id);
116
+ }
117
+ /** The compute whose token `authorization` bears, by its id: main's, the stack's `mainToken`, or a branch's own; null for none. */
118
+ export function computeOfToken(branches, authorization, mainToken) {
119
+ const token = /^Bearer (.+)$/u.exec(authorization ?? "")?.[1];
120
+ if (!token)
121
+ return null;
122
+ const same = (a, b) => a.length === b.length && timingSafeEqual(Buffer.from(a), Buffer.from(b));
123
+ if (mainToken && same(token, mainToken))
124
+ return computeId(MAIN);
125
+ const sha = tokenSha256(token);
126
+ const owner = branches.find((branch) => branch.compute !== null && same(sha, branch.compute.tokenSha256));
127
+ return owner ? computeId(owner.name) : null;
128
+ }
129
+ /** `branch` as the API answers it (BranchView). */
130
+ export function branchView({ compute: _credentials, ...branch }) {
131
+ return { ...branch, computeId: computeId(branch.name) };
132
+ }
133
+ /** The branch named `name`, if any. */
134
+ export const branchNamed = (branches, name) => branches.find((branch) => branch.name === name);
135
+ /** `branches` with `branch` in place of the one of its name, or added after them. */
136
+ export function withBranch(branches, branch) {
137
+ const index = branches.findIndex(({ name }) => name === branch.name);
138
+ return index === -1 ? [...branches, branch] : branches.map((existing, at) => (at === index ? branch : existing));
139
+ }
140
+ /** `branches` without the one named `name`. */
141
+ export const withoutBranch = (branches, name) => branches.filter((branch) => branch.name !== name);
142
+ /**
143
+ * What asking for `request` comes to, given `branches`: the branch of that name already
144
+ * there, ready or still being created, when it is the one asked for; null when there is
145
+ * none, and its parent is ready to branch from. Refuses a name taken by another branch,
146
+ * or one being deleted, and a parent that is not ready.
147
+ */
148
+ export function existingBranch(branches, request) {
149
+ const existing = branchNamed(branches, request.name);
150
+ if (existing) {
151
+ const same = existing.parent === request.parent && (request.lsn === null || existing.lsn === request.lsn);
152
+ if (existing.state === "deleting")
153
+ throw new BranchError(409, `${request.name} is being deleted`);
154
+ if (!same)
155
+ throw new BranchError(409, `${request.name} is a branch of ${existing.parent} at ${existing.lsn} already`);
156
+ return existing;
157
+ }
158
+ const parent = branchNamed(branches, request.parent);
159
+ if (!parent)
160
+ throw new BranchError(404, `there is no branch ${request.parent} to branch from`);
161
+ if (parent.state !== "ready")
162
+ throw new BranchError(409, `${request.parent} is ${parent.state}, and is branched from only once ready`);
163
+ return null;
164
+ }
165
+ /**
166
+ * Starts deleting the branch `name`: `branches` with it `deleting`, which neither serves
167
+ * its compute nor is repaired. Refuses main, a branch there is not, and one that is the
168
+ * parent of another, which the pageserver would refuse to delete.
169
+ */
170
+ export function deleting(branches, name) {
171
+ if (name === MAIN)
172
+ throw new BranchError(400, `${MAIN} is alasio's own branch, which is never deleted`);
173
+ const branch = branchNamed(branches, name);
174
+ if (!branch)
175
+ throw new BranchError(404, `there is no branch ${name}`);
176
+ const children = branches.filter((child) => child.parent === name).map((child) => child.name);
177
+ if (children.length > 0)
178
+ throw new BranchError(412, `${name} has branches of its own, deleted first: ${children.join(", ")}`);
179
+ return withBranch(branches, { name, parent: branch.parent, timelineId: branch.timelineId, lsn: branch.lsn, createdAt: branch.createdAt, compute: branch.compute, state: "deleting" });
180
+ }
181
+ /**
182
+ * The placement of `branch`'s timeline the storage controller created, as its answer
183
+ * says, once that answer is checked to be of the timeline asked for. The request is an
184
+ * untagged union whose last form is a timeline bootstrapped anew, which a request for a
185
+ * branch the controller did not read as one becomes; so a branch's answer must name its
186
+ * parent's timeline and its branch point.
187
+ */
188
+ export function placementOf(branch, parentTimelineId, created) {
189
+ const lsn = typeof created.ancestor_lsn === "string" ? branchPoint(created.ancestor_lsn) : null;
190
+ const made = `the storage controller made timeline ${String(created.timeline_id)}, of ${String(created.ancestor_timeline_id ?? "no ancestor")} at ${lsn ?? "no LSN"}`;
191
+ if (created.timeline_id !== branch.timelineId || (created.ancestor_timeline_id ?? null) !== parentTimelineId || (parentTimelineId !== null && lsn !== branch.lsn)) {
192
+ throw new BranchError(502, `${made}, not ${branch.name}'s ${branch.timelineId} of ${parentTimelineId ?? "no ancestor"} at ${branch.lsn ?? "no LSN"}`);
193
+ }
194
+ if (!created.safekeepers)
195
+ throw new BranchError(502, `the storage controller placed ${branch.name}'s timeline on no safekeepers`);
196
+ return { generation: created.safekeepers.generation, ids: created.safekeepers.safekeepers.map((sk) => sk.id) };
197
+ }
198
+ /**
199
+ * What the storage controller's refusal to create `branch` means, its `status` (null when
200
+ * it did not answer) and `message`: a branch point its parent's history no longer holds,
201
+ * or does not reach, is the caller's to change (406); any other is the caller's to ask
202
+ * again, for the same timeline. The controller answers a pageserver's refusal, other than
203
+ * a 404 or 503, as a 409 that names the pageserver's status.
204
+ */
205
+ export function creationRefused(branch, status, message) {
206
+ if (status === 406 || (status === 409 && message.includes("406 Not Acceptable"))) {
207
+ return new BranchError(406, `${branch.parent} has no ${branch.lsn} to branch ${branch.name} from: it is below its garbage collection cutoff, or past its end (${message})`);
208
+ }
209
+ const answered = status === null ? message : `${status} ${message}`;
210
+ return new BranchError(503, `the storage controller did not create ${branch.name}, which may be asked for again: ${answered}`);
211
+ }
212
+ /** The notification `body` is, checked. */
213
+ export function safekeepersNotified(body) {
214
+ const { timeline_id, generation, safekeepers } = (typeof body === "object" && body !== null ? body : {});
215
+ const ids = Array.isArray(safekeepers) ? safekeepers.map((sk) => (typeof sk === "object" && sk !== null ? sk["id"] : undefined)) : [];
216
+ if (typeof timeline_id !== "string" || typeof generation !== "number" || ids.length === 0 || !ids.every((id) => typeof id === "number")) {
217
+ throw new BranchError(400, "safekeepers are notified as { tenant_id, timeline_id, generation, safekeepers: [{ id }] }");
218
+ }
219
+ return { timelineId: timeline_id, placement: { generation, ids: ids } };
220
+ }
221
+ /**
222
+ * `branches` with the ready branch of the notified timeline placed where it says, when
223
+ * it is of a later generation than its own: what its compute's spec names, and what the
224
+ * safekeepers are repaired with, from then on. Null when no branch changes.
225
+ */
226
+ export function withNotifiedPlacement(branches, { timelineId, placement }) {
227
+ const branch = branches.find((candidate) => candidate.state === "ready" && candidate.timelineId === timelineId);
228
+ if (!branch || placement.generation <= branch.safekeepers.generation)
229
+ return null;
230
+ return withBranch(branches, { ...branch, safekeepers: placement });
231
+ }
232
+ /** The port every compute serves Postgres on. */
233
+ export const COMPUTE_PORT = 55433;
234
+ function setting(name, value, vartype) {
235
+ return { name, value: String(value), vartype };
236
+ }
237
+ /**
238
+ * The spec of `branch`'s compute: a primary on its timeline, at its safekeepers. The role
239
+ * and database are main's, which every branch inherits with its data; the role's password
240
+ * is the branch's own.
241
+ *
242
+ * Its storage token is the tenant's, as the pageserver and safekeepers take no narrower
243
+ * one: a timeline is not a scope of theirs. A branch's compute could read main's timeline
244
+ * with it, which only Neon's storage services take, and only from the stack's pods.
245
+ */
246
+ export function computeConfig(branch, stack) {
247
+ // The timeline was placed on safekeepers of the stack, so each id is one of theirs.
248
+ const safekeeper = (id) => stack.safekeepers.find((sk) => sk.id === id);
249
+ return {
250
+ spec: {
251
+ format_version: 1.0,
252
+ suspend_timeout_seconds: -1,
253
+ cluster: {
254
+ cluster_id: "alasio",
255
+ name: "alasio",
256
+ roles: [{ name: ROLE, encrypted_password: branch.compute?.passwordVerifier ?? stack.passwordVerifier, options: null }],
257
+ databases: [{ name: DATABASE, owner: ROLE, options: null }],
258
+ settings: [
259
+ setting("listen_addresses", "0.0.0.0", "string"),
260
+ setting("port", COMPUTE_PORT, "integer"),
261
+ setting("max_connections", 100, "integer"),
262
+ setting("shared_buffers", "128MB", "string"),
263
+ setting("password_encryption", "scram-sha-256", "enum"),
264
+ // Durability is the safekeepers': a commit waits for their quorum,
265
+ // and the compute's own disk is rebuilt on every start.
266
+ setting("fsync", "off", "bool"),
267
+ setting("synchronous_standby_names", "walproposer", "string"),
268
+ setting("shared_preload_libraries", "neon", "string"),
269
+ setting("wal_level", "replica", "enum"),
270
+ setting("wal_log_hints", "off", "bool"),
271
+ setting("wal_keep_size", 0, "integer"),
272
+ setting("wal_sender_timeout", "5s", "string"),
273
+ setting("max_wal_senders", 10, "integer"),
274
+ setting("max_replication_slots", 10, "integer"),
275
+ setting("max_replication_write_lag", "15MB", "string"),
276
+ setting("max_replication_flush_lag", "10GB", "string"),
277
+ setting("restart_after_crash", "off", "bool"),
278
+ ],
279
+ },
280
+ delta_operations: [],
281
+ tenant_id: stack.tenantId,
282
+ timeline_id: branch.timelineId,
283
+ mode: "Primary",
284
+ pageserver_connstring: `postgresql://no_user@${stack.pageserverHost}:6400`,
285
+ safekeepers_generation: branch.safekeepers.generation,
286
+ safekeeper_connstrings: branch.safekeepers.ids.map((id) => `${safekeeper(id).host}:${safekeeper(id).pgPort}`),
287
+ storage_auth_token: stack.storageAuthToken,
288
+ },
289
+ compute_ctl_config: { jwks: stack.jwks },
290
+ };
291
+ }
292
+ //# sourceMappingURL=branches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../../neon/control/branches.ts"],"names":[],"mappings":"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"}