@caelo-cms/provisioning 0.11.9 → 0.11.11
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/dist/adapter.d.ts +6 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/admin-domain.d.ts +10 -1
- package/dist/admin-domain.d.ts.map +1 -1
- package/dist/admin-domain.js +13 -3
- package/dist/admin-domain.js.map +1 -1
- package/dist/adopt-existing.d.ts +12 -3
- package/dist/adopt-existing.d.ts.map +1 -1
- package/dist/adopt-existing.js +143 -0
- package/dist/adopt-existing.js.map +1 -1
- package/dist/agent/command.d.ts +23 -0
- package/dist/agent/command.d.ts.map +1 -1
- package/dist/agent/command.js +32 -9
- package/dist/agent/command.js.map +1 -1
- package/dist/agent/run.d.ts +2 -0
- package/dist/agent/run.d.ts.map +1 -1
- package/dist/agent/run.js +5 -1
- package/dist/agent/run.js.map +1 -1
- package/dist/agent-db.js +69 -10
- package/dist/aws-task-roles.d.ts +4 -2
- package/dist/aws-task-roles.d.ts.map +1 -1
- package/dist/aws-task-roles.js +4 -1
- package/dist/aws-task-roles.js.map +1 -1
- package/dist/caddy.d.ts +21 -4
- package/dist/caddy.d.ts.map +1 -1
- package/dist/caddy.js +27 -3
- package/dist/caddy.js.map +1 -1
- package/dist/cli-routing.js +1 -1
- package/dist/cli-routing.js.map +1 -1
- package/dist/cli.js +68 -7
- package/dist/cli.js.map +1 -1
- package/dist/cloudsql-tls.d.ts +93 -0
- package/dist/cloudsql-tls.d.ts.map +1 -0
- package/dist/cloudsql-tls.js +295 -0
- package/dist/cloudsql-tls.js.map +1 -0
- package/dist/compose.d.ts +43 -6
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +148 -23
- package/dist/compose.js.map +1 -1
- package/dist/converge-checkpoint.d.ts +1 -0
- package/dist/converge-checkpoint.d.ts.map +1 -1
- package/dist/converge-checkpoint.js +8 -1
- package/dist/converge-checkpoint.js.map +1 -1
- package/dist/converge-db-trust.d.ts +44 -0
- package/dist/converge-db-trust.d.ts.map +1 -0
- package/dist/converge-db-trust.js +158 -0
- package/dist/converge-db-trust.js.map +1 -0
- package/dist/converge-job-gcp.d.ts +5 -2
- package/dist/converge-job-gcp.d.ts.map +1 -1
- package/dist/converge-job-gcp.js +11 -13
- package/dist/converge-job-gcp.js.map +1 -1
- package/dist/converge-job-preflight.d.ts.map +1 -1
- package/dist/converge-job-preflight.js +8 -0
- package/dist/converge-job-preflight.js.map +1 -1
- package/dist/converge-job.d.ts +17 -0
- package/dist/converge-job.d.ts.map +1 -1
- package/dist/converge-job.js +12 -0
- package/dist/converge-job.js.map +1 -1
- package/dist/deployed-release.d.ts +4 -1
- package/dist/deployed-release.d.ts.map +1 -1
- package/dist/deployed-release.js +18 -8
- package/dist/deployed-release.js.map +1 -1
- package/dist/gcp-names.d.ts +34 -0
- package/dist/gcp-names.d.ts.map +1 -1
- package/dist/gcp-names.js +45 -0
- package/dist/gcp-names.js.map +1 -1
- package/dist/gcp-url-map.d.ts.map +1 -1
- package/dist/gcp-url-map.js +6 -2
- package/dist/gcp-url-map.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/infra-contract.d.ts +1 -1
- package/dist/infra-contract.d.ts.map +1 -1
- package/dist/infra-contract.js +45 -1
- package/dist/infra-contract.js.map +1 -1
- package/dist/install-job.d.ts +4 -2
- package/dist/install-job.d.ts.map +1 -1
- package/dist/install-job.js +4 -1
- package/dist/install-job.js.map +1 -1
- package/dist/install-state.d.ts +13 -0
- package/dist/install-state.d.ts.map +1 -1
- package/dist/install-state.js +17 -4
- package/dist/install-state.js.map +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +20 -8
- package/dist/lifecycle.js.map +1 -1
- package/dist/mcp-auth-proxy-setup.d.ts +48 -0
- package/dist/mcp-auth-proxy-setup.d.ts.map +1 -0
- package/dist/mcp-auth-proxy-setup.js +280 -0
- package/dist/mcp-auth-proxy-setup.js.map +1 -0
- package/dist/migration-runner.d.ts.map +1 -1
- package/dist/migration-runner.js +8 -3
- package/dist/migration-runner.js.map +1 -1
- package/dist/migration-targets.d.ts +11 -0
- package/dist/migration-targets.d.ts.map +1 -0
- package/dist/migration-targets.js +12 -0
- package/dist/migration-targets.js.map +1 -0
- package/dist/operator-access.d.ts +10 -0
- package/dist/operator-access.d.ts.map +1 -1
- package/dist/operator-access.js +5 -0
- package/dist/operator-access.js.map +1 -1
- package/dist/pool-budget-stack.d.ts +13 -1
- package/dist/pool-budget-stack.d.ts.map +1 -1
- package/dist/pool-budget-stack.js +11 -1
- package/dist/pool-budget-stack.js.map +1 -1
- package/dist/public-role-isolation.d.ts +7 -3
- package/dist/public-role-isolation.d.ts.map +1 -1
- package/dist/public-role-isolation.js +25 -13
- package/dist/public-role-isolation.js.map +1 -1
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +3 -0
- package/dist/release-contract.js.map +1 -1
- package/dist/release-manifest.d.ts +25 -1
- package/dist/release-manifest.d.ts.map +1 -1
- package/dist/release-manifest.js +36 -3
- package/dist/release-manifest.js.map +1 -1
- package/dist/remote-mcp.d.ts +55 -18
- package/dist/remote-mcp.d.ts.map +1 -1
- package/dist/remote-mcp.js +307 -77
- package/dist/remote-mcp.js.map +1 -1
- package/dist/runtime-secrets.d.ts +11 -0
- package/dist/runtime-secrets.d.ts.map +1 -1
- package/dist/runtime-secrets.js +40 -25
- package/dist/runtime-secrets.js.map +1 -1
- package/dist/scheduler-setup.d.ts +75 -0
- package/dist/scheduler-setup.d.ts.map +1 -0
- package/dist/scheduler-setup.js +331 -0
- package/dist/scheduler-setup.js.map +1 -0
- package/dist/seal-key-rotation.d.ts +7 -7
- package/dist/seal-key-rotation.d.ts.map +1 -1
- package/dist/seal-key-rotation.js +22 -22
- package/dist/seal-key-rotation.js.map +1 -1
- package/dist/self-hosted-db-tls.d.ts +37 -0
- package/dist/self-hosted-db-tls.d.ts.map +1 -0
- package/dist/self-hosted-db-tls.js +220 -0
- package/dist/self-hosted-db-tls.js.map +1 -0
- package/dist/self-hosted-release.d.ts +3 -1
- package/dist/self-hosted-release.d.ts.map +1 -1
- package/dist/self-hosted-release.js +33 -9
- package/dist/self-hosted-release.js.map +1 -1
- package/dist/self-hosted-roles.d.ts +43 -2
- package/dist/self-hosted-roles.d.ts.map +1 -1
- package/dist/self-hosted-roles.js +87 -1
- package/dist/self-hosted-roles.js.map +1 -1
- package/dist/self-hosted-scheduler-interval.d.ts +21 -0
- package/dist/self-hosted-scheduler-interval.d.ts.map +1 -0
- package/dist/self-hosted-scheduler-interval.js +68 -0
- package/dist/self-hosted-scheduler-interval.js.map +1 -0
- package/dist/self-hosted-start.d.ts +0 -21
- package/dist/self-hosted-start.d.ts.map +1 -1
- package/dist/self-hosted-start.js +39 -1
- package/dist/self-hosted-start.js.map +1 -1
- package/dist/self-hosted-upgrade.d.ts +19 -7
- package/dist/self-hosted-upgrade.d.ts.map +1 -1
- package/dist/self-hosted-upgrade.js +78 -25
- package/dist/self-hosted-upgrade.js.map +1 -1
- package/dist/stack-contract.d.ts +234 -28
- package/dist/stack-contract.d.ts.map +1 -1
- package/dist/stack-contract.js +397 -39
- package/dist/stack-contract.js.map +1 -1
- package/dist/stack-converge.d.ts +31 -0
- package/dist/stack-converge.d.ts.map +1 -1
- package/dist/stack-converge.js +71 -30
- package/dist/stack-converge.js.map +1 -1
- package/dist/staging-database.d.ts +22 -0
- package/dist/staging-database.d.ts.map +1 -0
- package/dist/staging-database.js +117 -0
- package/dist/staging-database.js.map +1 -0
- package/dist/upgrade/app-roll.d.ts +25 -4
- package/dist/upgrade/app-roll.d.ts.map +1 -1
- package/dist/upgrade/app-roll.js +63 -17
- package/dist/upgrade/app-roll.js.map +1 -1
- package/dist/upgrade/converge.d.ts +5 -0
- package/dist/upgrade/converge.d.ts.map +1 -1
- package/dist/upgrade/converge.js +207 -20
- package/dist/upgrade/converge.js.map +1 -1
- package/dist/upgrade/health.d.ts +31 -7
- package/dist/upgrade/health.d.ts.map +1 -1
- package/dist/upgrade/health.js +41 -17
- package/dist/upgrade/health.js.map +1 -1
- package/dist/upgrade/image-forms.d.ts +1 -1
- package/dist/upgrade/image-forms.d.ts.map +1 -1
- package/dist/upgrade/image-forms.js +24 -7
- package/dist/upgrade/image-forms.js.map +1 -1
- package/dist/upgrade/release-images.d.ts +12 -3
- package/dist/upgrade/release-images.d.ts.map +1 -1
- package/dist/upgrade/release-images.js +13 -4
- package/dist/upgrade/release-images.js.map +1 -1
- package/dist/upgrade/upgrade.d.ts +19 -3
- package/dist/upgrade/upgrade.d.ts.map +1 -1
- package/dist/upgrade/upgrade.js +37 -2
- package/dist/upgrade/upgrade.js.map +1 -1
- package/dist/upgrader-gcp.d.ts +13 -0
- package/dist/upgrader-gcp.d.ts.map +1 -1
- package/dist/upgrader-gcp.js +50 -1
- package/dist/upgrader-gcp.js.map +1 -1
- package/dist/upgrader-iam-preflight.d.ts.map +1 -1
- package/dist/upgrader-iam-preflight.js +6 -1
- package/dist/upgrader-iam-preflight.js.map +1 -1
- package/dist/upgrader-job.d.ts +1 -1
- package/dist/upgrader-job.d.ts.map +1 -1
- package/dist/upgrader-job.js +20 -14
- package/dist/upgrader-job.js.map +1 -1
- package/dist/upgrader-records.d.ts +1 -1
- package/dist/upgrader-records.d.ts.map +1 -1
- package/dist/upgrader-records.js +26 -7
- package/dist/upgrader-records.js.map +1 -1
- package/dist/upgrader-setup.d.ts.map +1 -1
- package/dist/upgrader-setup.js +10 -5
- package/dist/upgrader-setup.js.map +1 -1
- package/dist/wizard.d.ts +7 -0
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +11 -0
- package/dist/wizard.js.map +1 -1
- package/dist/wizards/gcp-cost.d.ts +31 -0
- package/dist/wizards/gcp-cost.d.ts.map +1 -1
- package/dist/wizards/gcp-cost.js +103 -18
- package/dist/wizards/gcp-cost.js.map +1 -1
- package/dist/wizards/gcp.d.ts.map +1 -1
- package/dist/wizards/gcp.js +129 -27
- package/dist/wizards/gcp.js.map +1 -1
- package/package.json +2 -2
- package/src/adapter.ts +6 -0
- package/src/admin-domain.test.ts +9 -8
- package/src/admin-domain.ts +13 -3
- package/src/admin-memory.test.ts +2 -1
- package/src/adopt-existing.test.ts +85 -0
- package/src/adopt-existing.ts +141 -3
- package/src/agent/command.test.ts +49 -1
- package/src/agent/command.ts +39 -9
- package/src/agent/run.test.ts +19 -0
- package/src/agent/run.ts +11 -2
- package/src/aws-task-roles.ts +5 -2
- package/src/caddy-redirects.docker.test.ts +2 -0
- package/src/caddy-redirects.test.ts +4 -1
- package/src/caddy-validate.test.ts +7 -1
- package/src/caddy.test.ts +39 -1
- package/src/caddy.ts +36 -4
- package/src/checkpoint-secrets.test.ts +14 -6
- package/src/cli-routing.test.ts +1 -1
- package/src/cli-routing.ts +1 -1
- package/src/cli.ts +71 -5
- package/src/cloudsql-tls.test.ts +255 -0
- package/src/cloudsql-tls.ts +359 -0
- package/src/compose.ts +193 -24
- package/src/converge-checkpoint.ts +8 -1
- package/src/converge-db-trust.test.ts +237 -0
- package/src/converge-db-trust.ts +212 -0
- package/src/converge-job-gcp.ts +11 -12
- package/src/converge-job-preflight.test.ts +5 -0
- package/src/converge-job-preflight.ts +8 -0
- package/src/converge-job.test.ts +70 -0
- package/src/converge-job.ts +32 -0
- package/src/database-tls-builders.test.ts +56 -0
- package/src/deployed-release.test.ts +107 -40
- package/src/deployed-release.ts +30 -9
- package/src/gateway-env-isolation.test.ts +50 -12
- package/src/gcp-names.ts +56 -0
- package/src/gcp-url-map.test.ts +6 -8
- package/src/gcp-url-map.ts +6 -2
- package/src/index.test.ts +10 -4
- package/src/index.ts +7 -0
- package/src/infra-contract.test.ts +7 -3
- package/src/infra-contract.ts +45 -1
- package/src/install-job.ts +4 -1
- package/src/install-state.ts +33 -4
- package/src/lifecycle.ts +23 -11
- package/src/mcp-auth-proxy-setup.test.ts +305 -0
- package/src/mcp-auth-proxy-setup.ts +374 -0
- package/src/mcp-iap-stacks.test.ts +1 -1
- package/src/media-volume.test.ts +1 -1
- package/src/migration-runner.ts +14 -9
- package/src/migration-targets.ts +12 -0
- package/src/operator-access-stacks.test.ts +1 -1
- package/src/operator-access.test.ts +20 -4
- package/src/operator-access.ts +14 -0
- package/src/pool-budget-stack.ts +15 -0
- package/src/pool-budget-stacks.test.ts +39 -14
- package/src/public-role-isolation.test.ts +18 -8
- package/src/public-role-isolation.ts +31 -17
- package/src/release-contract.ts +3 -0
- package/src/release-manifest.test.ts +25 -0
- package/src/release-manifest.ts +59 -4
- package/src/remote-mcp-stack-config.test.ts +19 -9
- package/src/remote-mcp.test.ts +252 -57
- package/src/remote-mcp.ts +336 -77
- package/src/runtime-secrets.test.ts +37 -14
- package/src/runtime-secrets.ts +87 -27
- package/src/scheduler-setup.test.ts +201 -0
- package/src/scheduler-setup.ts +375 -0
- package/src/seal-key-rotation.test.ts +2 -2
- package/src/seal-key-rotation.ts +25 -25
- package/src/self-hosted-backup.test.ts +1 -0
- package/src/self-hosted-compose.test.ts +180 -6
- package/src/self-hosted-db-tls.test.ts +111 -0
- package/src/self-hosted-db-tls.ts +287 -0
- package/src/self-hosted-release-resolve.test.ts +71 -0
- package/src/self-hosted-release.ts +41 -11
- package/src/self-hosted-roles.integration.test.ts +2 -0
- package/src/self-hosted-roles.test.ts +87 -3
- package/src/self-hosted-roles.ts +101 -3
- package/src/self-hosted-scheduler-interval.test.ts +66 -0
- package/src/self-hosted-scheduler-interval.ts +79 -0
- package/src/self-hosted-start.test.ts +35 -2
- package/src/self-hosted-start.ts +20 -2
- package/src/self-hosted-upgrade.test.ts +104 -14
- package/src/self-hosted-upgrade.ts +123 -31
- package/src/stack-contract-parity.test.ts +79 -12
- package/src/stack-contract.test.ts +199 -31
- package/src/stack-contract.ts +472 -45
- package/src/stack-converge-secrets.test.ts +28 -13
- package/src/stack-converge.test.ts +203 -28
- package/src/stack-converge.ts +92 -30
- package/src/staging-database.test.ts +114 -0
- package/src/staging-database.ts +148 -0
- package/src/state-store.test.ts +2 -1
- package/src/upgrade/app-roll.ts +97 -19
- package/src/upgrade/converge.ts +249 -19
- package/src/upgrade/health.test.ts +63 -25
- package/src/upgrade/health.ts +54 -22
- package/src/upgrade/image-forms.test.ts +34 -0
- package/src/upgrade/image-forms.ts +23 -8
- package/src/upgrade/release-images.test.ts +5 -1
- package/src/upgrade/release-images.ts +22 -6
- package/src/upgrade/upgrade.test.ts +438 -46
- package/src/upgrade/upgrade.ts +64 -6
- package/src/upgrader-gcp.ts +66 -3
- package/src/upgrader-iam-preflight.test.ts +19 -0
- package/src/upgrader-iam-preflight.ts +6 -0
- package/src/upgrader-job.test.ts +101 -27
- package/src/upgrader-job.ts +27 -14
- package/src/upgrader-records.test.ts +97 -12
- package/src/upgrader-records.ts +28 -11
- package/src/upgrader-setup.test.ts +2 -0
- package/src/upgrader-setup.ts +10 -4
- package/src/wizard.ts +19 -0
- package/src/wizards/gcp-cost.test.ts +103 -0
- package/src/wizards/gcp-cost.ts +125 -18
- package/src/wizards/gcp.ts +164 -22
- package/stacks/aws/Pulumi.yaml +1 -1
- package/stacks/aws/index.ts +72 -14
- package/stacks/azure/index.ts +108 -21
- package/stacks/gcp/Pulumi.yaml +1 -1
- package/stacks/gcp/README.md +1 -0
- package/stacks/gcp/index.ts +133 -24
- package/stacks/gcp-firebase/Pulumi.yaml +1 -1
- package/stacks/gcp-firebase/index.ts +212 -34
- package/stacks/self-hosted/Pulumi.yaml +3 -0
- package/stacks/self-hosted/README.md +6 -1
- package/stacks/self-hosted/index.ts +40 -5
package/dist/wizard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,38 @@ export interface CostEstimateInputs {
|
|
|
25
25
|
provider?: "gcp" | "gcp-firebase";
|
|
26
26
|
/** #607 — the install region; shown in the table (prices are {@link PRICED_REGION} rates). */
|
|
27
27
|
region: string;
|
|
28
|
+
/** #1140 — the `schedulerIntervalMinutes` knob (1–15); undefined: the default. */
|
|
29
|
+
schedulerIntervalMinutes?: number;
|
|
28
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* #1140 — Workflows steps one scheduler tick costs (scheduler-setup.ts
|
|
33
|
+
* schedulerWorkflowSource): the claims `assign`, the signJwt call (a Google
|
|
34
|
+
* API, billed as an internal step), the `return` — and the POST to the
|
|
35
|
+
* admin, the one external HTTP step.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SCHEDULER_TICK_STEPS: {
|
|
38
|
+
readonly internal: 3;
|
|
39
|
+
readonly external: 1;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* #1140 — what the scheduler tick costs a month at `minutes` between ticks:
|
|
43
|
+
* the Cloud Scheduler job (priced as paid — the 3 free jobs are shared
|
|
44
|
+
* with every other project on the billing account) plus the Workflows
|
|
45
|
+
* steps past the free tier. What the tick costs on the admin's side is
|
|
46
|
+
* priced on the admin's own line ({@link adminKeptWarmByTicks}).
|
|
47
|
+
*/
|
|
48
|
+
export declare function schedulerTickMonthlyUsd(minutes: number): number;
|
|
49
|
+
/**
|
|
50
|
+
* #1140 — whether the scheduler tick keeps a scale-to-zero admin instance
|
|
51
|
+
* up around the clock. Cloud Run keeps an idle instance for up to 15
|
|
52
|
+
* minutes after its last request, and the tick comes at most every 15
|
|
53
|
+
* minutes, so with CPU always allocated (`SERVICE_CPU_IDLE.admin` false
|
|
54
|
+
* until #1361) the instance never stops and is billed every second. With
|
|
55
|
+
* request-billed CPU an idle instance costs nothing between ticks.
|
|
56
|
+
*/
|
|
57
|
+
export declare function adminKeptWarmByTicks(adminMinInstances: number): boolean;
|
|
58
|
+
/** One always-on admin instance (1 vCPU, `gib` memory) a month at instance-based list rates. */
|
|
59
|
+
export declare function alwaysOnAdminInstanceUsd(gib: number): number;
|
|
29
60
|
export declare function estimateGcpCost(inputs: CostEstimateInputs): {
|
|
30
61
|
lines: CostLine[];
|
|
31
62
|
totalUsd: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcp-cost.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gcp-cost.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IAClC,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;CAAwC,CAAC;AAgB1E;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAe/D;AAYD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,gGAAgG;AAChG,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5D;AAmBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG;IAC3D,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;CACpB,CAoKA"}
|
package/dist/wizards/gcp-cost.js
CHANGED
|
@@ -9,7 +9,66 @@
|
|
|
9
9
|
* floor cost (idle + scale-to-zero traffic). Real usage adds egress
|
|
10
10
|
* + AI calls + storage growth on top.
|
|
11
11
|
*/
|
|
12
|
-
import { ADMIN_MEMORY_DEFAULT, memoryQuantityMiB } from "../stack-contract.js";
|
|
12
|
+
import { ADMIN_MEMORY_DEFAULT, memoryQuantityMiB, parseSchedulerIntervalMinutes, SERVICE_CPU_IDLE, } from "../stack-contract.js";
|
|
13
|
+
/**
|
|
14
|
+
* #1140 — Workflows steps one scheduler tick costs (scheduler-setup.ts
|
|
15
|
+
* schedulerWorkflowSource): the claims `assign`, the signJwt call (a Google
|
|
16
|
+
* API, billed as an internal step), the `return` — and the POST to the
|
|
17
|
+
* admin, the one external HTTP step.
|
|
18
|
+
*/
|
|
19
|
+
export const SCHEDULER_TICK_STEPS = { internal: 3, external: 1 };
|
|
20
|
+
/**
|
|
21
|
+
* Workflows list prices (USD, cloud.google.com/workflows/pricing, as of
|
|
22
|
+
* 2026-11) and the monthly free tier per billing account.
|
|
23
|
+
*/
|
|
24
|
+
const WORKFLOWS_PRICE = {
|
|
25
|
+
internalPer1000: 0.01,
|
|
26
|
+
externalPer1000: 0.025,
|
|
27
|
+
freeInternal: 5_000,
|
|
28
|
+
freeExternal: 2_000,
|
|
29
|
+
};
|
|
30
|
+
/** Cloud Scheduler: $0.10 per job a month; the first 3 per billing account are free. */
|
|
31
|
+
const SCHEDULER_JOB_USD = 0.1;
|
|
32
|
+
/**
|
|
33
|
+
* #1140 — what the scheduler tick costs a month at `minutes` between ticks:
|
|
34
|
+
* the Cloud Scheduler job (priced as paid — the 3 free jobs are shared
|
|
35
|
+
* with every other project on the billing account) plus the Workflows
|
|
36
|
+
* steps past the free tier. What the tick costs on the admin's side is
|
|
37
|
+
* priced on the admin's own line ({@link adminKeptWarmByTicks}).
|
|
38
|
+
*/
|
|
39
|
+
export function schedulerTickMonthlyUsd(minutes) {
|
|
40
|
+
const ticks = Math.ceil((30 * 24 * 60) / parseSchedulerIntervalMinutes(minutes));
|
|
41
|
+
const internal = Math.max(0, ticks * SCHEDULER_TICK_STEPS.internal - WORKFLOWS_PRICE.freeInternal);
|
|
42
|
+
const external = Math.max(0, ticks * SCHEDULER_TICK_STEPS.external - WORKFLOWS_PRICE.freeExternal);
|
|
43
|
+
const usd = SCHEDULER_JOB_USD +
|
|
44
|
+
(internal / 1000) * WORKFLOWS_PRICE.internalPer1000 +
|
|
45
|
+
(external / 1000) * WORKFLOWS_PRICE.externalPer1000;
|
|
46
|
+
return Math.round(usd * 100) / 100;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Cloud Run instance-based billing (CPU always allocated) list rates, USD,
|
|
50
|
+
* tier-1 region, cloud.google.com/run/pricing as of 2026-11. The free tier
|
|
51
|
+
* is left out: it is shared by every service on the billing account.
|
|
52
|
+
*/
|
|
53
|
+
const CLOUD_RUN_INSTANCE_PRICE = { vcpuSecond: 0.000018, gibSecond: 0.000002 };
|
|
54
|
+
/** Seconds in the 30-day month the table prices. */
|
|
55
|
+
const MONTH_SECONDS = 30 * 24 * 60 * 60;
|
|
56
|
+
/**
|
|
57
|
+
* #1140 — whether the scheduler tick keeps a scale-to-zero admin instance
|
|
58
|
+
* up around the clock. Cloud Run keeps an idle instance for up to 15
|
|
59
|
+
* minutes after its last request, and the tick comes at most every 15
|
|
60
|
+
* minutes, so with CPU always allocated (`SERVICE_CPU_IDLE.admin` false
|
|
61
|
+
* until #1361) the instance never stops and is billed every second. With
|
|
62
|
+
* request-billed CPU an idle instance costs nothing between ticks.
|
|
63
|
+
*/
|
|
64
|
+
export function adminKeptWarmByTicks(adminMinInstances) {
|
|
65
|
+
return adminMinInstances === 0 && !SERVICE_CPU_IDLE.admin;
|
|
66
|
+
}
|
|
67
|
+
/** One always-on admin instance (1 vCPU, `gib` memory) a month at instance-based list rates. */
|
|
68
|
+
export function alwaysOnAdminInstanceUsd(gib) {
|
|
69
|
+
const perSecond = CLOUD_RUN_INSTANCE_PRICE.vcpuSecond + gib * CLOUD_RUN_INSTANCE_PRICE.gibSecond;
|
|
70
|
+
return Math.round(perSecond * MONTH_SECONDS);
|
|
71
|
+
}
|
|
13
72
|
/** The region the price table's list rates are for. */
|
|
14
73
|
const PRICED_REGION = "europe-west1";
|
|
15
74
|
const SQL_TIER_USD = {
|
|
@@ -30,6 +89,7 @@ export function estimateGcpCost(inputs) {
|
|
|
30
89
|
const sqlMultiplier = inputs.cloudSqlHa ? 2.0 : 1.0;
|
|
31
90
|
const sqlMonthly = Math.round(sqlBase * sqlMultiplier);
|
|
32
91
|
const provider = inputs.provider ?? "gcp";
|
|
92
|
+
const schedulerMinutes = parseSchedulerIntervalMinutes(inputs.schedulerIntervalMinutes);
|
|
33
93
|
const adminMemory = inputs.adminMemory ?? ADMIN_MEMORY_DEFAULT;
|
|
34
94
|
const adminMiB = memoryQuantityMiB(adminMemory);
|
|
35
95
|
if (adminMiB === null) {
|
|
@@ -49,15 +109,20 @@ export function estimateGcpCost(inputs) {
|
|
|
49
109
|
},
|
|
50
110
|
{
|
|
51
111
|
name: `Cloud Run admin (${adminMemory})`,
|
|
52
|
-
// FIXME(issue #
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
112
|
+
// FIXME(issue #1361): with request-billed CPU (SERVICE_CPU_IDLE) the
|
|
113
|
+
// ticks stop keeping the instance up and this line drops to ~$7 of
|
|
114
|
+
// editing sessions. Until then the scheduler tick (#1140) keeps one
|
|
115
|
+
// instance up around the clock, billed at the always-on rate.
|
|
116
|
+
monthlyUsd: adminKeptWarmByTicks(inputs.adminMinInstances)
|
|
117
|
+
? alwaysOnAdminInstanceUsd(adminGiB)
|
|
118
|
+
: inputs.adminMinInstances === 0
|
|
119
|
+
? 7
|
|
120
|
+
: Math.round(1 + inputs.adminMinInstances * perMinInstanceUsd),
|
|
121
|
+
notes: adminKeptWarmByTicks(inputs.adminMinInstances)
|
|
122
|
+
? `scale-to-zero, but CPU is always allocated and the scheduler tick (every ${schedulerMinutes} min) comes before Cloud Run's 15-minute idle shutdown, so one instance (1 vCPU, ${adminMemory}) runs around the clock until request-billed CPU lands (#1361)`
|
|
123
|
+
: inputs.adminMinInstances === 0
|
|
124
|
+
? "scale-to-zero, request-billed CPU; ~$7/mo light editorial use, ticks inside the free tier"
|
|
125
|
+
: `${inputs.adminMinInstances} min-instance${inputs.adminMinInstances > 1 ? "s" : ""} (no cold start); the scheduler tick adds nothing, the instance is up anyway`,
|
|
61
126
|
},
|
|
62
127
|
{
|
|
63
128
|
name: "Quality checks (Cloud Run audit job)",
|
|
@@ -70,12 +135,22 @@ export function estimateGcpCost(inputs) {
|
|
|
70
135
|
notes: "one short container per server-side screenshot or page render (~20-40 s at 1 vCPU / 2 GiB): ~$0.001 each, a 50-page site import ~$0.05; mostly in the free tier; capture bucket ~$0",
|
|
71
136
|
},
|
|
72
137
|
{
|
|
73
|
-
|
|
138
|
+
// #1328 — on gcp-firebase the visitor gateway is the new
|
|
139
|
+
// `caelo-<env>-data-gateway` service; same billing either way.
|
|
140
|
+
name: provider === "gcp" ? "Cloud Run gateway" : "Cloud Run data gateway",
|
|
74
141
|
monthlyUsd: inputs.gatewayMinInstances === 0 ? 1 : 1 + inputs.gatewayMinInstances * 15,
|
|
75
142
|
notes: inputs.gatewayMinInstances === 0
|
|
76
143
|
? "scale-to-zero; ~$1/mo light traffic"
|
|
77
144
|
: `${inputs.gatewayMinInstances} min-instance${inputs.gatewayMinInstances > 1 ? "s" : ""}`,
|
|
78
145
|
},
|
|
146
|
+
{
|
|
147
|
+
// #1328 — remote MCP's sign-in service, its own service on every
|
|
148
|
+
// install (E14 a of #763): always provisioned, zero minimum instances,
|
|
149
|
+
// CPU only during requests, so it costs nothing while nobody connects.
|
|
150
|
+
name: "Cloud Run MCP-Auth-Proxy",
|
|
151
|
+
monthlyUsd: 0,
|
|
152
|
+
notes: "scale-to-zero, request-based CPU; only external AI apps' sign-in and MCP calls wake it, mostly in the free tier",
|
|
153
|
+
},
|
|
79
154
|
// v0.3.3 — LB / Cloud CDN / Cloud Armor lines apply only to the
|
|
80
155
|
// gcp variant. gcp-firebase has no LB (Firebase Hosting is the
|
|
81
156
|
// edge); no Cloud CDN line (Firebase Hosting has its own CDN
|
|
@@ -101,12 +176,17 @@ export function estimateGcpCost(inputs) {
|
|
|
101
176
|
: "Free tier — rate limit + OWASP basic rules",
|
|
102
177
|
},
|
|
103
178
|
{
|
|
104
|
-
// #
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
179
|
+
// #1328 — the MCP-Auth-Proxy's own backend (serverless NEG +
|
|
180
|
+
// backend service, no extra LB fee: same URL map) with its own
|
|
181
|
+
// Cloud Armor policy carrying the remote-MCP throttle
|
|
182
|
+
// (src/remote-mcp-edge.ts) and the default rule. Cloud Armor
|
|
183
|
+
// Standard: $0.006849315/policy-hour (~$5/mo) and
|
|
184
|
+
// $0.001369863/rule-hour (~$1/mo), plus $0.75 per million
|
|
185
|
+
// requests on a global policy — cloud.google.com/armor/pricing,
|
|
186
|
+
// checked 2026-11-02.
|
|
187
|
+
name: "MCP-Auth-Proxy backend + Cloud Armor policy",
|
|
188
|
+
monthlyUsd: 7,
|
|
189
|
+
notes: "own policy ($5) with 2 rules ($2): per-IP throttle for remote MCP clients; requests ~$0",
|
|
110
190
|
},
|
|
111
191
|
]
|
|
112
192
|
: [
|
|
@@ -126,7 +206,7 @@ export function estimateGcpCost(inputs) {
|
|
|
126
206
|
{
|
|
127
207
|
name: "Secret Manager (runtime secrets)",
|
|
128
208
|
monthlyUsd: 0.2,
|
|
129
|
-
notes: "6 active versions free, then ~$0.06 each; the Google sign-in client (#914)
|
|
209
|
+
notes: "6 active versions free, then ~$0.06 each; the Google sign-in client (#914), the remote-MCP seal key (#806) and the staging database login's password (#1329; the staging database itself shares the Cloud SQL instance at no extra cost)",
|
|
130
210
|
},
|
|
131
211
|
{
|
|
132
212
|
name: "BigQuery edge log sink",
|
|
@@ -143,6 +223,11 @@ export function estimateGcpCost(inputs) {
|
|
|
143
223
|
monthlyUsd: 0,
|
|
144
224
|
notes: "Hourly ~20 s job keeps Google IAP in step with the user list; within the Cloud Run free tier, 1 of 3 free scheduler jobs",
|
|
145
225
|
},
|
|
226
|
+
{
|
|
227
|
+
name: `Scheduler tick (Cloud Scheduler + Workflows, every ${schedulerMinutes} min)`,
|
|
228
|
+
monthlyUsd: schedulerTickMonthlyUsd(schedulerMinutes),
|
|
229
|
+
notes: `one job starts a ${SCHEDULER_TICK_STEPS.internal + SCHEDULER_TICK_STEPS.external}-step workflow that calls the admin's periodic work and plugin workers; ~${Math.ceil((30 * 24 * 60) / schedulerMinutes)} ticks/mo; what the ticks cost on the admin is on the admin line`,
|
|
230
|
+
},
|
|
146
231
|
];
|
|
147
232
|
// Cents, so a sub-dollar line (the KMS key) doesn't print float noise.
|
|
148
233
|
const totalUsd = Math.round(lines.reduce((sum, l) => sum + l.monthlyUsd, 0) * 100) / 100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcp-cost.js","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"gcp-cost.js","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp.ts"],"names":[],"mappings":"AAyHA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAU9C,OAAO,EAOL,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAoB7B,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmIrE;AAKD,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,cAAc,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiRzE"}
|
package/dist/wizards/gcp.js
CHANGED
|
@@ -28,6 +28,7 @@ import { randomBytes } from "node:crypto";
|
|
|
28
28
|
import { existsSync, readFileSync } from "node:fs";
|
|
29
29
|
import { homedir } from "node:os";
|
|
30
30
|
import { join } from "node:path";
|
|
31
|
+
import { CLOUD_SQL_CA_BUNDLE, verifyFullQuery } from "@caelo-cms/shared";
|
|
31
32
|
import { cancel, confirm, isCancel, log, note, select, spinner } from "@clack/prompts";
|
|
32
33
|
import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
|
|
33
34
|
import { checkAdcImpersonation } from "../adc-impersonation.js";
|
|
@@ -42,7 +43,7 @@ import { checkDeployedRuntimeEnv, chooseImageDigests, readDeployedImageDigests,
|
|
|
42
43
|
import { formatDnsRecordGroups, groupDnsRecords } from "../dns/groups.js";
|
|
43
44
|
import { pickDnsAdapter } from "../dns/index.js";
|
|
44
45
|
import { activeAccount, checkGcloudAuth, createProject, createServiceAccount, enableApis, gcloud, gcloudEnv, grantProvisionerRoles, linkBilling, listBillingAccounts, PROVISIONER_ROLE_LIST, projectDisplayName, projectExists, REQUIRED_API_LIST, serviceAccountExists, } from "../gcloud.js";
|
|
45
|
-
import { GCP_STACK_ENV, upgraderServiceAccountEmail } from "../gcp-names.js";
|
|
46
|
+
import { GCP_STACK_ENV, schedulerServiceAccountEmail, upgraderServiceAccountEmail, } from "../gcp-names.js";
|
|
46
47
|
import { INFRA_CONTRACT_VERSION } from "../infra-contract.js";
|
|
47
48
|
import { INSTALL_JOB_NAME, INSTALL_JOB_ROLES, INSTALL_SETUP_LINK_SECRET, storeSetupLink, } from "../install-job.js";
|
|
48
49
|
import { adoptStateBackend, ensureInstallDir, installRoot, installStagingHost, isStepDone, markStepDone, readLocalMetadata, readMetadata, readSecret, recordedImageDigests, recordImageDigests, recordInfraContractVersion, writeMetadata, writeSecret, } from "../install-state.js";
|
|
@@ -53,12 +54,13 @@ import { convergeKeylessProvisioner, PROVISIONER_ACCOUNT_ID, provisionerServiceA
|
|
|
53
54
|
import { revokePublicRoleMemberships } from "../public-role-isolation.js";
|
|
54
55
|
import { decideRegion, detectCliRegion, installableRegions, suggestRegion } from "../regions.js";
|
|
55
56
|
import { checkRemoteMcpIdentityEnv, ensureRemoteMcpEdge, findRemoteMcpTarget, resolveStackRemoteMcpIdentity, } from "../remote-mcp.js";
|
|
57
|
+
import { ensureSchedulerTick } from "../scheduler-setup.js";
|
|
56
58
|
import { selfCommand } from "../self-command.js";
|
|
57
|
-
import { ABSENT_DEFAULT_FIREWALL_RULES, sameRemoteMcpIdentity, } from "../stack-contract.js";
|
|
59
|
+
import { ABSENT_DEFAULT_FIREWALL_RULES, cloudSqlPrivateDnsName, parseSchedulerIntervalMinutes, sameRemoteMcpIdentity, } from "../stack-contract.js";
|
|
58
60
|
import { chooseInstallBackend, describeBackend, gcsBackendRecord, hasLocalPulumiState, installBackend, parseStateBackend, resolveBackend, } from "../state-backend.js";
|
|
59
61
|
import { acquireStateLock, GcsStateStore } from "../state-store.js";
|
|
60
62
|
import { createReleaseImageForms, platformDigestsOf } from "../upgrade/image-forms.js";
|
|
61
|
-
import { releaseVersionForDigest, resolveOpsImageRef, verifyCosignAll, } from "../upgrade/release-images.js";
|
|
63
|
+
import { releaseImageRef, releaseVersionForDigest, resolveOpsImageRef, verifyCosignAll, } from "../upgrade/release-images.js";
|
|
62
64
|
import { ensureUpgraderJob, resolveUpgraderTarget } from "../upgrader-setup.js";
|
|
63
65
|
import { ensureUrlMapRedirectsAccess } from "../url-map-redirects-access.js";
|
|
64
66
|
import { estimateGcpCost } from "./gcp-cost.js";
|
|
@@ -116,7 +118,15 @@ export async function runGcpWizard(opts) {
|
|
|
116
118
|
// drops the LB / Cloud CDN / Cloud Armor lines (saves ~$19/mo
|
|
117
119
|
// vs gcp). Default 'gcp' for backwards compatibility with
|
|
118
120
|
// installs that don't set the field.
|
|
119
|
-
const estimate = estimateGcpCost({
|
|
121
|
+
const estimate = estimateGcpCost({
|
|
122
|
+
...GCP_STACK_KNOB_DEFAULTS,
|
|
123
|
+
provider,
|
|
124
|
+
region,
|
|
125
|
+
// #1140 — the tick's line follows the knob the wizard recorded.
|
|
126
|
+
...(meta?.schedulerIntervalMinutes !== undefined
|
|
127
|
+
? { schedulerIntervalMinutes: meta.schedulerIntervalMinutes }
|
|
128
|
+
: {}),
|
|
129
|
+
});
|
|
120
130
|
note([
|
|
121
131
|
bold("Estimated monthly cost (resource floor — actual usage adds AI calls + egress + storage growth)"),
|
|
122
132
|
` ${estimate.regionNote}`,
|
|
@@ -205,7 +215,7 @@ export async function runGcpConverge(opts) {
|
|
|
205
215
|
const deployed = isStepDone(installId, `pulumi-up-${projectId}`);
|
|
206
216
|
if (deployed) {
|
|
207
217
|
// The kept release must be able to use the env the stack deploys.
|
|
208
|
-
const runtimeEnv = await checkDeployedRuntimeEnv({ projectId, region });
|
|
218
|
+
const runtimeEnv = await checkDeployedRuntimeEnv({ provider, projectId, region });
|
|
209
219
|
if (!runtimeEnv.ok) {
|
|
210
220
|
cancel(runtimeEnv.error);
|
|
211
221
|
process.exit(1);
|
|
@@ -214,7 +224,7 @@ export async function runGcpConverge(opts) {
|
|
|
214
224
|
const choice = await chooseImageDigests({
|
|
215
225
|
recorded: recordedImageDigests(meta),
|
|
216
226
|
deployed,
|
|
217
|
-
readLive: () => readDeployedImageDigests({ projectId, region }),
|
|
227
|
+
readLive: () => readDeployedImageDigests({ provider, projectId, region }),
|
|
218
228
|
resolveLatest: resolveImageDigests,
|
|
219
229
|
});
|
|
220
230
|
if (!choice.ok) {
|
|
@@ -351,17 +361,22 @@ export async function runGcpConverge(opts) {
|
|
|
351
361
|
const keepSigner = upgraderReady || (await upgraderExists(projectId));
|
|
352
362
|
// === 11.45. The converge job: releases that change the cloud setup (#819) ===
|
|
353
363
|
const convergeReady = await stepConvergeJob(projectId, region, releaseVersion);
|
|
364
|
+
// === 11.47. The scheduler tick: periodic work + plugin workers (#1140) ===
|
|
365
|
+
// Before operator access, which keeps the scheduler's account on IAP.
|
|
366
|
+
const schedulerReady = await stepSchedulerTick(projectId, region, provider, ownerEmail, identity?.identity.adminUrl ?? null, meta.schedulerIntervalMinutes);
|
|
367
|
+
const keepScheduler = schedulerReady || (await schedulerExists(projectId));
|
|
354
368
|
// === 11.5. Operator access: IAP follows the Caelo user list ===
|
|
355
|
-
await stepOperatorAccessSync(projectId, region, provider, ownerEmail, keepSigner ? [`serviceAccount:${upgraderServiceAccountEmail(projectId, GCP_STACK_ENV)}`] : []);
|
|
369
|
+
await stepOperatorAccessSync(projectId, region, provider, ownerEmail, keepSigner ? [`serviceAccount:${upgraderServiceAccountEmail(projectId, GCP_STACK_ENV)}`] : [], keepScheduler ? [schedulerServiceAccountEmail(projectId, GCP_STACK_ENV)] : []);
|
|
356
370
|
// === 11.6. Remote MCP (#806): LB rules (gcp) + a check of the identity env ===
|
|
357
371
|
// The env itself came with `pulumi up` (step 10.05, #1082).
|
|
358
|
-
const remoteMcpReady = await stepRemoteMcp(projectId, provider, domain, identity);
|
|
372
|
+
const remoteMcpReady = await stepRemoteMcp(projectId, region, provider, domain, identity, imageDigests);
|
|
359
373
|
// A fresh install ran every converge step above, so it is at this CLI's
|
|
360
374
|
// infrastructure contract — recorded only when the upgrader and the
|
|
361
375
|
// converge job are in place (the steps contract bumps 2 and 9 added) and
|
|
362
|
-
// remote MCP's steps (#806, bump 10)
|
|
363
|
-
// the admin can install the next
|
|
364
|
-
|
|
376
|
+
// remote MCP's steps (#806, bump 10) and the scheduler tick (#1140, bump
|
|
377
|
+
// 18) succeeded. With the release version, the admin can install the next
|
|
378
|
+
// update itself.
|
|
379
|
+
if (upgraderReady && convergeReady && remoteMcpReady && schedulerReady) {
|
|
365
380
|
const version = releaseVersion;
|
|
366
381
|
// #1025 — the linux/amd64 forms Cloud Run reports, next to the indexes,
|
|
367
382
|
// so the upgrader recognises what serves without a registry lookup.
|
|
@@ -410,8 +425,12 @@ async function resolveImageDigests() {
|
|
|
410
425
|
const project = "caelo-website";
|
|
411
426
|
const registryRegion = "europe-west1";
|
|
412
427
|
const repo = "caelo-cms-images";
|
|
413
|
-
const out = {
|
|
414
|
-
|
|
428
|
+
const out = {
|
|
429
|
+
admin: "",
|
|
430
|
+
gateway: "",
|
|
431
|
+
"mcp-auth-proxy": "",
|
|
432
|
+
};
|
|
433
|
+
for (const service of ["admin", "gateway", "mcp-auth-proxy"]) {
|
|
415
434
|
const s = spinner();
|
|
416
435
|
s.start(`Resolving ${service}:latest → digest...`);
|
|
417
436
|
// gcloud's --filter='tag=latest' is in a transitional state (warns +
|
|
@@ -729,7 +748,7 @@ async function stepGrantBaseRoles(installId, projectId, saEmail) {
|
|
|
729
748
|
*/
|
|
730
749
|
async function stepPublicRoleIsolation(projectId) {
|
|
731
750
|
const s = spinner();
|
|
732
|
-
s.start("Removing
|
|
751
|
+
s.start("Removing the gateway logins from the Cloud SQL superuser group...");
|
|
733
752
|
const r = await revokePublicRoleMemberships({
|
|
734
753
|
projectId,
|
|
735
754
|
env: GCP_STACK_ENV,
|
|
@@ -741,7 +760,7 @@ async function stepPublicRoleIsolation(projectId) {
|
|
|
741
760
|
cancel("Aborted.");
|
|
742
761
|
process.exit(1);
|
|
743
762
|
}
|
|
744
|
-
s.stop(green("public_role
|
|
763
|
+
s.stop(green("The gateway logins (public_role, public_staging_role) hold no database roles"));
|
|
745
764
|
}
|
|
746
765
|
/**
|
|
747
766
|
* The admin's custom role for writing the redirects table into the URL map
|
|
@@ -914,13 +933,75 @@ async function upgraderExists(projectId) {
|
|
|
914
933
|
]);
|
|
915
934
|
return r.ok;
|
|
916
935
|
}
|
|
936
|
+
/** Whether the scheduler tick's account exists from an earlier run (it keeps its IAP access). */
|
|
937
|
+
async function schedulerExists(projectId) {
|
|
938
|
+
const r = await gcloud([
|
|
939
|
+
"iam",
|
|
940
|
+
"service-accounts",
|
|
941
|
+
"describe",
|
|
942
|
+
schedulerServiceAccountEmail(projectId, GCP_STACK_ENV),
|
|
943
|
+
`--project=${projectId}`,
|
|
944
|
+
"--format=value(email)",
|
|
945
|
+
]);
|
|
946
|
+
return r.ok;
|
|
947
|
+
}
|
|
948
|
+
/**
|
|
949
|
+
* #1140 — set up the scheduler tick (scheduler-setup.ts): the one Cloud
|
|
950
|
+
* Scheduler job that calls the admin's tick every `schedulerIntervalMinutes`
|
|
951
|
+
* through IAP. After migrations (the admin answers the tick once its tables
|
|
952
|
+
* exist) and before operator access. Not fatal: the site works without it,
|
|
953
|
+
* but plugin workers, update checks and clean-up do not run, so a failure
|
|
954
|
+
* warns loudly and the install is not recorded at this contract — the next
|
|
955
|
+
* wizard pass or `upgrade` retries. Idempotent.
|
|
956
|
+
*
|
|
957
|
+
* @returns whether the tick is in place
|
|
958
|
+
*/
|
|
959
|
+
async function stepSchedulerTick(projectId, region, provider, ownerEmail, adminUrl, recordedInterval) {
|
|
960
|
+
const s = spinner();
|
|
961
|
+
s.start("Setting up the scheduler tick (periodic work and plugin workers)...");
|
|
962
|
+
const failed = (error) => {
|
|
963
|
+
s.stop(yellow(`Scheduler tick not set up: ${error}`));
|
|
964
|
+
log.warn(`The install works, but plugin workers (newsletter sends, rating aggregates), update checks and clean-up do not run until this succeeds. Re-run the installer or ${bold(selfCommand("upgrade"))} once the cause is fixed.`);
|
|
965
|
+
return false;
|
|
966
|
+
};
|
|
967
|
+
let intervalMinutes;
|
|
968
|
+
try {
|
|
969
|
+
intervalMinutes = parseSchedulerIntervalMinutes(recordedInterval, "install.json schedulerIntervalMinutes");
|
|
970
|
+
}
|
|
971
|
+
catch (e) {
|
|
972
|
+
return failed(e.message);
|
|
973
|
+
}
|
|
974
|
+
if (!adminUrl)
|
|
975
|
+
return failed("the admin's URL could not be read (see the remote-MCP step above)");
|
|
976
|
+
const resolved = await resolveOperatorAccessTarget({
|
|
977
|
+
provider,
|
|
978
|
+
projectId,
|
|
979
|
+
region,
|
|
980
|
+
env: GCP_STACK_ENV,
|
|
981
|
+
ownerEmail,
|
|
982
|
+
});
|
|
983
|
+
if (!resolved.ok)
|
|
984
|
+
return failed(resolved.error);
|
|
985
|
+
const r = await ensureSchedulerTick({
|
|
986
|
+
projectId,
|
|
987
|
+
region,
|
|
988
|
+
env: GCP_STACK_ENV,
|
|
989
|
+
adminUrl,
|
|
990
|
+
resource: resolved.target.resource,
|
|
991
|
+
intervalMinutes,
|
|
992
|
+
});
|
|
993
|
+
if (!r.ok)
|
|
994
|
+
return failed(r.error);
|
|
995
|
+
s.stop(green(`Scheduler tick ready (every ${intervalMinutes} min, ${r.done.length} steps)`));
|
|
996
|
+
return true;
|
|
997
|
+
}
|
|
917
998
|
/**
|
|
918
999
|
* Set up the operator-access sync job (operator-access.ts): the only
|
|
919
1000
|
* principal that may change who passes IAP, run as the operator's gcloud
|
|
920
1001
|
* identity. After migrations, because the job's database user gets the role
|
|
921
1002
|
* migration 0239 creates. Idempotent, so it runs on every wizard pass.
|
|
922
1003
|
*/
|
|
923
|
-
async function stepOperatorAccessSync(projectId, region, provider, ownerEmail, mcpSigners) {
|
|
1004
|
+
async function stepOperatorAccessSync(projectId, region, provider, ownerEmail, mcpSigners, iapServiceAccounts) {
|
|
924
1005
|
const s = spinner();
|
|
925
1006
|
s.start("Setting up the operator-access sync job (Google IAP follows the user list)...");
|
|
926
1007
|
const resolved = await resolveOperatorAccessTarget({
|
|
@@ -931,7 +1012,7 @@ async function stepOperatorAccessSync(projectId, region, provider, ownerEmail, m
|
|
|
931
1012
|
ownerEmail,
|
|
932
1013
|
});
|
|
933
1014
|
const r = resolved.ok
|
|
934
|
-
? await ensureOperatorAccessSync({ ...resolved.target, mcpSigners })
|
|
1015
|
+
? await ensureOperatorAccessSync({ ...resolved.target, mcpSigners, iapServiceAccounts })
|
|
935
1016
|
: { ok: false, done: [], error: resolved.error };
|
|
936
1017
|
if (!r.ok) {
|
|
937
1018
|
s.stop(red(`Failed: ${r.error}`));
|
|
@@ -995,7 +1076,7 @@ async function stepResolveRemoteMcpIdentity(projectId, region, provider, domain,
|
|
|
995
1076
|
*
|
|
996
1077
|
* @returns whether every part is in place
|
|
997
1078
|
*/
|
|
998
|
-
async function stepRemoteMcp(projectId, provider, domain, identity) {
|
|
1079
|
+
async function stepRemoteMcp(projectId, region, provider, domain, identity, imageDigests) {
|
|
999
1080
|
const s = spinner();
|
|
1000
1081
|
s.start("Preparing remote MCP (ChatGPT / claude.ai connectors; off until the Owner enables it)...");
|
|
1001
1082
|
const failed = (error) => {
|
|
@@ -1005,13 +1086,25 @@ async function stepRemoteMcp(projectId, provider, domain, identity) {
|
|
|
1005
1086
|
};
|
|
1006
1087
|
if (!identity)
|
|
1007
1088
|
return failed("its URLs and IAP audience could not be read (see above)");
|
|
1008
|
-
const
|
|
1089
|
+
const proxyDigest = imageDigests["mcp-auth-proxy"];
|
|
1090
|
+
if (!proxyDigest)
|
|
1091
|
+
return failed("the release records no MCP-Auth-Proxy image");
|
|
1092
|
+
const edge = await ensureRemoteMcpEdge({
|
|
1093
|
+
provider,
|
|
1094
|
+
projectId,
|
|
1095
|
+
region,
|
|
1096
|
+
env: GCP_STACK_ENV,
|
|
1097
|
+
domain,
|
|
1098
|
+
mcpAuthProxyImageRef: releaseImageRef("mcp-auth-proxy", proxyDigest),
|
|
1099
|
+
});
|
|
1009
1100
|
if (!edge.ok)
|
|
1010
1101
|
return failed(edge.error);
|
|
1011
1102
|
const check = await checkRemoteMcpIdentityEnv(identity.target, identity.identity);
|
|
1012
1103
|
if (!check.ok)
|
|
1013
1104
|
return failed(check.error);
|
|
1014
|
-
const missing =
|
|
1105
|
+
const missing = Object.values(check.drift)
|
|
1106
|
+
.flat()
|
|
1107
|
+
.map((c) => c.name);
|
|
1015
1108
|
if (missing.length > 0) {
|
|
1016
1109
|
return failed(`pulumi up left ${[...new Set(missing)].join(", ")} out of the services' env`);
|
|
1017
1110
|
}
|
|
@@ -1480,8 +1573,10 @@ async function stepDrainLegacyCaeloAdminUser(projectId, region) {
|
|
|
1480
1573
|
"--password",
|
|
1481
1574
|
pgPass,
|
|
1482
1575
|
]);
|
|
1483
|
-
// Resolve the SQL instance's
|
|
1484
|
-
// Pulumi outputs from inside the wizard).
|
|
1576
|
+
// Resolve the SQL instance's DNS name from gcloud (avoids reading
|
|
1577
|
+
// Pulumi outputs from inside the wizard). #1338: the job connects with
|
|
1578
|
+
// verify-full, and the shared-CA certificate names the DNS name, not the
|
|
1579
|
+
// private IP.
|
|
1485
1580
|
const sqlDescr = await gcloud([
|
|
1486
1581
|
"sql",
|
|
1487
1582
|
"instances",
|
|
@@ -1489,15 +1584,22 @@ async function stepDrainLegacyCaeloAdminUser(projectId, region) {
|
|
|
1489
1584
|
"caelo-production-pg-1d65811",
|
|
1490
1585
|
"--project",
|
|
1491
1586
|
projectId,
|
|
1492
|
-
"--format=
|
|
1587
|
+
"--format=json(dnsNames)",
|
|
1493
1588
|
]);
|
|
1494
|
-
|
|
1589
|
+
let pgHost = null;
|
|
1590
|
+
try {
|
|
1591
|
+
pgHost = cloudSqlPrivateDnsName(JSON.parse(sqlDescr.stdout || "{}").dnsNames);
|
|
1592
|
+
}
|
|
1593
|
+
catch {
|
|
1594
|
+
pgHost = null;
|
|
1595
|
+
}
|
|
1495
1596
|
if (!pgHost) {
|
|
1496
|
-
s.stop(yellow("Could not resolve Cloud SQL
|
|
1597
|
+
s.stop(yellow("Could not resolve the Cloud SQL instance's DNS name — skipping drain"));
|
|
1497
1598
|
return;
|
|
1498
1599
|
}
|
|
1499
|
-
const
|
|
1500
|
-
const
|
|
1600
|
+
const tls = verifyFullQuery(CLOUD_SQL_CA_BUNDLE);
|
|
1601
|
+
const adminPg = `postgres://postgres:${pgPass}@${pgHost}:5432/cms_admin?${tls}`;
|
|
1602
|
+
const publicPg = `postgres://postgres:${pgPass}@${pgHost}:5432/cms_public?${tls}`;
|
|
1501
1603
|
// The cleanup script — uses bun's globalThis.Bun.SQL (already proven
|
|
1502
1604
|
// pattern in hooks.server.ts + the migration runner). DO block makes
|
|
1503
1605
|
// it safe to re-run.
|