@intentic/providers 1.326.0 → 1.328.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.
- package/README.md +4 -1
- package/dist/auth/authentik.d.ts +1 -1
- package/dist/auth/authentik.d.ts.map +1 -1
- package/dist/auth/authentik.js +5 -6
- package/dist/auth/authentik.js.map +1 -1
- package/dist/backings/garage-bucket.d.ts +1 -1
- package/dist/backings/garage-bucket.d.ts.map +1 -1
- package/dist/backings/garage-bucket.js +1 -2
- package/dist/backings/garage-bucket.js.map +1 -1
- package/dist/backings/garage.d.ts +1 -1
- package/dist/backings/garage.d.ts.map +1 -1
- package/dist/backings/garage.js +6 -6
- package/dist/backings/garage.js.map +1 -1
- package/dist/backings/postgres-database.d.ts +1 -1
- package/dist/backings/postgres-database.d.ts.map +1 -1
- package/dist/backings/postgres-database.js +1 -2
- package/dist/backings/postgres-database.js.map +1 -1
- package/dist/backings/postgres.d.ts +1 -1
- package/dist/backings/postgres.d.ts.map +1 -1
- package/dist/backings/postgres.js +6 -6
- package/dist/backings/postgres.js.map +1 -1
- package/dist/backings/valkey-namespace.d.ts +1 -1
- package/dist/backings/valkey-namespace.d.ts.map +1 -1
- package/dist/backings/valkey-namespace.js +1 -2
- package/dist/backings/valkey-namespace.js.map +1 -1
- package/dist/backings/valkey.d.ts +1 -1
- package/dist/backings/valkey.d.ts.map +1 -1
- package/dist/backings/valkey.js +7 -7
- package/dist/backings/valkey.js.map +1 -1
- package/dist/backup/backup-restore.d.ts +1 -1
- package/dist/backup/backup-restore.d.ts.map +1 -1
- package/dist/backup/backup-restore.js +1 -2
- package/dist/backup/backup-restore.js.map +1 -1
- package/dist/backup/backup.d.ts +1 -1
- package/dist/backup/backup.d.ts.map +1 -1
- package/dist/backup/backup.js +11 -10
- package/dist/backup/backup.js.map +1 -1
- package/dist/core/backing-provider.d.ts +4 -3
- package/dist/core/backing-provider.d.ts.map +1 -1
- package/dist/core/backing-provider.js +6 -8
- package/dist/core/backing-provider.js.map +1 -1
- package/dist/core/backing-ssh.d.ts +0 -1
- package/dist/core/backing-ssh.d.ts.map +1 -1
- package/dist/core/backing-ssh.js +0 -1
- package/dist/core/backing-ssh.js.map +1 -1
- package/dist/core/host-files.d.ts.map +1 -1
- package/dist/core/host-files.js +1 -1
- package/dist/core/host-files.js.map +1 -1
- package/dist/core/inputs.d.ts.map +1 -1
- package/dist/core/inputs.js +2 -1
- package/dist/core/inputs.js.map +1 -1
- package/dist/core/instance-binding.d.ts +2 -2
- package/dist/core/instance-binding.d.ts.map +1 -1
- package/dist/core/instance-binding.js +1 -2
- package/dist/core/instance-binding.js.map +1 -1
- package/dist/core/list-stamped.d.ts +13 -3
- package/dist/core/list-stamped.d.ts.map +1 -1
- package/dist/core/list-stamped.js +46 -15
- package/dist/core/list-stamped.js.map +1 -1
- package/dist/core/ssh-probe.d.ts +1 -1
- package/dist/core/ssh-probe.d.ts.map +1 -1
- package/dist/core/ssh-probe.js +1 -2
- package/dist/core/ssh-probe.js.map +1 -1
- package/dist/core/ssh.d.ts +1 -2
- package/dist/core/ssh.d.ts.map +1 -1
- package/dist/core/ssh.js +1 -2
- package/dist/core/ssh.js.map +1 -1
- package/dist/core/stamp.d.ts +23 -0
- package/dist/core/stamp.d.ts.map +1 -0
- package/dist/core/stamp.js +34 -0
- package/dist/core/stamp.js.map +1 -0
- package/dist/forgejo/ci.d.ts +1 -1
- package/dist/forgejo/ci.d.ts.map +1 -1
- package/dist/forgejo/ci.js +1 -3
- package/dist/forgejo/ci.js.map +1 -1
- package/dist/forgejo/forgejo-notify.d.ts +1 -1
- package/dist/forgejo/forgejo-notify.d.ts.map +1 -1
- package/dist/forgejo/forgejo-notify.js +1 -3
- package/dist/forgejo/forgejo-notify.js.map +1 -1
- package/dist/forgejo/forgejo-org.d.ts +1 -1
- package/dist/forgejo/forgejo-org.d.ts.map +1 -1
- package/dist/forgejo/forgejo-org.js +1 -3
- package/dist/forgejo/forgejo-org.js.map +1 -1
- package/dist/forgejo/forgejo-runner.d.ts +1 -1
- package/dist/forgejo/forgejo-runner.d.ts.map +1 -1
- package/dist/forgejo/forgejo-runner.js +4 -4
- package/dist/forgejo/forgejo-runner.js.map +1 -1
- package/dist/forgejo/forgejo-team.d.ts +1 -1
- package/dist/forgejo/forgejo-team.d.ts.map +1 -1
- package/dist/forgejo/forgejo-team.js +1 -3
- package/dist/forgejo/forgejo-team.js.map +1 -1
- package/dist/forgejo/forgejo-user.d.ts +1 -1
- package/dist/forgejo/forgejo-user.d.ts.map +1 -1
- package/dist/forgejo/forgejo-user.js +1 -3
- package/dist/forgejo/forgejo-user.js.map +1 -1
- package/dist/forgejo/forgejo.d.ts +1 -1
- package/dist/forgejo/forgejo.d.ts.map +1 -1
- package/dist/forgejo/forgejo.js +4 -4
- package/dist/forgejo/forgejo.js.map +1 -1
- package/dist/forgejo/repo.d.ts +1 -1
- package/dist/forgejo/repo.d.ts.map +1 -1
- package/dist/forgejo/repo.js +1 -3
- package/dist/forgejo/repo.js.map +1 -1
- package/dist/host/host.d.ts +1 -1
- package/dist/host/host.d.ts.map +1 -1
- package/dist/host/host.js +1 -2
- package/dist/host/host.js.map +1 -1
- package/dist/host/workspace.d.ts +1 -1
- package/dist/host/workspace.d.ts.map +1 -1
- package/dist/host/workspace.js +5 -4
- package/dist/host/workspace.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/komodo/deployment.d.ts +1 -1
- package/dist/komodo/deployment.d.ts.map +1 -1
- package/dist/komodo/deployment.js +1 -3
- package/dist/komodo/deployment.js.map +1 -1
- package/dist/komodo/komodo-notify.d.ts +1 -1
- package/dist/komodo/komodo-notify.d.ts.map +1 -1
- package/dist/komodo/komodo-notify.js +1 -3
- package/dist/komodo/komodo-notify.js.map +1 -1
- package/dist/komodo/komodo-periphery.d.ts +1 -1
- package/dist/komodo/komodo-periphery.d.ts.map +1 -1
- package/dist/komodo/komodo-periphery.js +1 -2
- package/dist/komodo/komodo-periphery.js.map +1 -1
- package/dist/komodo/komodo-server.d.ts +1 -1
- package/dist/komodo/komodo-server.d.ts.map +1 -1
- package/dist/komodo/komodo-server.js +1 -3
- package/dist/komodo/komodo-server.js.map +1 -1
- package/dist/komodo/komodo-user.d.ts +1 -1
- package/dist/komodo/komodo-user.d.ts.map +1 -1
- package/dist/komodo/komodo-user.js +1 -3
- package/dist/komodo/komodo-user.js.map +1 -1
- package/dist/komodo/komodo.d.ts +2 -2
- package/dist/komodo/komodo.d.ts.map +1 -1
- package/dist/komodo/komodo.js +42 -160
- package/dist/komodo/komodo.js.map +1 -1
- package/dist/network/cf-route.d.ts +7 -0
- package/dist/network/cf-route.d.ts.map +1 -1
- package/dist/network/cf-route.js +40 -14
- package/dist/network/cf-route.js.map +1 -1
- package/dist/network/cloudflare-api.d.ts +1 -0
- package/dist/network/cloudflare-api.d.ts.map +1 -1
- package/dist/network/cloudflare-api.js +10 -57
- package/dist/network/cloudflare-api.js.map +1 -1
- package/dist/network/tunnel.d.ts +8 -1
- package/dist/network/tunnel.d.ts.map +1 -1
- package/dist/network/tunnel.js +4 -5
- package/dist/network/tunnel.js.map +1 -1
- package/dist/observability/signoz.d.ts +2 -2
- package/dist/observability/signoz.d.ts.map +1 -1
- package/dist/observability/signoz.js +6 -6
- package/dist/observability/signoz.js.map +1 -1
- package/dist/providers.d.ts +2 -2
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +2 -3
- package/dist/providers.js.map +1 -1
- package/dist/services/compose-service.d.ts +11 -1
- package/dist/services/compose-service.d.ts.map +1 -1
- package/dist/services/compose-service.js +59 -23
- package/dist/services/compose-service.js.map +1 -1
- package/dist/services/infisical.d.ts +1 -1
- package/dist/services/infisical.d.ts.map +1 -1
- package/dist/services/infisical.js +5 -5
- package/dist/services/infisical.js.map +1 -1
- package/dist/services/invoiceninja.d.ts +1 -1
- package/dist/services/invoiceninja.d.ts.map +1 -1
- package/dist/services/invoiceninja.js +5 -5
- package/dist/services/invoiceninja.js.map +1 -1
- package/dist/services/openproject.d.ts +1 -1
- package/dist/services/openproject.d.ts.map +1 -1
- package/dist/services/openproject.js +5 -5
- package/dist/services/openproject.js.map +1 -1
- package/dist/services/outline.d.ts +1 -1
- package/dist/services/outline.d.ts.map +1 -1
- package/dist/services/outline.js +5 -5
- package/dist/services/outline.js.map +1 -1
- package/dist/services/paperless.d.ts +1 -1
- package/dist/services/paperless.d.ts.map +1 -1
- package/dist/services/paperless.js +5 -5
- package/dist/services/paperless.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -11,7 +11,9 @@ flowchart LR
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
- `createProviders` assembles the full kind-to-provider map over injectable dependencies: the SSH executor and each vendor API client. Tests pass fakes and drive the whole suite in memory.
|
|
14
|
-
- Every container intentic starts on a host carries `intentic.id` and `intentic.type` labels, so `list` finds orphans with one `docker ps` per host.
|
|
14
|
+
- Every container intentic starts on a host carries `intentic.id` and `intentic.type` labels, so `list` finds orphans with one `docker ps` per host. Since 2026-10-05 it also carries `intentic.owner`, the intent that made it, and a Cloudflare route's DNS comment starts with the owner. `list` reports each resource's owner and the engine decides what is whose; a host it cannot reach or list is reported as skipped, not as empty.
|
|
15
|
+
- Adopting an unowned resource means re-stamping it, which for a container means recreating it. Backings, catalog services, the backup container and Cloudflare routes read their owner back, so the next apply adopts them (2026-10-05). Forgejo, its runner, Komodo and the agent workspace only get the label on their next real recreate: recreating them for a label would restart the forge and runner a CI apply runs on, or the sandbox an agent works in.
|
|
16
|
+
- Repos, Komodo deployments and users, tunnels and database bindings have no `list`: they carry no stamp a scan could attribute, so the CLI's prune baseline keeps a removed one pending until its delete succeeds (2026-10-05).
|
|
15
17
|
- Forgejo and Komodo APIs are reached through a loopback port-forward over SSH, because the Cloudflare tunnel behind their public routes may be the very thing an apply is changing.
|
|
16
18
|
- A NAT'd host is reached through its own Cloudflare tunnel (`via: "cloudflared"`). Host keys are trusted on first use and pinned.
|
|
17
19
|
- Stateful services on a host with the `guarded` update policy snapshot their volumes with restic before an image bump and roll back if the new image fails its health check.
|
|
@@ -22,6 +24,7 @@ flowchart LR
|
|
|
22
24
|
- [src/core/ssh.ts](src/core/ssh.ts) — the SSH executor, cloudflared forwarding and host-key pinning.
|
|
23
25
|
- [src/core/over-ssh.ts](src/core/over-ssh.ts) — why and how control-plane APIs go over SSH.
|
|
24
26
|
- [src/core/backing-provider.ts](src/core/backing-provider.ts) — the shared shape of Postgres, Valkey, Garage and Authentik.
|
|
27
|
+
- [src/core/stamp.ts](src/core/stamp.ts) — the labels every container is stamped with, owner included, and reading them back.
|
|
25
28
|
- [src/komodo/deployment.ts](src/komodo/deployment.ts) — one Komodo deployment per app environment.
|
|
26
29
|
- [src/suite.engine.test.ts](src/suite.engine.test.ts) — the whole provider stack reconciling an app over fakes, then again as a noop.
|
|
27
30
|
|
package/dist/auth/authentik.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Provider } from "@intentic/engine";
|
|
2
2
|
import type { SshExecutor } from "../core/ssh.js";
|
|
3
|
-
export declare const createAuthentikProvider: (executor
|
|
3
|
+
export declare const createAuthentikProvider: (executor: SshExecutor) => Provider;
|
|
4
4
|
//# sourceMappingURL=authentik.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentik.d.ts","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"authentik.d.ts","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAyDlD,eAAO,MAAM,uBAAuB,aAAc,WAAW,KAAG,QA+B3D,CAAC"}
|
package/dist/auth/authentik.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
|
|
3
|
-
import { stampLabels } from "../core/
|
|
4
|
-
import { sshExecutor } from "../core/ssh.js";
|
|
3
|
+
import { stampLabels } from "../core/stamp.js";
|
|
5
4
|
const KIND = "authentik";
|
|
6
5
|
const authentikSchema = backingSchema.extend({
|
|
7
6
|
domain: z.string(),
|
|
@@ -13,7 +12,7 @@ const authentikSchema = backingSchema.extend({
|
|
|
13
12
|
redisImage: z.string(),
|
|
14
13
|
});
|
|
15
14
|
const internalUrl = (parsed) => `http://${parsed.internalIp}:${parsed.publishPort}`;
|
|
16
|
-
const composeYaml = (parsed,
|
|
15
|
+
const composeYaml = (parsed, stamp) => [
|
|
17
16
|
"services:",
|
|
18
17
|
" postgresql:",
|
|
19
18
|
` image: ${parsed.pgImage}`,
|
|
@@ -35,7 +34,7 @@ const composeYaml = (parsed, id, hash) => [
|
|
|
35
34
|
` ports: [ "${parsed.publishPort}:9000" ]`,
|
|
36
35
|
" volumes: [ media:/media, templates:/templates ]",
|
|
37
36
|
" depends_on: { postgresql: { condition: service_healthy }, redis: { condition: service_healthy } }",
|
|
38
|
-
stampLabels(KIND,
|
|
37
|
+
stampLabels(KIND, stamp, parsed.protect),
|
|
39
38
|
" worker:",
|
|
40
39
|
` image: ${parsed.image}`,
|
|
41
40
|
" restart: unless-stopped",
|
|
@@ -46,7 +45,7 @@ const composeYaml = (parsed, id, hash) => [
|
|
|
46
45
|
"volumes: { database: {}, redis: {}, media: {}, certs: {}, templates: {} }",
|
|
47
46
|
"",
|
|
48
47
|
].join("\n");
|
|
49
|
-
export const createAuthentikProvider = (executor
|
|
48
|
+
export const createAuthentikProvider = (executor) => createBackingProvider({
|
|
50
49
|
kind: KIND,
|
|
51
50
|
schema: authentikSchema,
|
|
52
51
|
readyTimeoutMs: 300_000,
|
|
@@ -55,7 +54,7 @@ export const createAuthentikProvider = (executor = sshExecutor) => createBacking
|
|
|
55
54
|
issuerUrl: `https://${parsed.domain}/application/o/`,
|
|
56
55
|
internalUrl: internalUrl(parsed),
|
|
57
56
|
}),
|
|
58
|
-
files: (parsed,
|
|
57
|
+
files: (parsed, stamp) => ({ "compose.yaml": composeYaml(parsed, stamp) }),
|
|
59
58
|
env: (parsed) => [
|
|
60
59
|
{ key: "AUTHENTIK_POSTGRESQL__HOST", value: "postgresql" },
|
|
61
60
|
{ key: "AUTHENTIK_POSTGRESQL__USER", value: "authentik" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentik.js","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"authentik.js","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEnF,OAAO,EAAuB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAGH,MAAM,WAAW,GAAG,CAAC,MAAuB,EAAU,EAAE,CAAC,UAAU,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;AAI7G,MAAM,WAAW,GAAG,CAAC,MAAuB,EAAE,KAAqB,EAAU,EAAE,CAC3E;IACI,WAAW;IACX,eAAe;IACf,cAAc,MAAM,CAAC,OAAO,EAAE;IAC9B,6BAA6B;IAC7B,2HAA2H;IAC3H,+CAA+C;IAC/C,4GAA4G;IAC5G,UAAU;IACV,cAAc,MAAM,CAAC,UAAU,EAAE;IACjC,6BAA6B;IAC7B,+DAA+D;IAC/D,8BAA8B;IAC9B,qHAAqH;IACrH,WAAW;IACX,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,qBAAqB;IACrB,sBAAsB;IACtB,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,qDAAqD;IACrD,uGAAuG;IACvG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACxC,WAAW;IACX,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,qBAAqB;IACrB,sBAAsB;IACtB,8GAA8G;IAC9G,uGAAuG;IACvG,2EAA2E;IAC3E,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAqB,EAAY,EAAE,CACvE,qBAAqB,CACjB;IACI,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,eAAe;IAEvB,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClB,GAAG,EAAE,WAAW,MAAM,CAAC,MAAM,EAAE;QAC/B,SAAS,EAAE,WAAW,MAAM,CAAC,MAAM,iBAAiB;QACpD,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;KACnC,CAAC;IACF,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAI1E,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QACb,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,YAAY,EAAE;QAC1D,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,WAAW,EAAE;QACzD,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,WAAW,EAAE;QACzD,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE;QAChD,EAAE,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,WAAW,MAAM,CAAC,MAAM,EAAE,EAAE;QACvE,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;QACxD,EAAE,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE;QACnE,EAAE,GAAG,EAAE,8BAA8B,EAAE,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE;QACxE,EAAE,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE;KACrE;IAED,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,8BAA8B,WAAW,CAAC,MAAM,CAAC,kBAAkB;CACzF,EACD,QAAQ,CACX,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Provider } from "@intentic/engine";
|
|
2
2
|
import type { SshExecutor } from "../core/ssh.js";
|
|
3
|
-
export declare const createGarageBucketProvider: (executor
|
|
3
|
+
export declare const createGarageBucketProvider: (executor: SshExecutor) => Provider;
|
|
4
4
|
//# sourceMappingURL=garage-bucket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garage-bucket.d.ts","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"garage-bucket.d.ts","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAmC9D,eAAO,MAAM,0BAA0B,aAAc,WAAW,KAAG,QA2B9D,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { bindingSchema, createInstanceBindingProvider } from "../core/instance-binding.js";
|
|
3
|
-
import { sshExecutor } from "../core/ssh.js";
|
|
4
3
|
import { GARAGE_BIN, runGarage } from "./garage.js";
|
|
5
4
|
const bucketSchema = bindingSchema.extend({
|
|
6
5
|
endpoint: z.string(),
|
|
@@ -24,7 +23,7 @@ const outputsFor = (parsed, key) => ({
|
|
|
24
23
|
secretKey: key.secretKey,
|
|
25
24
|
bucket: parsed.bucket,
|
|
26
25
|
});
|
|
27
|
-
export const createGarageBucketProvider = (executor
|
|
26
|
+
export const createGarageBucketProvider = (executor) => createInstanceBindingProvider({
|
|
28
27
|
kind: "garage-bucket",
|
|
29
28
|
schema: bucketSchema,
|
|
30
29
|
pendingRefs: ["endpoint"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garage-bucket.js","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"garage-bucket.js","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ import type { Provider } from "@intentic/engine";
|
|
|
2
2
|
import type { SshExecutor, SshSession } from "../core/ssh.js";
|
|
3
3
|
export declare const GARAGE_BIN = "/garage";
|
|
4
4
|
export declare const runGarage: (session: SshSession, cid: string, args: string) => Promise<string>;
|
|
5
|
-
export declare const createGarageProvider: (executor
|
|
5
|
+
export declare const createGarageProvider: (executor: SshExecutor) => Provider;
|
|
6
6
|
//# sourceMappingURL=garage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garage.d.ts","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,eAAO,MAAM,UAAU,YAAY,CAAC;AA8CpC,eAAO,MAAM,SAAS,YAAmB,UAAU,OAAO,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAM9F,CAAC;AAmBF,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"garage.d.ts","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,eAAO,MAAM,UAAU,YAAY,CAAC;AA8CpC,eAAO,MAAM,SAAS,YAAmB,UAAU,OAAO,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAM9F,CAAC;AAmBF,eAAO,MAAM,oBAAoB,aAAc,WAAW,KAAG,QAqBxD,CAAC"}
|
package/dist/backings/garage.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
|
|
3
|
-
import { containerId, execProbe
|
|
4
|
-
import {
|
|
3
|
+
import { containerId, execProbe } from "../core/backing-ssh.js";
|
|
4
|
+
import { stampLabels } from "../core/stamp.js";
|
|
5
5
|
const KIND = "garage";
|
|
6
6
|
export const GARAGE_BIN = "/garage";
|
|
7
7
|
const garageSchema = backingSchema.extend({
|
|
@@ -9,7 +9,7 @@ const garageSchema = backingSchema.extend({
|
|
|
9
9
|
domain: z.string().optional(),
|
|
10
10
|
});
|
|
11
11
|
const internalEndpoint = (parsed) => `http://${parsed.internalIp}:${parsed.publishPort}`;
|
|
12
|
-
const composeYaml = (parsed,
|
|
12
|
+
const composeYaml = (parsed, stamp) => [
|
|
13
13
|
"services:",
|
|
14
14
|
" garage:",
|
|
15
15
|
` image: ${parsed.image}`,
|
|
@@ -20,7 +20,7 @@ const composeYaml = (parsed, id, hash) => [
|
|
|
20
20
|
" - ./garage.toml:/etc/garage.toml:ro",
|
|
21
21
|
" - ./rpc_secret:/etc/garage/rpc_secret:ro",
|
|
22
22
|
` ports: [ "${parsed.publishPort}:3900" ]`,
|
|
23
|
-
stampLabels(KIND,
|
|
23
|
+
stampLabels(KIND, stamp, parsed.protect),
|
|
24
24
|
"volumes: { meta: {}, data: {} }",
|
|
25
25
|
"",
|
|
26
26
|
].join("\n");
|
|
@@ -55,7 +55,7 @@ const ensureLayout = async (session, id) => {
|
|
|
55
55
|
await runGarage(session, cid, `layout assign -z dc1 -c 1G ${nodeId}`);
|
|
56
56
|
await runGarage(session, cid, "layout apply --version 1");
|
|
57
57
|
};
|
|
58
|
-
export const createGarageProvider = (executor
|
|
58
|
+
export const createGarageProvider = (executor) => createBackingProvider({
|
|
59
59
|
kind: KIND,
|
|
60
60
|
schema: garageSchema,
|
|
61
61
|
readyTimeoutMs: 120_000,
|
|
@@ -63,7 +63,7 @@ export const createGarageProvider = (executor = sshExecutor) => createBackingPro
|
|
|
63
63
|
internalEndpoint: internalEndpoint(parsed),
|
|
64
64
|
endpoint: parsed.domain !== undefined ? `https://${parsed.domain}` : internalEndpoint(parsed),
|
|
65
65
|
}),
|
|
66
|
-
files: (parsed,
|
|
66
|
+
files: (parsed, stamp) => ({ "compose.yaml": composeYaml(parsed, stamp), "garage.toml": garageToml(parsed) }),
|
|
67
67
|
prepare: async (session, _parsed, dir) => {
|
|
68
68
|
await session.exec(`test -f ${dir}/rpc_secret || { openssl rand -hex 32 > ${dir}/rpc_secret && chmod 600 ${dir}/rpc_secret; }`);
|
|
69
69
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garage.js","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"garage.js","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Provider } from "@intentic/engine";
|
|
2
2
|
import type { SshExecutor } from "../core/ssh.js";
|
|
3
|
-
export declare const createPostgresDatabaseProvider: (executor
|
|
3
|
+
export declare const createPostgresDatabaseProvider: (executor: SshExecutor) => Provider;
|
|
4
4
|
//# sourceMappingURL=postgres-database.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-database.d.ts","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-database.d.ts","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAgC9D,eAAO,MAAM,8BAA8B,aAAc,WAAW,KAAG,QAyBlE,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { shellQuote, sqlIdentifier, sqlLiteral } from "@intentic/sandbox-run/quote";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { bindingSchema, createInstanceBindingProvider } from "../core/instance-binding.js";
|
|
4
|
-
import { sshExecutor } from "../core/ssh.js";
|
|
5
4
|
const databaseSchema = bindingSchema.extend({
|
|
6
5
|
instanceHost: z.string(),
|
|
7
6
|
instancePort: z.string(),
|
|
@@ -18,7 +17,7 @@ const psql = async (session, cid, sql) => {
|
|
|
18
17
|
return result.stdout.trim();
|
|
19
18
|
};
|
|
20
19
|
const databaseExists = async (session, cid, parsed) => (await psql(session, cid, `SELECT 1 FROM pg_database WHERE datname=${sqlLiteral(parsed.database)}`)) === "1";
|
|
21
|
-
export const createPostgresDatabaseProvider = (executor
|
|
20
|
+
export const createPostgresDatabaseProvider = (executor) => createInstanceBindingProvider({
|
|
22
21
|
kind: "postgres-database",
|
|
23
22
|
schema: databaseSchema,
|
|
24
23
|
pendingRefs: ["instanceHost", "instancePort"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-database.js","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-database.js","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Provider } from "@intentic/engine";
|
|
2
2
|
import type { SshExecutor } from "../core/ssh.js";
|
|
3
|
-
export declare const createPostgresProvider: (executor
|
|
3
|
+
export declare const createPostgresProvider: (executor: SshExecutor) => Provider;
|
|
4
4
|
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,sBAAsB,aAAc,WAAW,KAAG,QAgB1D,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
|
|
3
|
-
import { execProbe
|
|
4
|
-
import {
|
|
3
|
+
import { execProbe } from "../core/backing-ssh.js";
|
|
4
|
+
import { stampLabels } from "../core/stamp.js";
|
|
5
5
|
const KIND = "postgres";
|
|
6
6
|
const postgresSchema = backingSchema.extend({
|
|
7
7
|
adminPassword: z.string(),
|
|
8
8
|
});
|
|
9
|
-
const composeYaml = (parsed,
|
|
9
|
+
const composeYaml = (parsed, stamp) => [
|
|
10
10
|
"services:",
|
|
11
11
|
" postgres:",
|
|
12
12
|
` image: ${parsed.image}`,
|
|
@@ -14,7 +14,7 @@ const composeYaml = (parsed, id, hash) => [
|
|
|
14
14
|
" environment: { POSTGRES_USER: postgres, POSTGRES_PASSWORD: $POSTGRES_PASSWORD, POSTGRES_DB: postgres }",
|
|
15
15
|
" volumes: [ data:/var/lib/postgresql ]",
|
|
16
16
|
` ports: [ "${parsed.publishPort}:5432" ]`,
|
|
17
|
-
stampLabels(KIND,
|
|
17
|
+
stampLabels(KIND, stamp, parsed.protect),
|
|
18
18
|
" healthcheck:",
|
|
19
19
|
" test: [ CMD-SHELL, pg_isready -U postgres ]",
|
|
20
20
|
" interval: 10s",
|
|
@@ -23,12 +23,12 @@ const composeYaml = (parsed, id, hash) => [
|
|
|
23
23
|
"volumes: { data: {} }",
|
|
24
24
|
"",
|
|
25
25
|
].join("\n");
|
|
26
|
-
export const createPostgresProvider = (executor
|
|
26
|
+
export const createPostgresProvider = (executor) => createBackingProvider({
|
|
27
27
|
kind: KIND,
|
|
28
28
|
schema: postgresSchema,
|
|
29
29
|
readyTimeoutMs: 120_000,
|
|
30
30
|
outputs: (parsed) => ({ internalHost: parsed.internalIp, port: String(parsed.publishPort) }),
|
|
31
|
-
files: (parsed,
|
|
31
|
+
files: (parsed, stamp) => ({ "compose.yaml": composeYaml(parsed, stamp) }),
|
|
32
32
|
env: (parsed) => [{ key: "POSTGRES_PASSWORD", value: parsed.adminPassword }],
|
|
33
33
|
probe: (_parsed, id) => execProbe(id, "pg_isready -U postgres -q"),
|
|
34
34
|
restamp: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAuB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,IAAI,GAAG,UAAU,CAAC;AAExB,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;IAGxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,CAAC,MAAsB,EAAE,KAAqB,EAAU,EAAE,CAC1E;IACI,WAAW;IACX,aAAa;IACb,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,4GAA4G;IAC5G,2CAA2C;IAC3C,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACxC,kBAAkB;IAClB,mDAAmD;IACnD,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAqB,EAAY,EAAE,CACtE,qBAAqB,CACjB;IACI,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,cAAc;IACtB,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5F,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAG1E,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;IAC5E,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,2BAA2B,CAAC;IAElE,OAAO,EAAE,IAAI;CAChB,EACD,QAAQ,CACX,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Provider } from "@intentic/engine";
|
|
2
2
|
import type { SshExecutor } from "../core/ssh.js";
|
|
3
|
-
export declare const createValkeyNamespaceProvider: (executor
|
|
3
|
+
export declare const createValkeyNamespaceProvider: (executor: SshExecutor) => Provider;
|
|
4
4
|
//# sourceMappingURL=valkey-namespace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey-namespace.d.ts","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"valkey-namespace.d.ts","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AA8B9D,eAAO,MAAM,6BAA6B,aAAc,WAAW,KAAG,QAoBjE,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { bindingSchema, createInstanceBindingProvider } from "../core/instance-binding.js";
|
|
4
|
-
import { sshExecutor } from "../core/ssh.js";
|
|
5
4
|
const namespaceSchema = bindingSchema.extend({
|
|
6
5
|
instanceHost: z.string(),
|
|
7
6
|
instancePort: z.string(),
|
|
@@ -18,7 +17,7 @@ const cli = async (session, cid, parsed, args) => {
|
|
|
18
17
|
}
|
|
19
18
|
return result.stdout.trim();
|
|
20
19
|
};
|
|
21
|
-
export const createValkeyNamespaceProvider = (executor
|
|
20
|
+
export const createValkeyNamespaceProvider = (executor) => createInstanceBindingProvider({
|
|
22
21
|
kind: "valkey-namespace",
|
|
23
22
|
schema: namespaceSchema,
|
|
24
23
|
pendingRefs: ["instanceHost", "instancePort"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey-namespace.js","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"valkey-namespace.js","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAG3F,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IAExB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IAEzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH,MAAM,GAAG,GAAG,CAAC,MAAuB,EAAU,EAAE,CAAC,WAAW,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC;AAIjJ,MAAM,GAAG,GAAG,KAAK,EAAE,OAAmB,EAAE,GAAW,EAAE,MAAuB,EAAE,IAAY,EAAmB,EAAE;IAG3G,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,kBAAkB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACpI,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAqB,EAAY,EAAE,CAC7E,6BAA6B,CACzB;IACI,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,eAAe;IACvB,WAAW,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAEnC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,SAAS,WAAW,CAAC,CAAC;QAC1H,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;CACJ,EACD,QAAQ,CACX,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Provider } from "@intentic/engine";
|
|
2
2
|
import type { SshExecutor } from "../core/ssh.js";
|
|
3
|
-
export declare const createValkeyProvider: (executor
|
|
3
|
+
export declare const createValkeyProvider: (executor: SshExecutor) => Provider;
|
|
4
4
|
//# sourceMappingURL=valkey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey.d.ts","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"valkey.d.ts","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,oBAAoB,aAAc,WAAW,KAAG,QAgBxD,CAAC"}
|
package/dist/backings/valkey.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
|
|
4
|
-
import { execProbe
|
|
5
|
-
import {
|
|
4
|
+
import { execProbe } from "../core/backing-ssh.js";
|
|
5
|
+
import { stampLabels } from "../core/stamp.js";
|
|
6
6
|
const KIND = "valkey";
|
|
7
7
|
const valkeySchema = backingSchema.extend({
|
|
8
8
|
adminPassword: z.string(),
|
|
9
9
|
});
|
|
10
|
-
const composeYaml = (parsed,
|
|
10
|
+
const composeYaml = (parsed, stamp) => [
|
|
11
11
|
"services:",
|
|
12
12
|
" valkey:",
|
|
13
13
|
` image: ${parsed.image}`,
|
|
@@ -17,18 +17,18 @@ const composeYaml = (parsed, id, hash) => [
|
|
|
17
17
|
" - data:/data",
|
|
18
18
|
" - ./valkey.conf:/etc/valkey/valkey.conf:ro",
|
|
19
19
|
` ports: [ "${parsed.publishPort}:6379" ]`,
|
|
20
|
-
stampLabels(KIND,
|
|
20
|
+
stampLabels(KIND, stamp, parsed.protect),
|
|
21
21
|
"volumes: { data: {} }",
|
|
22
22
|
"",
|
|
23
23
|
].join("\n");
|
|
24
24
|
const valkeyConf = (parsed) => [`requirepass ${parsed.adminPassword}`, "appendonly yes", ""].join("\n");
|
|
25
|
-
export const createValkeyProvider = (executor
|
|
25
|
+
export const createValkeyProvider = (executor) => createBackingProvider({
|
|
26
26
|
kind: KIND,
|
|
27
27
|
schema: valkeySchema,
|
|
28
28
|
readyTimeoutMs: 60_000,
|
|
29
29
|
outputs: (parsed) => ({ internalHost: parsed.internalIp, port: String(parsed.publishPort) }),
|
|
30
|
-
files: (parsed,
|
|
31
|
-
"compose.yaml": composeYaml(parsed,
|
|
30
|
+
files: (parsed, stamp) => ({
|
|
31
|
+
"compose.yaml": composeYaml(parsed, stamp),
|
|
32
32
|
"valkey.conf": { content: valkeyConf(parsed), secret: true },
|
|
33
33
|
}),
|
|
34
34
|
probe: (parsed, id) => execProbe(id, `valkey-cli -a ${shellQuote(parsed.adminPassword)} ping | grep -q PONG`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAuB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;IAGtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,CAAC,MAAoB,EAAE,KAAqB,EAAU,EAAE,CACxE;IACI,WAAW;IACX,WAAW;IACX,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,yDAAyD;IACzD,cAAc;IACd,oBAAoB;IACpB,kDAAkD;IAClD,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACxC,uBAAuB;IACvB,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,UAAU,GAAG,CAAC,MAAoB,EAAU,EAAE,CAAC,CAAC,eAAe,MAAM,CAAC,aAAa,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAG9H,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAqB,EAAY,EAAE,CACpE,qBAAqB,CACjB;IACI,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,MAAM;IACtB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5F,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;QAC1C,aAAa,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/D,CAAC;IACF,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,iBAAiB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC;IAE7G,OAAO,EAAE,IAAI;CAChB,EACD,QAAQ,CACX,CAAC"}
|
|
@@ -9,7 +9,7 @@ export interface RestoreArgs {
|
|
|
9
9
|
readonly snapshot: string;
|
|
10
10
|
readonly scope: RestoreScope;
|
|
11
11
|
readonly log: (message: string) => void;
|
|
12
|
-
readonly executor
|
|
12
|
+
readonly executor: SshExecutor;
|
|
13
13
|
}
|
|
14
14
|
export declare const restoreBackup: (args: RestoreArgs) => Promise<void>;
|
|
15
15
|
//# sourceMappingURL=backup-restore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-restore.d.ts","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"backup-restore.d.ts","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKzE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAClC;AA4BD,eAAO,MAAM,aAAa,SAAgB,WAAW,KAAG,OAAO,CAAC,IAAI,CA2CnE,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
2
|
-
import { sshExecutor } from "../core/ssh.js";
|
|
3
2
|
import { isLocalRepo, REPO_VOLUME } from "./backup.js";
|
|
4
3
|
const RESTORE_VOLUME = "intentic-restore";
|
|
5
4
|
const resticPrefix = (args) => {
|
|
@@ -13,7 +12,7 @@ const restoreVolume = (args, volume, sub) => `docker run --rm --entrypoint sh -v
|
|
|
13
12
|
`-c 'rm -rf /dest/..?* /dest/.[!.]* /dest/* 2>/dev/null; cp -a /restore/volumes/${sub}/. /dest/'`;
|
|
14
13
|
const wants = (scope, part) => scope === "all" || scope === part;
|
|
15
14
|
export const restoreBackup = async (args) => {
|
|
16
|
-
const executor = args.executor
|
|
15
|
+
const executor = args.executor;
|
|
17
16
|
const session = await executor.connect(args.target);
|
|
18
17
|
const run = async (command, what) => {
|
|
19
18
|
const result = await session.exec(command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-restore.js","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"backup-restore.js","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"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"}
|
package/dist/backup/backup.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import type { Provider } from "@intentic/engine";
|
|
|
2
2
|
import type { SshExecutor } from "../core/ssh.js";
|
|
3
3
|
export declare const REPO_VOLUME = "intentic-restic-repo";
|
|
4
4
|
export declare const isLocalRepo: (repo: string) => boolean;
|
|
5
|
-
export declare const createBackupProvider: (executor
|
|
5
|
+
export declare const createBackupProvider: (executor: SshExecutor) => Provider;
|
|
6
6
|
//# sourceMappingURL=backup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAOjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AA6D9D,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,OAA+B,CAAC;AAsG3E,eAAO,MAAM,oBAAoB,aAAc,WAAW,KAAG,QAgF3D,CAAC"}
|
package/dist/backup/backup.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { basename } from "node:path";
|
|
2
2
|
import { HOST_STATE_ROOT } from "@intentic/constants";
|
|
3
|
+
import { OWNER_KEY } from "@intentic/graph";
|
|
3
4
|
import { dockerEnvLine, shellQuote } from "@intentic/sandbox-run/quote";
|
|
4
5
|
import { z } from "zod";
|
|
5
6
|
import { execChecked, writeHostFiles } from "../core/host-files.js";
|
|
6
7
|
import { parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
7
8
|
import { listStampedContainers } from "../core/list-stamped.js";
|
|
8
|
-
import {
|
|
9
|
+
import { stampLabelArgs, stampOf } from "../core/stamp.js";
|
|
9
10
|
const backupSchema = sshSchema.extend({
|
|
10
11
|
repo: z.string(),
|
|
11
12
|
password: z.string(),
|
|
@@ -79,9 +80,9 @@ const running = async (session) => {
|
|
|
79
80
|
return result.stdout.trim() === CONTAINER;
|
|
80
81
|
};
|
|
81
82
|
const observe = async (session) => {
|
|
82
|
-
const result = await session.exec(`docker inspect --format '{{.Config.Image}}${SEP}{{index .Config.Labels "intentic.schedule"}}${SEP}{{index .Config.Labels "intentic.repo"}}${SEP}{{index .Config.Labels "intentic.timezone"}}' ${CONTAINER} 2>/dev/null || true`);
|
|
83
|
-
const [image = "", schedule = "", repo = "", timezone = ""] = result.stdout.trim().split(SEP);
|
|
84
|
-
return { image, schedule, repo, timezone: timezone === "" ? "UTC" : timezone };
|
|
83
|
+
const result = await session.exec(`docker inspect --format '{{.Config.Image}}${SEP}{{index .Config.Labels "intentic.schedule"}}${SEP}{{index .Config.Labels "intentic.repo"}}${SEP}{{index .Config.Labels "intentic.timezone"}}${SEP}{{index .Config.Labels "${OWNER_KEY}"}}' ${CONTAINER} 2>/dev/null || true`);
|
|
84
|
+
const [image = "", schedule = "", repo = "", timezone = "", owner = ""] = result.stdout.trim().split(SEP);
|
|
85
|
+
return { config: { image, schedule, repo, timezone: timezone === "" ? "UTC" : timezone }, owner };
|
|
85
86
|
};
|
|
86
87
|
const ensureFiles = async (session, parsed) => {
|
|
87
88
|
await writeHostFiles(session, "backup", STATE_DIR, {
|
|
@@ -112,7 +113,7 @@ const mountArgs = (parsed, dockerBin) => {
|
|
|
112
113
|
`--env-file ${ENV_FILE}`,
|
|
113
114
|
].join(" ");
|
|
114
115
|
};
|
|
115
|
-
export const createBackupProvider = (executor
|
|
116
|
+
export const createBackupProvider = (executor) => ({
|
|
116
117
|
read: async (inputs, ctx) => {
|
|
117
118
|
const parsed = parse(inputs);
|
|
118
119
|
let session;
|
|
@@ -128,7 +129,7 @@ export const createBackupProvider = (executor = sshExecutor) => ({
|
|
|
128
129
|
if (!up) {
|
|
129
130
|
return undefined;
|
|
130
131
|
}
|
|
131
|
-
return { outputs: {}, detail: observed };
|
|
132
|
+
return { outputs: {}, detail: observed.config, stampOwner: observed.owner };
|
|
132
133
|
}
|
|
133
134
|
finally {
|
|
134
135
|
await session.dispose();
|
|
@@ -161,9 +162,9 @@ export const createBackupProvider = (executor = sshExecutor) => ({
|
|
|
161
162
|
}
|
|
162
163
|
await ensureFiles(session, parsed);
|
|
163
164
|
await session.exec(`docker rm -f ${CONTAINER} 2>/dev/null || true`);
|
|
164
|
-
const run = await session.exec(`docker run -d --restart unless-stopped --name ${CONTAINER}
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
const run = await session.exec(`docker run -d --restart unless-stopped --name ${CONTAINER} ` +
|
|
166
|
+
`${stampLabelArgs("backup", stampOf(ctx), [`intentic.schedule=${parsed.schedule}`, `intentic.repo=${parsed.repo}`, `intentic.timezone=${parsed.timezone}`])} ` +
|
|
167
|
+
`-e ${shellQuote(`TZ=${parsed.timezone}`)} ` +
|
|
167
168
|
`${mountArgs(parsed, dockerBin)} --entrypoint crond ${shellQuote(parsed.image)} -f -l 8`);
|
|
168
169
|
if (run.code !== 0) {
|
|
169
170
|
throw new Error(`failed to start backup container on host: exited ${run.code}: ${run.stderr.trim()}`);
|
|
@@ -185,6 +186,6 @@ export const createBackupProvider = (executor = sshExecutor) => ({
|
|
|
185
186
|
await session.dispose();
|
|
186
187
|
}
|
|
187
188
|
},
|
|
188
|
-
list: (sources, ctx) => listStampedContainers(executor, "backup", sources, ctx
|
|
189
|
+
list: (sources, ctx) => listStampedContainers(executor, "backup", sources, ctx),
|
|
189
190
|
});
|
|
190
191
|
//# sourceMappingURL=backup.js.map
|