@intentic/providers 1.176.3 → 1.209.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 +1 -1
- package/dist/auth/authentik.d.ts.map +1 -1
- package/dist/auth/authentik.js +14 -14
- package/dist/auth/authentik.js.map +1 -1
- package/dist/backings/postgres-database.d.ts.map +1 -1
- package/dist/backings/postgres-database.js +10 -9
- package/dist/backings/postgres-database.js.map +1 -1
- package/dist/backings/postgres.d.ts.map +1 -1
- package/dist/backings/postgres.js +3 -1
- package/dist/backings/postgres.js.map +1 -1
- package/dist/backings/valkey-namespace.d.ts.map +1 -1
- package/dist/backings/valkey-namespace.js +2 -1
- package/dist/backings/valkey-namespace.js.map +1 -1
- package/dist/backings/valkey.d.ts.map +1 -1
- package/dist/backings/valkey.js +2 -1
- package/dist/backings/valkey.js.map +1 -1
- package/dist/backup/backup-restore.d.ts.map +1 -1
- package/dist/backup/backup-restore.js +5 -4
- package/dist/backup/backup-restore.js.map +1 -1
- package/dist/backup/backup.d.ts.map +1 -1
- package/dist/backup/backup.js +22 -12
- package/dist/backup/backup.js.map +1 -1
- package/dist/backup/migrate-host.d.ts.map +1 -1
- package/dist/backup/migrate-host.js +3 -2
- package/dist/backup/migrate-host.js.map +1 -1
- package/dist/core/backing-ssh.d.ts.map +1 -1
- package/dist/core/backing-ssh.js +14 -6
- package/dist/core/backing-ssh.js.map +1 -1
- package/dist/core/ci-yaml.js +1 -1
- package/dist/core/ci-yaml.js.map +1 -1
- package/dist/core/guarded-update.d.ts.map +1 -1
- package/dist/core/guarded-update.js +4 -2
- package/dist/core/guarded-update.js.map +1 -1
- package/dist/forgejo/forgejo-runner.d.ts.map +1 -1
- package/dist/forgejo/forgejo-runner.js +4 -2
- package/dist/forgejo/forgejo-runner.js.map +1 -1
- package/dist/forgejo/forgejo.d.ts.map +1 -1
- package/dist/forgejo/forgejo.js +4 -2
- package/dist/forgejo/forgejo.js.map +1 -1
- package/dist/gitlab/gl-ci.js +2 -2
- package/dist/host/workspace.d.ts.map +1 -1
- package/dist/host/workspace.js +15 -3
- package/dist/host/workspace.js.map +1 -1
- package/dist/komodo/komodo-api.d.ts.map +1 -1
- package/dist/komodo/komodo-api.js +2 -4
- package/dist/komodo/komodo-api.js.map +1 -1
- package/dist/komodo/komodo.d.ts.map +1 -1
- package/dist/komodo/komodo.js +21 -20
- package/dist/komodo/komodo.js.map +1 -1
- package/dist/observability/signoz.d.ts.map +1 -1
- package/dist/observability/signoz.js +2 -1
- package/dist/observability/signoz.js.map +1 -1
- package/dist/services/compose-service.d.ts.map +1 -1
- package/dist/services/compose-service.js +6 -3
- package/dist/services/compose-service.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ The real **Provider SPI implementations** the engine reconciles against — the
|
|
|
14
14
|
- [src/index.ts](src/index.ts) — `createProviders` + `ProviderDeps`; re-points to every `create*Provider` factory.
|
|
15
15
|
- `src/<kind>.ts` — one provider per kind: e.g. [src/cloudflare.ts](src/cloudflare.ts), [src/forgejo.ts](src/forgejo.ts), [src/komodo.ts](src/komodo.ts), [src/deployment.ts](src/deployment.ts), [src/cf-route.ts](src/cf-route.ts), [src/ci.ts](src/ci.ts).
|
|
16
16
|
- `src/<system>-api.ts` — HTTP adapters: [src/forgejo-api.ts](src/forgejo-api.ts), [src/komodo-api.ts](src/komodo-api.ts), [src/cloudflare-api.ts](src/cloudflare-api.ts), [src/authentik-api.ts](src/authentik-api.ts); fakes like [src/forgejo-api.fake.ts](src/forgejo-api.fake.ts).
|
|
17
|
-
- [src/
|
|
17
|
+
- [src/backings](src/backings) — `sshExecutor` (+ `SshExecutor`/`SshSession`); [src/api-validation.test.ts](src/api-validation.test.ts) — input-validation coverage.
|
|
18
18
|
|
|
19
19
|
## How it fits
|
|
20
20
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentik.d.ts","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"authentik.d.ts","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAQjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAwG/D,eAAO,MAAM,uBAAuB,cAAc,WAAW,KAAiB,QA2D5E,CAAC"}
|
package/dist/auth/authentik.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { HASH_KEY } from "@intentic/graph";
|
|
2
|
+
import { envLine, shellQuote } from "@intentic/sandbox-run/quote";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import { composeDown, composeUp, containerImage, containerLabel, stateDir, waitReady } from "../core/backing-ssh.js";
|
|
4
5
|
import { hasPendingRef, parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
@@ -63,20 +64,19 @@ const ensureFiles = async (session, id, hash, parsed) => {
|
|
|
63
64
|
const dir = stateDir(KIND, id);
|
|
64
65
|
await session.exec(`mkdir -p ${dir}`);
|
|
65
66
|
await session.exec(`cat > ${dir}/compose.yaml <<'COMPOSE_EOF'\n${composeYaml(id, hash, parsed)}COMPOSE_EOF`);
|
|
66
|
-
const
|
|
67
|
-
"AUTHENTIK_POSTGRESQL__HOST
|
|
68
|
-
"AUTHENTIK_POSTGRESQL__USER
|
|
69
|
-
"AUTHENTIK_POSTGRESQL__NAME
|
|
70
|
-
"AUTHENTIK_REDIS__HOST
|
|
71
|
-
`
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
]
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
await session.exec(`test -f ${dir}/.env || { printf '%s\\n' ${envLines} > ${dir}/.env && chmod 600 ${dir}/.env; }`);
|
|
67
|
+
const envPairs = [
|
|
68
|
+
["AUTHENTIK_POSTGRESQL__HOST", "postgresql"],
|
|
69
|
+
["AUTHENTIK_POSTGRESQL__USER", "authentik"],
|
|
70
|
+
["AUTHENTIK_POSTGRESQL__NAME", "authentik"],
|
|
71
|
+
["AUTHENTIK_REDIS__HOST", "redis"],
|
|
72
|
+
["AUTHENTIK_BOOTSTRAP_EMAIL", `akadmin@${parsed.domain}`],
|
|
73
|
+
["AUTHENTIK_SECRET_KEY", parsed.secretKey],
|
|
74
|
+
["AUTHENTIK_POSTGRESQL__PASSWORD", parsed.dbPassword],
|
|
75
|
+
["AUTHENTIK_BOOTSTRAP_PASSWORD", parsed.bootstrapPassword],
|
|
76
|
+
["AUTHENTIK_BOOTSTRAP_TOKEN", parsed.bootstrapToken],
|
|
77
|
+
];
|
|
78
|
+
const envLines = envPairs.map(([key, value]) => shellQuote(envLine(key, value))).join(" ");
|
|
79
|
+
await session.exec(`test -f ${dir}/.env || { printf '%s' ${envLines} > ${dir}/.env && chmod 600 ${dir}/.env; }`);
|
|
80
80
|
};
|
|
81
81
|
const readyProbe = (parsed) => `wget -q -T 10 -O /dev/null ${internalUrl(parsed)}/-/health/ready/`;
|
|
82
82
|
export const createAuthentikProvider = (executor = sshExecutor) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentik.js","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"authentik.js","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-database.d.ts","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-database.d.ts","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAMjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAoC/D,eAAO,MAAM,8BAA8B,cAAc,WAAW,KAAiB,QAkEnF,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { shellQuote, sqlIdentifier, sqlLiteral } from "@intentic/sandbox-run/quote";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { containerId } from "../core/backing-ssh.js";
|
|
3
4
|
import { hasPendingRef, parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
@@ -13,7 +14,7 @@ const databaseSchema = sshSchema.extend({
|
|
|
13
14
|
const parse = (inputs) => parseInputs(databaseSchema, inputs, "postgres-database");
|
|
14
15
|
const url = (parsed) => `postgres://${parsed.role}:${parsed.password}@${parsed.instanceHost}:${parsed.instancePort}/${parsed.database}`;
|
|
15
16
|
const psql = async (session, cid, sql) => {
|
|
16
|
-
const result = await session.exec(`docker exec ${cid} psql -U postgres -tAc
|
|
17
|
+
const result = await session.exec(`docker exec ${cid} psql -U postgres -tAc ${shellQuote(sql)}`);
|
|
17
18
|
if (result.code !== 0) {
|
|
18
19
|
throw new Error(`psql failed (${result.code}): ${result.stderr.trim()}`);
|
|
19
20
|
}
|
|
@@ -38,7 +39,7 @@ export const createPostgresDatabaseProvider = (executor = sshExecutor) => ({
|
|
|
38
39
|
if (cid === "") {
|
|
39
40
|
return undefined;
|
|
40
41
|
}
|
|
41
|
-
const exists = await psql(session, cid, `SELECT 1 FROM pg_database WHERE datname
|
|
42
|
+
const exists = await psql(session, cid, `SELECT 1 FROM pg_database WHERE datname=${sqlLiteral(parsed.database)}`);
|
|
42
43
|
return exists === "1" ? { outputs: { url: url(parsed) } } : undefined;
|
|
43
44
|
}
|
|
44
45
|
finally {
|
|
@@ -54,16 +55,16 @@ export const createPostgresDatabaseProvider = (executor = sshExecutor) => ({
|
|
|
54
55
|
if (cid === "") {
|
|
55
56
|
throw new Error(`postgres-database "${ctx.id}": instance "${parsed.instance}" is not running`);
|
|
56
57
|
}
|
|
57
|
-
const roleExists = await psql(session, cid, `SELECT 1 FROM pg_roles WHERE rolname
|
|
58
|
+
const roleExists = await psql(session, cid, `SELECT 1 FROM pg_roles WHERE rolname=${sqlLiteral(parsed.role)}`);
|
|
58
59
|
if (roleExists !== "1") {
|
|
59
|
-
await psql(session, cid, `CREATE ROLE
|
|
60
|
+
await psql(session, cid, `CREATE ROLE ${sqlIdentifier(parsed.role)} LOGIN PASSWORD ${sqlLiteral(parsed.password)}`);
|
|
60
61
|
}
|
|
61
62
|
else {
|
|
62
|
-
await psql(session, cid, `ALTER ROLE
|
|
63
|
+
await psql(session, cid, `ALTER ROLE ${sqlIdentifier(parsed.role)} LOGIN PASSWORD ${sqlLiteral(parsed.password)}`);
|
|
63
64
|
}
|
|
64
|
-
const dbExists = await psql(session, cid, `SELECT 1 FROM pg_database WHERE datname
|
|
65
|
+
const dbExists = await psql(session, cid, `SELECT 1 FROM pg_database WHERE datname=${sqlLiteral(parsed.database)}`);
|
|
65
66
|
if (dbExists !== "1") {
|
|
66
|
-
await psql(session, cid, `CREATE DATABASE
|
|
67
|
+
await psql(session, cid, `CREATE DATABASE ${sqlIdentifier(parsed.database)} OWNER ${sqlIdentifier(parsed.role)}`);
|
|
67
68
|
}
|
|
68
69
|
return { url: url(parsed) };
|
|
69
70
|
}
|
|
@@ -80,8 +81,8 @@ export const createPostgresDatabaseProvider = (executor = sshExecutor) => ({
|
|
|
80
81
|
ctx.log(`postgres-database "${ctx.id}": instance "${parsed.instance}" already gone; nothing to drop`);
|
|
81
82
|
return;
|
|
82
83
|
}
|
|
83
|
-
await psql(session, cid, `DROP DATABASE IF EXISTS
|
|
84
|
-
await psql(session, cid, `DROP ROLE IF EXISTS
|
|
84
|
+
await psql(session, cid, `DROP DATABASE IF EXISTS ${sqlIdentifier(parsed.database)}`);
|
|
85
|
+
await psql(session, cid, `DROP ROLE IF EXISTS ${sqlIdentifier(parsed.role)}`);
|
|
85
86
|
}
|
|
86
87
|
finally {
|
|
87
88
|
await session.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-database.js","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAErF,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;IAEpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAEpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IAExB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,MAAsB,EAAkB,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEnH,MAAM,GAAG,GAAG,CAAC,MAAsB,EAAU,EAAE,CAC3C,cAAc,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAIpH,MAAM,IAAI,GAAG,KAAK,EAAE,OAAmB,EAAE,GAAW,EAAE,GAAW,EAAmB,EAAE;
|
|
1
|
+
{"version":3,"file":"postgres-database.js","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAQjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAmE/D,eAAO,MAAM,sBAAsB,cAAc,WAAW,KAAiB,QAuE3E,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { HASH_KEY } from "@intentic/graph";
|
|
2
|
+
import { envLine, shellQuote } from "@intentic/sandbox-run/quote";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import { composeDown, composeUp, containerImage, containerLabel, restampBacking, stateDir, waitReady } from "../core/backing-ssh.js";
|
|
4
5
|
import { hasPendingRef, parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
@@ -39,7 +40,8 @@ const ensureFiles = async (session, id, hash, parsed) => {
|
|
|
39
40
|
const dir = stateDir(KIND, id);
|
|
40
41
|
await session.exec(`mkdir -p ${dir}`);
|
|
41
42
|
await session.exec(`cat > ${dir}/compose.yaml <<'COMPOSE_EOF'\n${composeYaml(id, hash, parsed)}COMPOSE_EOF`);
|
|
42
|
-
|
|
43
|
+
const line = shellQuote(envLine("POSTGRES_PASSWORD", parsed.adminPassword));
|
|
44
|
+
await session.exec(`test -f ${dir}/.env || { printf '%s' ${line} > ${dir}/.env && chmod 600 ${dir}/.env; }`);
|
|
43
45
|
};
|
|
44
46
|
const readyProbe = (id) => `cid=$(docker ps -q --filter "label=intentic.id=${id}"); [ -n "$cid" ] && docker exec "$cid" pg_isready -U postgres -q`;
|
|
45
47
|
export const createPostgresProvider = (executor = sshExecutor) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACrI,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IAEtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IAGvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IAEjB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,MAAsB,EAAkB,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAEpG,MAAM,UAAU,GAAG,CAAC,MAAsB,EAA2B,EAAE,CAAC,CAAC;IACrE,YAAY,EAAE,MAAM,CAAC,UAAU;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;CACnC,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,IAAY,EAAE,MAAsB,EAAU,EAAE,CAC7E;IACI,WAAW;IACX,aAAa;IACb,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,4GAA4G;IAC5G,2CAA2C;IAC3C,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,8BAA8B,EAAE,qBAAqB,IAAI,qBAAqB,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,IAAI;IAC3I,kBAAkB;IAClB,mDAAmD;IACnD,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,WAAW,GAAG,KAAK,EAAE,OAAmB,EAAE,EAAU,EAAE,IAAY,EAAE,MAAsB,EAAiB,EAAE;IAC/G,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,kCAAkC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey-namespace.d.ts","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"valkey-namespace.d.ts","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAMjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAmC/D,eAAO,MAAM,6BAA6B,cAAc,WAAW,KAAiB,QAwDlF,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { containerId } from "../core/backing-ssh.js";
|
|
3
4
|
import { hasPendingRef, parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
@@ -14,7 +15,7 @@ const namespaceSchema = sshSchema.extend({
|
|
|
14
15
|
const parse = (inputs) => parseInputs(namespaceSchema, inputs, "valkey-namespace");
|
|
15
16
|
const url = (parsed) => `redis://${parsed.username}:${parsed.password}@${parsed.instanceHost}:${parsed.instancePort}/0`;
|
|
16
17
|
const cli = async (session, cid, parsed, args) => {
|
|
17
|
-
const result = await session.exec(`docker exec ${cid} valkey-cli -a
|
|
18
|
+
const result = await session.exec(`docker exec ${cid} valkey-cli -a ${shellQuote(parsed.adminPassword)} --no-auth-warning ${args}`);
|
|
18
19
|
if (result.code !== 0) {
|
|
19
20
|
throw new Error(`valkey-cli failed (${result.code}): ${result.stderr.trim()}`);
|
|
20
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey-namespace.js","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAErF,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,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;AAEH,MAAM,KAAK,GAAG,CAAC,MAAsB,EAAmB,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEpH,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;
|
|
1
|
+
{"version":3,"file":"valkey-namespace.js","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey.d.ts","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAOjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"valkey.d.ts","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAOjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;AA8D/D,eAAO,MAAM,oBAAoB,cAAc,WAAW,KAAiB,QAuEzE,CAAC"}
|
package/dist/backings/valkey.js
CHANGED
|
@@ -4,6 +4,7 @@ import { composeDown, composeUp, containerImage, containerLabel, restampBacking,
|
|
|
4
4
|
import { hasPendingRef, parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
5
5
|
import { listStampedContainers } from "../core/list-stamped.js";
|
|
6
6
|
import { sshExecutor } from "../core/ssh.js";
|
|
7
|
+
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
7
8
|
const KIND = "valkey";
|
|
8
9
|
const READY_TIMEOUT_MS = 60_000;
|
|
9
10
|
const valkeySchema = sshSchema.extend({
|
|
@@ -40,7 +41,7 @@ const ensureFiles = async (session, id, hash, parsed) => {
|
|
|
40
41
|
await session.exec(`cat > ${dir}/valkey.conf <<'CONF_EOF'\n${valkeyConf(parsed)}CONF_EOF`);
|
|
41
42
|
await session.exec(`chmod 600 ${dir}/valkey.conf`);
|
|
42
43
|
};
|
|
43
|
-
const readyProbe = (id, parsed) => `cid=$(docker ps -q --filter "label=intentic.id=${id}"); [ -n "$cid" ] && docker exec "$cid" valkey-cli -a
|
|
44
|
+
const readyProbe = (id, parsed) => `cid=$(docker ps -q --filter "label=intentic.id=${id}"); [ -n "$cid" ] && docker exec "$cid" valkey-cli -a ${shellQuote(parsed.adminPassword)} ping | grep -q PONG`;
|
|
44
45
|
export const createValkeyProvider = (executor = sshExecutor) => ({
|
|
45
46
|
read: async (inputs, ctx) => {
|
|
46
47
|
if (hasPendingRef(inputs, "internalIp")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACrI,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-restore.d.ts","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"
|
|
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;AAOzE,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,CAAC,EAAE,WAAW,CAAC;CACnC;AAiCD,eAAO,MAAM,aAAa,SAAgB,WAAW,KAAG,OAAO,CAAC,IAAI,CA2CnE,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
1
2
|
import { sshExecutor } from "../core/ssh.js";
|
|
2
3
|
import { isLocalRepo, REPO_VOLUME } from "./backup.js";
|
|
3
4
|
const RESTORE_VOLUME = "intentic-restore";
|
|
4
5
|
const resticPrefix = (args) => {
|
|
5
6
|
const creds = Object.entries(args.credentials ?? {})
|
|
6
|
-
.map(([key, value]) => `-e ${key}
|
|
7
|
+
.map(([key, value]) => `-e ${shellQuote(`${key}=${value}`)}`)
|
|
7
8
|
.join(" ");
|
|
8
|
-
const repoMount = isLocalRepo(args.repo) ? `-v ${REPO_VOLUME}:${args.repo} ` : "";
|
|
9
|
-
return `docker run --rm -e
|
|
9
|
+
const repoMount = isLocalRepo(args.repo) ? `-v ${shellQuote(`${REPO_VOLUME}:${args.repo}`)} ` : "";
|
|
10
|
+
return `docker run --rm -e ${shellQuote(`RESTIC_PASSWORD=${args.password}`)} ${creds} ${repoMount}-v ${RESTORE_VOLUME}:/restore ${shellQuote(args.image)} -r ${shellQuote(args.repo)}`;
|
|
10
11
|
};
|
|
11
12
|
const restoreVolume = (args, volume, sub) => `docker run --rm --entrypoint sh -v ${volume}:/dest -v ${RESTORE_VOLUME}:/restore ${args.image} ` +
|
|
12
13
|
`-c 'rm -rf /dest/..?* /dest/.[!.]* /dest/* 2>/dev/null; cp -a /restore/volumes/${sub}/. /dest/'`;
|
|
@@ -23,7 +24,7 @@ export const restoreBackup = async (args) => {
|
|
|
23
24
|
try {
|
|
24
25
|
args.log(`restoring snapshot "${args.snapshot}" (${args.scope}) from ${args.repo}`);
|
|
25
26
|
await run(`docker volume create ${RESTORE_VOLUME}`, "create restore volume");
|
|
26
|
-
await run(`${resticPrefix(args)} restore
|
|
27
|
+
await run(`${resticPrefix(args)} restore ${shellQuote(args.snapshot)} --target /restore`, "restic restore");
|
|
27
28
|
if (wants(args.scope, "forgejo")) {
|
|
28
29
|
await session.exec("docker rm -f intentic-forgejo intentic-forgejo-runner 2>/dev/null || true");
|
|
29
30
|
await run(restoreVolume(args, "intentic-forgejo-data", "forgejo"), "restore forgejo volume");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-restore.js","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backup-restore.js","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAKjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAwC9D,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,OAA+B,CAAC;AAqG3E,eAAO,MAAM,oBAAoB,cAAc,WAAW,KAAiB,QA2EzE,CAAC"}
|
package/dist/backup/backup.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { HOST_STATE_ROOT } from "@intentic/constants";
|
|
2
|
+
import { dockerEnvLine, shellQuote } from "@intentic/sandbox-run/quote";
|
|
1
3
|
import { z } from "zod";
|
|
2
4
|
import { parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
|
|
3
5
|
import { listStampedContainers } from "../core/list-stamped.js";
|
|
@@ -8,14 +10,17 @@ const backupSchema = sshSchema.extend({
|
|
|
8
10
|
image: z.string(),
|
|
9
11
|
signoz: z.coerce.boolean().default(false),
|
|
10
12
|
credentials: z.record(z.string(), z.string()).default({}),
|
|
11
|
-
schedule: z
|
|
13
|
+
schedule: z
|
|
14
|
+
.string()
|
|
15
|
+
.regex(/^[\d*,/A-Za-z-]+(?: [\d*,/A-Za-z-]+){4}$/, "must be exactly five cron fields (minute hour day month weekday)")
|
|
16
|
+
.default("0 3 * * *"),
|
|
12
17
|
retention: z
|
|
13
18
|
.object({ daily: z.coerce.number().default(7), weekly: z.coerce.number().default(4), monthly: z.coerce.number().default(6) })
|
|
14
19
|
.default({ daily: 7, weekly: 4, monthly: 6 }),
|
|
15
20
|
});
|
|
16
21
|
const parse = (inputs) => parseInputs(backupSchema, inputs, "backup");
|
|
17
22
|
const CONTAINER = "intentic-backup";
|
|
18
|
-
const STATE_DIR =
|
|
23
|
+
const STATE_DIR = `${HOST_STATE_ROOT}/backup`;
|
|
19
24
|
const ENV_FILE = `${STATE_DIR}/restic.env`;
|
|
20
25
|
const SCRIPT_FILE = `${STATE_DIR}/backup.sh`;
|
|
21
26
|
const CRONTAB_FILE = `${STATE_DIR}/crontab`;
|
|
@@ -42,9 +47,11 @@ const backupScript = (parsed) => [
|
|
|
42
47
|
"# Komodo: logical pg_dump of the FerretDB-backing postgres (matched by its compose labels).",
|
|
43
48
|
"PG=$(docker ps -q -f label=com.docker.compose.project=komodo -f label=com.docker.compose.service=postgres)",
|
|
44
49
|
'if [ -n "$PG" ]; then docker exec "$PG" pg_dump -U komodo -d postgres > "$STAGING/komodo.sql"; else echo "komodo pg_dump skipped"; fi',
|
|
45
|
-
...(isLocalRepo(parsed.repo)
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
...(isLocalRepo(parsed.repo)
|
|
51
|
+
? [`restic -r ${shellQuote(parsed.repo)} cat config >/dev/null 2>&1 || restic -r ${shellQuote(parsed.repo)} init`]
|
|
52
|
+
: []),
|
|
53
|
+
`restic -r ${shellQuote(parsed.repo)} backup "$STAGING" /volumes /host-opt-intentic`,
|
|
54
|
+
`restic -r ${shellQuote(parsed.repo)} forget --keep-daily ${parsed.retention.daily} --keep-weekly ${parsed.retention.weekly} --keep-monthly ${parsed.retention.monthly} --prune`,
|
|
48
55
|
"",
|
|
49
56
|
].join("\n");
|
|
50
57
|
const running = async (session) => {
|
|
@@ -58,10 +65,13 @@ const observe = async (session) => {
|
|
|
58
65
|
};
|
|
59
66
|
const ensureFiles = async (session, parsed) => {
|
|
60
67
|
await session.exec(`mkdir -p ${STATE_DIR}`);
|
|
61
|
-
const envLines = [
|
|
62
|
-
|
|
68
|
+
const envLines = [
|
|
69
|
+
dockerEnvLine("RESTIC_PASSWORD", parsed.password),
|
|
70
|
+
...Object.entries(parsed.credentials).map(([key, value]) => dockerEnvLine(key, value)),
|
|
71
|
+
]
|
|
72
|
+
.map((line) => shellQuote(line))
|
|
63
73
|
.join(" ");
|
|
64
|
-
await session.exec(`test -f ${ENV_FILE} || { printf '%s
|
|
74
|
+
await session.exec(`test -f ${ENV_FILE} || { printf '%s' ${envLines} > ${ENV_FILE} && chmod 600 ${ENV_FILE}; }`);
|
|
65
75
|
await session.exec(`cat > ${SCRIPT_FILE} <<'BACKUP_EOF'\n${backupScript(parsed)}BACKUP_EOF`);
|
|
66
76
|
await session.exec(`chmod +x ${SCRIPT_FILE}`);
|
|
67
77
|
await session.exec(`cat > ${CRONTAB_FILE} <<'CRON_EOF'\n${parsed.schedule} /bin/sh ${SCRIPT_FILE}\nCRON_EOF`);
|
|
@@ -74,7 +84,7 @@ const mountArgs = (parsed, dockerBin) => {
|
|
|
74
84
|
"-v /var/run/docker.sock:/var/run/docker.sock",
|
|
75
85
|
`-v ${dockerBin}:/usr/local/bin/docker:ro`,
|
|
76
86
|
volumes,
|
|
77
|
-
...(isLocalRepo(parsed.repo) ? [`-v ${REPO_VOLUME}:${parsed.repo}`] : []),
|
|
87
|
+
...(isLocalRepo(parsed.repo) ? [`-v ${shellQuote(`${REPO_VOLUME}:${parsed.repo}`)}`] : []),
|
|
78
88
|
"-v /opt/intentic:/host-opt-intentic:ro",
|
|
79
89
|
`-v ${SCRIPT_FILE}:/backup.sh:ro`,
|
|
80
90
|
`-v ${CRONTAB_FILE}:/etc/crontabs/root:ro`,
|
|
@@ -127,9 +137,9 @@ export const createBackupProvider = (executor = sshExecutor) => ({
|
|
|
127
137
|
}
|
|
128
138
|
await ensureFiles(session, parsed);
|
|
129
139
|
await session.exec(`docker rm -f ${CONTAINER} 2>/dev/null || true`);
|
|
130
|
-
const run = await session.exec(`docker run -d --restart unless-stopped --name ${CONTAINER} --label intentic.id=${ctx.id} --label intentic.type=backup ` +
|
|
131
|
-
`--label
|
|
132
|
-
`${mountArgs(parsed, dockerBin)} --entrypoint crond ${parsed.image} -f -l 8`);
|
|
140
|
+
const run = await session.exec(`docker run -d --restart unless-stopped --name ${CONTAINER} --label ${shellQuote(`intentic.id=${ctx.id}`)} --label intentic.type=backup ` +
|
|
141
|
+
`--label ${shellQuote(`intentic.schedule=${parsed.schedule}`)} --label ${shellQuote(`intentic.repo=${parsed.repo}`)} ` +
|
|
142
|
+
`${mountArgs(parsed, dockerBin)} --entrypoint crond ${shellQuote(parsed.image)} -f -l 8`);
|
|
133
143
|
if (run.code !== 0) {
|
|
134
144
|
throw new Error(`failed to start backup container on host: exited ${run.code}: ${run.stderr.trim()}`);
|
|
135
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-host.d.ts","sourceRoot":"","sources":["../../src/backup/migrate-host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate-host.d.ts","sourceRoot":"","sources":["../../src/backup/migrate-host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgBjD,eAAO,MAAM,iBAAiB,YAAmB,UAAU,KAAG,OAAO,CAAC,MAAM,EAAE,CAI7E,CAAC;AAMF,eAAO,MAAM,WAAW,YAAmB,UAAU,KAAG,OAAO,CAAC,IAAI,CAGnE,CAAC;AAKF,eAAO,MAAM,WAAW,YAAmB,UAAU,OAAO,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAG,OAAO,CAAC,OAAO,CAYtG,CAAC;AAMF,eAAO,MAAM,gBAAgB,eACb,UAAU,cACV,UAAU,SACf,MAAM,gBACC,MAAM,OACf,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAC/B,OAAO,CAAC,IAAI,CAsBd,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { HOST_STATE_ROOT } from "@intentic/constants";
|
|
1
2
|
import { REPO_VOLUME } from "./backup.js";
|
|
2
3
|
const BACKUP_CONTAINER = "intentic-backup";
|
|
3
|
-
const BACKUP_SCRIPT =
|
|
4
|
-
const REPO_TAR =
|
|
4
|
+
const BACKUP_SCRIPT = `${HOST_STATE_ROOT}/backup/backup.sh`;
|
|
5
|
+
const REPO_TAR = `${HOST_STATE_ROOT}/migrate-repo.tgz`;
|
|
5
6
|
export const managedContainers = async (session) => {
|
|
6
7
|
const ours = (await session.exec('docker ps -a --filter label=intentic.id --format "{{.Names}}"')).stdout;
|
|
7
8
|
const komodo = (await session.exec('docker ps -a --filter label=com.docker.compose.project=komodo --format "{{.Names}}"')).stdout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-host.js","sourceRoot":"","sources":["../../src/backup/migrate-host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate-host.js","sourceRoot":"","sources":["../../src/backup/migrate-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backing-ssh.d.ts","sourceRoot":"","sources":["../../src/core/backing-ssh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backing-ssh.d.ts","sourceRoot":"","sources":["../../src/core/backing-ssh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA2B3C,eAAO,MAAM,QAAQ,SAAU,MAAM,MAAM,MAAM,KAAG,MAAkD,CAAC;AAKvG,eAAO,MAAM,WAAW,YAAmB,UAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAGpF,CAAC;AAIF,eAAO,MAAM,cAAc,YAAmB,UAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAOvF,CAAC;AAIF,eAAO,MAAM,cAAc,YAAmB,UAAU,SAAS,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAOpG,CAAC;AAGF,eAAO,MAAM,SAAS,YAAmB,UAAU,QAAQ,MAAM,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAQ3F,CAAC;AAGF,eAAO,MAAM,WAAW,YAAmB,UAAU,QAAQ,MAAM,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAM7F,CAAC;AAQF,eAAO,MAAM,cAAc,YAAmB,UAAU,QAAQ,MAAM,SAAS,MAAM,SAAS,MAAM,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CA0BjI,CAAC;AAGF,eAAO,MAAM,SAAS,YAAmB,UAAU,QAAQ,MAAM,MAAM,MAAM,SAAS,MAAM,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAY7H,CAAC"}
|
package/dist/core/backing-ssh.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { setTimeout as sleep } from "node:timers/promises";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { HOST_STATE_ROOT } from "@intentic/constants";
|
|
3
|
+
import { shellQuote } from "@intentic/sandbox-run/quote";
|
|
4
|
+
const slug = (id) => {
|
|
5
|
+
const slugged = id
|
|
6
|
+
.toLowerCase()
|
|
7
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
8
|
+
.replace(/^-+|-+$/g, "");
|
|
9
|
+
if (slugged === "") {
|
|
10
|
+
throw new Error(`cannot derive a host directory from node id "${id}": it has no letters or digits`);
|
|
11
|
+
}
|
|
12
|
+
return slugged;
|
|
13
|
+
};
|
|
14
|
+
export const stateDir = (kind, id) => `${HOST_STATE_ROOT}/${kind}/${slug(id)}`;
|
|
7
15
|
const projectName = (kind, id) => `intentic-${kind}-${slug(id)}`;
|
|
8
16
|
export const containerId = async (session, stamp) => {
|
|
9
17
|
const result = await session.exec(`docker ps -q --filter "label=intentic.id=${stamp}" --format '{{.ID}}'`);
|
|
@@ -22,7 +30,7 @@ export const containerLabel = async (session, stamp, key) => {
|
|
|
22
30
|
if (id === "") {
|
|
23
31
|
return "";
|
|
24
32
|
}
|
|
25
|
-
const result = await session.exec(`docker inspect --format
|
|
33
|
+
const result = await session.exec(`docker inspect --format ${shellQuote(`{{index .Config.Labels "${key}"}}`)} ${id}`);
|
|
26
34
|
return result.stdout.trim();
|
|
27
35
|
};
|
|
28
36
|
export const composeUp = async (session, kind, id) => {
|