@xemahq/xema 0.18.0 → 0.18.2
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 +32 -4
- package/dist/assets/appliance-base/distribution.lock.json +418 -448
- package/dist/assets/appliance-base/images.lock.json +231 -253
- package/dist/assets/appliance-lean/distribution.lock.json +243 -302
- package/dist/assets/appliance-lean/images.lock.json +160 -182
- package/dist/assets/boot-graph.json +1 -4
- package/dist/assets/cloud/distribution.lock.json +424 -472
- package/dist/assets/cloud/images.lock.json +240 -262
- package/dist/assets/core/distribution.lock.json +174 -361
- package/dist/assets/core/images.lock.json +170 -236
- package/dist/assets/distribution-assets.manifest.json +33 -32
- package/dist/assets/minimal/distribution.lock.json +150 -286
- package/dist/assets/minimal/images.lock.json +143 -187
- package/dist/assets/oss/distribution.lock.json +418 -448
- package/dist/assets/oss/images.lock.json +232 -254
- package/dist/assets/starter/distribution.lock.json +267 -364
- package/dist/assets/starter/images.lock.json +176 -220
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/biome.d.ts +27 -0
- package/dist/commands/biome.d.ts.map +1 -1
- package/dist/commands/biome.js +8 -2
- package/dist/commands/biome.js.map +1 -1
- package/dist/commands/installation.d.ts.map +1 -1
- package/dist/commands/installation.js +112 -27
- package/dist/commands/installation.js.map +1 -1
- package/dist/commands/onboard.d.ts +3 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +110 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/dev/env-defaults.d.ts.map +1 -1
- package/dist/dev/env-defaults.js +0 -1
- package/dist/dev/env-defaults.js.map +1 -1
- package/dist/runtime/asset-provenance.d.ts +1 -1
- package/dist/runtime/asset-provenance.d.ts.map +1 -1
- package/dist/runtime/asset-provenance.js.map +1 -1
- package/dist/runtime/config/init-presets.d.ts.map +1 -1
- package/dist/runtime/config/init-presets.js +1 -12
- package/dist/runtime/config/init-presets.js.map +1 -1
- package/dist/runtime/config/schema.d.ts +0 -11
- package/dist/runtime/config/schema.d.ts.map +1 -1
- package/dist/runtime/config/schema.js +0 -2
- package/dist/runtime/config/schema.js.map +1 -1
- package/dist/runtime/env-seeder.d.ts.map +1 -1
- package/dist/runtime/env-seeder.js +0 -3
- package/dist/runtime/env-seeder.js.map +1 -1
- package/dist/runtime/infra/infra-catalog.d.ts.map +1 -1
- package/dist/runtime/infra/infra-catalog.js +0 -18
- package/dist/runtime/infra/infra-catalog.js.map +1 -1
- package/dist/runtime/infra/infra-environment.d.ts.map +1 -1
- package/dist/runtime/infra/infra-environment.js +0 -1
- package/dist/runtime/infra/infra-environment.js.map +1 -1
- package/dist/runtime/installation/compiler.d.ts +3 -4
- package/dist/runtime/installation/compiler.d.ts.map +1 -1
- package/dist/runtime/installation/compiler.js +10 -13
- package/dist/runtime/installation/compiler.js.map +1 -1
- package/dist/runtime/installation/contract.d.ts +4 -10
- package/dist/runtime/installation/contract.d.ts.map +1 -1
- package/dist/runtime/installation/contract.js +8 -11
- package/dist/runtime/installation/contract.js.map +1 -1
- package/dist/runtime/installation/current-launcher-renderer.d.ts.map +1 -1
- package/dist/runtime/installation/current-launcher-renderer.js +0 -5
- package/dist/runtime/installation/current-launcher-renderer.js.map +1 -1
- package/dist/runtime/installation/deployment-root.d.ts +53 -0
- package/dist/runtime/installation/deployment-root.d.ts.map +1 -0
- package/dist/runtime/installation/deployment-root.js +510 -0
- package/dist/runtime/installation/deployment-root.js.map +1 -0
- package/dist/runtime/installation/engine-verbs.d.ts +36 -0
- package/dist/runtime/installation/engine-verbs.d.ts.map +1 -0
- package/dist/runtime/installation/engine-verbs.js +164 -0
- package/dist/runtime/installation/engine-verbs.js.map +1 -0
- package/dist/runtime/installation/engine.d.ts +87 -0
- package/dist/runtime/installation/engine.d.ts.map +1 -0
- package/dist/runtime/installation/engine.js +218 -0
- package/dist/runtime/installation/engine.js.map +1 -0
- package/dist/runtime/installation/helm-release.d.ts.map +1 -1
- package/dist/runtime/installation/helm-release.js +0 -1
- package/dist/runtime/installation/helm-release.js.map +1 -1
- package/dist/runtime/installation/index.d.ts +3 -0
- package/dist/runtime/installation/index.d.ts.map +1 -1
- package/dist/runtime/installation/index.js +3 -0
- package/dist/runtime/installation/index.js.map +1 -1
- package/dist/runtime/installation/json-schema.d.ts +1 -1
- package/dist/runtime/installation/json-schema.d.ts.map +1 -1
- package/dist/runtime/installation/json-schema.js +1 -1
- package/dist/runtime/installation/json-schema.js.map +1 -1
- package/dist/runtime/installation/lifecycle.js.map +1 -1
- package/dist/runtime/installation/setup-profile.d.ts +7 -2
- package/dist/runtime/installation/setup-profile.d.ts.map +1 -1
- package/dist/runtime/installation/setup-profile.js +2 -1
- package/dist/runtime/installation/setup-profile.js.map +1 -1
- package/dist/runtime/installation/validators/operational.d.ts.map +1 -1
- package/dist/runtime/installation/validators/operational.js +0 -8
- package/dist/runtime/installation/validators/operational.js.map +1 -1
- package/dist/runtime/onboard/plan.d.ts +52 -0
- package/dist/runtime/onboard/plan.d.ts.map +1 -0
- package/dist/runtime/onboard/plan.js +210 -0
- package/dist/runtime/onboard/plan.js.map +1 -0
- package/dist/runtime/sources/kinds/git.d.ts +4 -0
- package/dist/runtime/sources/kinds/git.d.ts.map +1 -1
- package/dist/runtime/sources/kinds/git.js +19 -12
- package/dist/runtime/sources/kinds/git.js.map +1 -1
- package/examples/02-local-container-full.yaml +0 -1
- package/examples/03-byo-infra.yaml +0 -1
- package/examples/04-subset-knowledge.yaml +0 -1
- package/package.json +14 -13
- package/xema.config.example.yaml +0 -1
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeploymentRootProjectionError = exports.DEPLOYMENT_ENGINE_TARGETS = exports.DeploymentRootFile = exports.DEPLOYMENT_ROOT_RENDERER_ID = void 0;
|
|
4
|
+
exports.isDeploymentEngineTarget = isDeploymentEngineTarget;
|
|
5
|
+
exports.renderDeploymentRootHandFiles = renderDeploymentRootHandFiles;
|
|
6
|
+
exports.resolveDeploymentRootDir = resolveDeploymentRootDir;
|
|
7
|
+
exports.resolveDeploymentTargetBinding = resolveDeploymentTargetBinding;
|
|
8
|
+
exports.projectInstallationToDeploymentRoot = projectInstallationToDeploymentRoot;
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_os_1 = require("node:os");
|
|
11
|
+
const node_path_1 = require("node:path");
|
|
12
|
+
const yaml_1 = require("yaml");
|
|
13
|
+
const compiler_1 = require("./compiler");
|
|
14
|
+
const contract_1 = require("./contract");
|
|
15
|
+
const diff_1 = require("./diff");
|
|
16
|
+
const serialization_1 = require("./serialization");
|
|
17
|
+
const schema_1 = require("../config/schema");
|
|
18
|
+
const infra_catalog_1 = require("../infra/infra-catalog");
|
|
19
|
+
const paths_1 = require("../paths");
|
|
20
|
+
const helm_cli_1 = require("../runner/helm-cli");
|
|
21
|
+
exports.DEPLOYMENT_ROOT_RENDERER_ID = 'xema-cli-deployment-root/v1';
|
|
22
|
+
var DeploymentRootFile;
|
|
23
|
+
(function (DeploymentRootFile) {
|
|
24
|
+
DeploymentRootFile["Deployment"] = "deployment.yaml";
|
|
25
|
+
DeploymentRootFile["Infra"] = "infra.yaml";
|
|
26
|
+
DeploymentRootFile["SecretInputs"] = "secret-inputs.yaml";
|
|
27
|
+
DeploymentRootFile["Values"] = "values.yaml";
|
|
28
|
+
DeploymentRootFile["DistributionLock"] = "distribution.lock.json";
|
|
29
|
+
DeploymentRootFile["ImagesLock"] = "images.lock.json";
|
|
30
|
+
})(DeploymentRootFile || (exports.DeploymentRootFile = DeploymentRootFile = {}));
|
|
31
|
+
exports.DEPLOYMENT_ENGINE_TARGETS = new Set([
|
|
32
|
+
contract_1.InstallationTargetKind.SingleNodeKubernetes,
|
|
33
|
+
contract_1.InstallationTargetKind.CustomerKubernetes,
|
|
34
|
+
]);
|
|
35
|
+
function isDeploymentEngineTarget(installation) {
|
|
36
|
+
return exports.DEPLOYMENT_ENGINE_TARGETS.has(installation.spec.target.kind);
|
|
37
|
+
}
|
|
38
|
+
class DeploymentRootProjectionError extends Error {
|
|
39
|
+
constructor(message) {
|
|
40
|
+
super(message);
|
|
41
|
+
this.name = 'DeploymentRootProjectionError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.DeploymentRootProjectionError = DeploymentRootProjectionError;
|
|
45
|
+
var DeploymentScale;
|
|
46
|
+
(function (DeploymentScale) {
|
|
47
|
+
DeploymentScale["Dev"] = "dev";
|
|
48
|
+
DeploymentScale["Staging"] = "staging";
|
|
49
|
+
DeploymentScale["Prod"] = "prod";
|
|
50
|
+
})(DeploymentScale || (DeploymentScale = {}));
|
|
51
|
+
var DeploymentTopology;
|
|
52
|
+
(function (DeploymentTopology) {
|
|
53
|
+
DeploymentTopology["SingleNode"] = "single-node";
|
|
54
|
+
DeploymentTopology["MultiNode"] = "multi-node";
|
|
55
|
+
})(DeploymentTopology || (DeploymentTopology = {}));
|
|
56
|
+
var DeploymentOperator;
|
|
57
|
+
(function (DeploymentOperator) {
|
|
58
|
+
DeploymentOperator["Xema"] = "xema";
|
|
59
|
+
DeploymentOperator["Customer"] = "customer";
|
|
60
|
+
})(DeploymentOperator || (DeploymentOperator = {}));
|
|
61
|
+
var ReadWriteMany;
|
|
62
|
+
(function (ReadWriteMany) {
|
|
63
|
+
ReadWriteMany["Available"] = "available";
|
|
64
|
+
ReadWriteMany["Unavailable"] = "unavailable";
|
|
65
|
+
})(ReadWriteMany || (ReadWriteMany = {}));
|
|
66
|
+
var InfraProvider;
|
|
67
|
+
(function (InfraProvider) {
|
|
68
|
+
InfraProvider["SelfHosted"] = "self-hosted";
|
|
69
|
+
InfraProvider["External"] = "external";
|
|
70
|
+
InfraProvider["Disabled"] = "disabled";
|
|
71
|
+
})(InfraProvider || (InfraProvider = {}));
|
|
72
|
+
const INFRA_KEY = {
|
|
73
|
+
[schema_1.InfraComponent.Postgres]: 'postgres',
|
|
74
|
+
[schema_1.InfraComponent.Redis]: 'redis',
|
|
75
|
+
[schema_1.InfraComponent.Etcd]: 'etcd',
|
|
76
|
+
[schema_1.InfraComponent.Keycloak]: 'keycloak',
|
|
77
|
+
[schema_1.InfraComponent.ObjectStore]: 'minio',
|
|
78
|
+
[schema_1.InfraComponent.Fga]: 'openfga',
|
|
79
|
+
[schema_1.InfraComponent.Git]: 'git',
|
|
80
|
+
[schema_1.InfraComponent.Temporal]: 'temporal',
|
|
81
|
+
};
|
|
82
|
+
const NEVER_DISABLED = new Set([
|
|
83
|
+
schema_1.InfraComponent.Postgres,
|
|
84
|
+
schema_1.InfraComponent.Redis,
|
|
85
|
+
schema_1.InfraComponent.Etcd,
|
|
86
|
+
schema_1.InfraComponent.Keycloak,
|
|
87
|
+
schema_1.InfraComponent.ObjectStore,
|
|
88
|
+
]);
|
|
89
|
+
const PRIVATE_DIRECTORY_MODE = 0o700;
|
|
90
|
+
const CLOUD_OWN_INFRA = 'own-infra';
|
|
91
|
+
const EXPOSURE_DECLARED = 'declared';
|
|
92
|
+
const DEPLOYMENT_NAME = /^[a-z][a-z0-9-]{1,62}[a-z0-9]$/;
|
|
93
|
+
const IN_CLUSTER_ETCD_PORT = 2379;
|
|
94
|
+
const GENERATED_HEADER = '# Projected by `xema installation` from the XemaInstallation named below.\n' +
|
|
95
|
+
'# Edit the installation file and re-run the verb; edits here are overwritten.\n';
|
|
96
|
+
function renderDeploymentRootHandFiles(installation, opts = {}) {
|
|
97
|
+
assertProjectable(installation);
|
|
98
|
+
const namespace = releaseNamespace(installation);
|
|
99
|
+
return [
|
|
100
|
+
{
|
|
101
|
+
path: DeploymentRootFile.Deployment,
|
|
102
|
+
content: yamlDocument(installation, deploymentDocument(installation, namespace, opts.kubeconfigRef)),
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
path: DeploymentRootFile.Infra,
|
|
106
|
+
content: yamlDocument(installation, infraDocument(installation)),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
path: DeploymentRootFile.SecretInputs,
|
|
110
|
+
content: yamlDocument(installation, secretInputsDocument(installation)),
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
path: DeploymentRootFile.Values,
|
|
114
|
+
content: yamlDocument(installation, valuesDocument(installation, namespace)),
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
function assertProjectable(installation) {
|
|
119
|
+
const spec = installation.spec;
|
|
120
|
+
if (!exports.DEPLOYMENT_ENGINE_TARGETS.has(spec.target.kind)) {
|
|
121
|
+
throw new DeploymentRootProjectionError(`Target ${spec.target.kind} is not served by the deployment engine; it serves ${[...exports.DEPLOYMENT_ENGINE_TARGETS].join(' and ')}.`);
|
|
122
|
+
}
|
|
123
|
+
if (spec.distribution.kind !== contract_1.DistributionReferenceKind.Edition) {
|
|
124
|
+
throw new DeploymentRootProjectionError('A lock-kind distribution reference is resolved by the distribution resolver, not by this CLI; reference an edition.');
|
|
125
|
+
}
|
|
126
|
+
if (spec.target.context === undefined) {
|
|
127
|
+
throw new DeploymentRootProjectionError('A Kubernetes target requires spec.target.context — the kubectl context the deployment engine asserts before applying.');
|
|
128
|
+
}
|
|
129
|
+
if (!DEPLOYMENT_NAME.test(installation.metadata.name)) {
|
|
130
|
+
throw new DeploymentRootProjectionError(`Installation name "${installation.metadata.name}" cannot name a deployment; use lowercase letters, digits and dashes (3–64 characters, starting with a letter).`);
|
|
131
|
+
}
|
|
132
|
+
assertDeploymentRootCarries(installation);
|
|
133
|
+
}
|
|
134
|
+
function assertDeploymentRootCarries(installation) {
|
|
135
|
+
const spec = installation.spec;
|
|
136
|
+
const defaults = (0, compiler_1.installationProfileDefaults)(spec.profile);
|
|
137
|
+
const refuse = (detail) => {
|
|
138
|
+
throw new DeploymentRootProjectionError(`The deployment root cannot carry ${detail}; it is neither projected nor applied, so it is refused rather than dropped.`);
|
|
139
|
+
};
|
|
140
|
+
if (spec.tenancy.mode !== defaults.tenancyMode ||
|
|
141
|
+
spec.tenancy.isolation !== defaults.isolation) {
|
|
142
|
+
refuse(`a tenancy posture other than the ${spec.profile} profile's`);
|
|
143
|
+
}
|
|
144
|
+
if (spec.security.networkPolicy !== defaults.networkPolicy ||
|
|
145
|
+
spec.security.secretsBackend !== defaults.secretsBackend ||
|
|
146
|
+
spec.security.encryption !== defaults.encryption) {
|
|
147
|
+
refuse(`a security posture other than the ${spec.profile} profile's`);
|
|
148
|
+
}
|
|
149
|
+
if (spec.security.residency !== undefined) {
|
|
150
|
+
refuse('a data-residency claim (nothing here can place or prove one)');
|
|
151
|
+
}
|
|
152
|
+
if (spec.recovery.mode !== defaults.backupMode ||
|
|
153
|
+
spec.recovery.retentionDays !== defaults.backupRetentionDays ||
|
|
154
|
+
spec.recovery.rpoMinutes !== defaults.rpoMinutes ||
|
|
155
|
+
spec.recovery.rtoMinutes !== defaults.rtoMinutes ||
|
|
156
|
+
spec.recovery.restoreDrillIntervalDays !==
|
|
157
|
+
defaults.restoreDrillIntervalDays ||
|
|
158
|
+
spec.recovery.destinationSecretRef !== undefined) {
|
|
159
|
+
refuse(`a recovery policy other than the ${spec.profile} profile's`);
|
|
160
|
+
}
|
|
161
|
+
if (spec.observability.level !== defaults.observability ||
|
|
162
|
+
spec.observability.metrics !== defaults.metrics ||
|
|
163
|
+
spec.observability.tracing !== defaults.tracing ||
|
|
164
|
+
spec.observability.auditLog !== defaults.auditLog ||
|
|
165
|
+
spec.observability.retentionDays !== defaults.observabilityRetentionDays ||
|
|
166
|
+
spec.observability.exportSecretRef !== undefined) {
|
|
167
|
+
refuse(`an observability policy other than the ${spec.profile} profile's`);
|
|
168
|
+
}
|
|
169
|
+
if (spec.capacity.minReplicas !== defaults.minReplicas ||
|
|
170
|
+
spec.capacity.maxReplicas !== defaults.maxReplicas ||
|
|
171
|
+
spec.capacity.maxOrganizations !== defaults.maxOrganizations ||
|
|
172
|
+
spec.capacity.maxConcurrentSessions !== defaults.maxConcurrentSessions ||
|
|
173
|
+
spec.capacity.zones !== defaults.zones) {
|
|
174
|
+
refuse(`a capacity envelope other than the ${spec.profile} profile's`);
|
|
175
|
+
}
|
|
176
|
+
if (spec.target.zones.length !== 0) {
|
|
177
|
+
refuse('a zone list (the engine places nothing)');
|
|
178
|
+
}
|
|
179
|
+
if (spec.features.selection !== contract_1.FeatureSelectionMode.Default ||
|
|
180
|
+
spec.features.include.length !== 0 ||
|
|
181
|
+
spec.features.exclude.length !== 0 ||
|
|
182
|
+
spec.features.enabled.length !== 0 ||
|
|
183
|
+
spec.features.web) {
|
|
184
|
+
refuse('a feature selection (the engine deploys the edition roster as locked)');
|
|
185
|
+
}
|
|
186
|
+
if (spec.sources.length !== 0) {
|
|
187
|
+
refuse('a biome source binding (sources are the local launcher\'s)');
|
|
188
|
+
}
|
|
189
|
+
if (spec.storage.workspaceRoot !== undefined ||
|
|
190
|
+
spec.storage.materializationRoot !== undefined ||
|
|
191
|
+
spec.storage.externalBinding !== undefined) {
|
|
192
|
+
refuse('a workspace, materialization or external storage path');
|
|
193
|
+
}
|
|
194
|
+
for (const domain of spec.domains) {
|
|
195
|
+
if (domain.tls.mode !== contract_1.TlsMode.Managed) {
|
|
196
|
+
refuse(`${domain.tls.mode} TLS on ${domain.hostname} (the engine's ingress plane issues certificates)`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
for (const secret of spec.secrets) {
|
|
200
|
+
if (secret.provider === contract_1.SecretReferenceProvider.ExternalSecrets ||
|
|
201
|
+
secret.provider === contract_1.SecretReferenceProvider.ExternalVault) {
|
|
202
|
+
refuse(`the ${secret.provider} secret binding "${secret.name}" (the engine reads Kubernetes Secrets; sync it into one and declare a kubernetes binding)`);
|
|
203
|
+
}
|
|
204
|
+
if (secret.provider !== contract_1.SecretReferenceProvider.Kubernetes) {
|
|
205
|
+
refuse(`the ${secret.provider} secret binding "${secret.name}" (a local custody provider on a Kubernetes target)`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function releaseNamespace(installation) {
|
|
210
|
+
return installation.spec.operator.namespace ?? helm_cli_1.DEFAULT_HELM_NAMESPACE;
|
|
211
|
+
}
|
|
212
|
+
function deploymentDocument(installation, namespace, kubeconfigRef) {
|
|
213
|
+
const spec = installation.spec;
|
|
214
|
+
const edition = editionOf(installation);
|
|
215
|
+
return {
|
|
216
|
+
name: installation.metadata.name,
|
|
217
|
+
cloud: CLOUD_OWN_INFRA,
|
|
218
|
+
k8sContext: spec.target.context,
|
|
219
|
+
namespace,
|
|
220
|
+
region: spec.target.region,
|
|
221
|
+
scale: scaleFor(spec.lifecycle.environment),
|
|
222
|
+
topology: topologyFor(spec.target.kind),
|
|
223
|
+
storage: { readWriteMany: readWriteManyFor(spec) },
|
|
224
|
+
distribution: { id: edition },
|
|
225
|
+
operator: operatorFor(spec.operator.kind),
|
|
226
|
+
domains: domainsDocument(spec, namespace),
|
|
227
|
+
...(kubeconfigRef === undefined ? {} : { kubeconfigRef }),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
const PUBLIC_HOST_SERVICE = {
|
|
231
|
+
[contract_1.DomainPurpose.Web]: 'xema-host-web',
|
|
232
|
+
[contract_1.DomainPurpose.Api]: 'public-gateway-api',
|
|
233
|
+
};
|
|
234
|
+
function domainsDocument(spec, namespace) {
|
|
235
|
+
const internal = `${namespace}.svc.cluster.local`;
|
|
236
|
+
const named = spec.domains.filter((domain) => PUBLIC_HOST_SERVICE[domain.purpose] !== undefined);
|
|
237
|
+
if (named.length === 0) {
|
|
238
|
+
return { internal };
|
|
239
|
+
}
|
|
240
|
+
const apexes = new Set(named.map((domain) => apexOf(domain.hostname)));
|
|
241
|
+
if (apexes.size !== 1) {
|
|
242
|
+
throw new DeploymentRootProjectionError(`The deployment root carries ONE public apex; the declared public hostnames span ${[...apexes].join(' and ')}.`);
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
public: [...apexes][0],
|
|
246
|
+
internal,
|
|
247
|
+
suffix: '',
|
|
248
|
+
exposure: { mode: EXPOSURE_DECLARED },
|
|
249
|
+
hostExceptions: named
|
|
250
|
+
.map((domain) => PUBLIC_HOST_SERVICE[domain.purpose])
|
|
251
|
+
.sort(),
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
function apexOf(hostname) {
|
|
255
|
+
const cut = hostname.indexOf('.');
|
|
256
|
+
if (cut <= 0 || cut === hostname.length - 1) {
|
|
257
|
+
throw new DeploymentRootProjectionError(`Public hostname "${hostname}" has no parent domain; a public host is <name>.<apex>.`);
|
|
258
|
+
}
|
|
259
|
+
return hostname.slice(cut + 1);
|
|
260
|
+
}
|
|
261
|
+
function editionOf(installation) {
|
|
262
|
+
const distribution = installation.spec.distribution;
|
|
263
|
+
return distribution.kind === contract_1.DistributionReferenceKind.Edition
|
|
264
|
+
? distribution.edition
|
|
265
|
+
: '';
|
|
266
|
+
}
|
|
267
|
+
function scaleFor(environment) {
|
|
268
|
+
switch (environment) {
|
|
269
|
+
case contract_1.LifecycleEnvironment.Development:
|
|
270
|
+
return DeploymentScale.Dev;
|
|
271
|
+
case contract_1.LifecycleEnvironment.Staging:
|
|
272
|
+
return DeploymentScale.Staging;
|
|
273
|
+
case contract_1.LifecycleEnvironment.Production:
|
|
274
|
+
return DeploymentScale.Prod;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function topologyFor(target) {
|
|
278
|
+
return target === contract_1.InstallationTargetKind.SingleNodeKubernetes
|
|
279
|
+
? DeploymentTopology.SingleNode
|
|
280
|
+
: DeploymentTopology.MultiNode;
|
|
281
|
+
}
|
|
282
|
+
function readWriteManyFor(spec) {
|
|
283
|
+
return spec.target.kind === contract_1.InstallationTargetKind.CustomerKubernetes &&
|
|
284
|
+
spec.storage.class === contract_1.StorageClass.External
|
|
285
|
+
? ReadWriteMany.Available
|
|
286
|
+
: ReadWriteMany.Unavailable;
|
|
287
|
+
}
|
|
288
|
+
function operatorFor(kind) {
|
|
289
|
+
switch (kind) {
|
|
290
|
+
case contract_1.InstallationOperatorKind.Platform:
|
|
291
|
+
return DeploymentOperator.Xema;
|
|
292
|
+
case contract_1.InstallationOperatorKind.Organization:
|
|
293
|
+
case contract_1.InstallationOperatorKind.Developer:
|
|
294
|
+
return DeploymentOperator.Customer;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
function providerFor(component, ownership) {
|
|
298
|
+
switch (ownership) {
|
|
299
|
+
case schema_1.InfraMode.Managed:
|
|
300
|
+
return InfraProvider.SelfHosted;
|
|
301
|
+
case schema_1.InfraMode.External:
|
|
302
|
+
return InfraProvider.External;
|
|
303
|
+
case schema_1.InfraMode.Disabled:
|
|
304
|
+
if (NEVER_DISABLED.has(component)) {
|
|
305
|
+
throw new DeploymentRootProjectionError(`Infrastructure ${component} cannot be disabled on a Kubernetes target; the engine admits only self-hosted or external for it.`);
|
|
306
|
+
}
|
|
307
|
+
return InfraProvider.Disabled;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
function infraDocument(installation) {
|
|
311
|
+
const document = {};
|
|
312
|
+
for (const binding of installation.spec.infrastructure) {
|
|
313
|
+
const provider = providerFor(binding.component, binding.ownership);
|
|
314
|
+
const plan = { provider };
|
|
315
|
+
if (provider !== InfraProvider.Disabled) {
|
|
316
|
+
if (binding.component === schema_1.InfraComponent.Keycloak) {
|
|
317
|
+
plan.realm = binding.realm ?? infra_catalog_1.DEFAULT_KEYCLOAK_REALM;
|
|
318
|
+
}
|
|
319
|
+
if (binding.component === schema_1.InfraComponent.ObjectStore &&
|
|
320
|
+
binding.bucketPrefix !== undefined) {
|
|
321
|
+
plan.bucket = binding.bucketPrefix;
|
|
322
|
+
}
|
|
323
|
+
if (binding.component === schema_1.InfraComponent.Temporal) {
|
|
324
|
+
plan.namespace = infra_catalog_1.TEMPORAL_NAMESPACE;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
document[INFRA_KEY[binding.component]] = plan;
|
|
328
|
+
}
|
|
329
|
+
return document;
|
|
330
|
+
}
|
|
331
|
+
function secretInputsDocument(installation) {
|
|
332
|
+
const document = {};
|
|
333
|
+
const put = (section, key, value) => {
|
|
334
|
+
document[section] = { ...(document[section] ?? {}), [key]: value };
|
|
335
|
+
};
|
|
336
|
+
const identityDomain = installation.spec.domains.find((domain) => domain.purpose === contract_1.DomainPurpose.Identity);
|
|
337
|
+
for (const binding of installation.spec.infrastructure) {
|
|
338
|
+
if (binding.component === schema_1.InfraComponent.Keycloak) {
|
|
339
|
+
const realm = binding.realm ?? infra_catalog_1.DEFAULT_KEYCLOAK_REALM;
|
|
340
|
+
const base = binding.ownership === schema_1.InfraMode.External
|
|
341
|
+
? binding.endpoint
|
|
342
|
+
: identityDomain === undefined
|
|
343
|
+
? undefined
|
|
344
|
+
: `https://${identityDomain.hostname}`;
|
|
345
|
+
if (base !== undefined) {
|
|
346
|
+
put('keycloak', 'issuer', `${trimTrailingSlash(base)}/realms/${realm}`);
|
|
347
|
+
}
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
350
|
+
if (binding.ownership !== schema_1.InfraMode.External || binding.endpoint === undefined) {
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
const endpoint = new URL(binding.endpoint);
|
|
354
|
+
switch (binding.component) {
|
|
355
|
+
case schema_1.InfraComponent.Postgres:
|
|
356
|
+
put('postgres', 'directHost', endpoint.hostname);
|
|
357
|
+
put('postgres', 'directPort', portOf(endpoint, 5432));
|
|
358
|
+
break;
|
|
359
|
+
case schema_1.InfraComponent.Redis:
|
|
360
|
+
put('redis', 'host', endpoint.hostname);
|
|
361
|
+
put('redis', 'port', portOf(endpoint, 6379));
|
|
362
|
+
break;
|
|
363
|
+
case schema_1.InfraComponent.Temporal:
|
|
364
|
+
put('temporal', 'address', `${endpoint.hostname}:${portOf(endpoint, 7233)}`);
|
|
365
|
+
break;
|
|
366
|
+
case schema_1.InfraComponent.ObjectStore: {
|
|
367
|
+
const secure = endpoint.protocol === 'https:';
|
|
368
|
+
put('objectStore', 'host', endpoint.hostname);
|
|
369
|
+
put('objectStore', 'port', portOf(endpoint, secure ? 443 : 9000));
|
|
370
|
+
put('objectStore', 'useSsl', String(secure));
|
|
371
|
+
put('objectStore', 'endpoint', trimTrailingSlash(binding.endpoint));
|
|
372
|
+
put('objectStore', 'publicEndpoint', trimTrailingSlash(binding.endpoint));
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
case schema_1.InfraComponent.Etcd:
|
|
376
|
+
case schema_1.InfraComponent.Fga:
|
|
377
|
+
case schema_1.InfraComponent.Git:
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return document;
|
|
382
|
+
}
|
|
383
|
+
function valuesDocument(installation, namespace) {
|
|
384
|
+
const etcd = installation.spec.infrastructure.find((binding) => binding.component === schema_1.InfraComponent.Etcd);
|
|
385
|
+
const etcdEndpoints = etcd?.ownership === schema_1.InfraMode.External && etcd.endpoint !== undefined
|
|
386
|
+
? trimTrailingSlash(etcd.endpoint)
|
|
387
|
+
: `http://etcd.${namespace}.svc.cluster.local:${String(IN_CLUSTER_ETCD_PORT)}`;
|
|
388
|
+
return {
|
|
389
|
+
platform: {
|
|
390
|
+
topology: {
|
|
391
|
+
platformNamespace: namespace,
|
|
392
|
+
sharedServicesNamespace: namespace,
|
|
393
|
+
infraNamespace: namespace,
|
|
394
|
+
},
|
|
395
|
+
etcdEndpoints,
|
|
396
|
+
},
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
function portOf(endpoint, fallback) {
|
|
400
|
+
return endpoint.port.length > 0 ? endpoint.port : String(fallback);
|
|
401
|
+
}
|
|
402
|
+
function trimTrailingSlash(value) {
|
|
403
|
+
return value.endsWith('/') ? value.slice(0, -1) : value;
|
|
404
|
+
}
|
|
405
|
+
function yamlDocument(installation, document) {
|
|
406
|
+
return `${GENERATED_HEADER}# installation: ${installation.metadata.name}\n${(0, yaml_1.stringify)(document)}`;
|
|
407
|
+
}
|
|
408
|
+
function resolveDeploymentRootDir(installation, opts = {}) {
|
|
409
|
+
if (opts.installationPath !== undefined) {
|
|
410
|
+
const directory = (0, node_path_1.dirname)((0, node_path_1.resolve)(opts.installationPath));
|
|
411
|
+
if ((0, node_fs_1.existsSync)((0, node_path_1.join)(directory, DeploymentRootFile.Deployment))) {
|
|
412
|
+
return directory;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return (0, node_path_1.join)(opts.homeDir ?? (0, node_os_1.homedir)(), '.xema', 'installations', installation.metadata.name, 'deployment');
|
|
416
|
+
}
|
|
417
|
+
function resolveDeploymentTargetBinding(installation, opts = {}) {
|
|
418
|
+
assertProjectable(installation);
|
|
419
|
+
const context = installation.spec.target.context;
|
|
420
|
+
const declared = installation.spec.target.kubeconfig;
|
|
421
|
+
const env = opts.env ?? process.env;
|
|
422
|
+
const kubeconfig = opts.kubeconfigOverride !== undefined
|
|
423
|
+
? (0, node_path_1.resolve)(opts.kubeconfigOverride)
|
|
424
|
+
: declared !== undefined
|
|
425
|
+
? resolveDeclaredKubeconfig(declared, opts.installationPath)
|
|
426
|
+
: env.KUBECONFIG !== undefined && env.KUBECONFIG.length > 0
|
|
427
|
+
? (0, node_path_1.resolve)(env.KUBECONFIG)
|
|
428
|
+
: undefined;
|
|
429
|
+
return { context, ...(kubeconfig === undefined ? {} : { kubeconfig }) };
|
|
430
|
+
}
|
|
431
|
+
function resolveDeclaredKubeconfig(declared, installationPath) {
|
|
432
|
+
if ((0, node_path_1.isAbsolute)(declared)) {
|
|
433
|
+
return declared;
|
|
434
|
+
}
|
|
435
|
+
if (installationPath === undefined) {
|
|
436
|
+
throw new DeploymentRootProjectionError(`spec.target.kubeconfig is relative (${declared}) but the installation was not read from a file; declare an absolute path or pass --kubeconfig.`);
|
|
437
|
+
}
|
|
438
|
+
return (0, node_path_1.resolve)((0, node_path_1.dirname)((0, node_path_1.resolve)(installationPath)), declared);
|
|
439
|
+
}
|
|
440
|
+
function projectInstallationToDeploymentRoot(installation, opts = {}) {
|
|
441
|
+
assertProjectable(installation);
|
|
442
|
+
const dir = opts.dir === undefined
|
|
443
|
+
? resolveDeploymentRootDir(installation, opts)
|
|
444
|
+
: (0, node_path_1.resolve)(opts.dir);
|
|
445
|
+
const kubeconfigRef = kubeconfigRefFor(installation, dir, opts);
|
|
446
|
+
const handFiles = renderDeploymentRootHandFiles(installation, kubeconfigRef === undefined ? {} : { kubeconfigRef });
|
|
447
|
+
const locks = opts.lockPaths ?? editionLockPaths(installation);
|
|
448
|
+
const files = [
|
|
449
|
+
...handFiles,
|
|
450
|
+
{
|
|
451
|
+
path: DeploymentRootFile.DistributionLock,
|
|
452
|
+
content: (0, node_fs_1.readFileSync)(locks.distributionLock, 'utf8'),
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
path: DeploymentRootFile.ImagesLock,
|
|
456
|
+
content: (0, node_fs_1.readFileSync)(locks.imagesLock, 'utf8'),
|
|
457
|
+
},
|
|
458
|
+
];
|
|
459
|
+
(0, node_fs_1.mkdirSync)(dir, { recursive: true, mode: PRIVATE_DIRECTORY_MODE });
|
|
460
|
+
for (const file of files) {
|
|
461
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, file.path), file.content, 'utf8');
|
|
462
|
+
}
|
|
463
|
+
return {
|
|
464
|
+
dir,
|
|
465
|
+
files,
|
|
466
|
+
renderedArtifacts: renderAcknowledgements(installation, files),
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
function kubeconfigRefFor(installation, dir, opts) {
|
|
470
|
+
const declared = installation.spec.target.kubeconfig;
|
|
471
|
+
if (declared === undefined) {
|
|
472
|
+
return undefined;
|
|
473
|
+
}
|
|
474
|
+
return (0, node_path_1.relative)(dir, resolveDeclaredKubeconfig(declared, opts.installationPath));
|
|
475
|
+
}
|
|
476
|
+
function editionLockPaths(installation) {
|
|
477
|
+
const edition = editionOf(installation);
|
|
478
|
+
return {
|
|
479
|
+
distributionLock: (0, paths_1.resolveDistributionLockPath)({ edition }).path,
|
|
480
|
+
imagesLock: (0, paths_1.resolveImageLockPath)({ edition }).path,
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
const OBLIGATION_FILES = {
|
|
484
|
+
[diff_1.InstallationRenderObligation.RuntimeReconfigure]: [
|
|
485
|
+
DeploymentRootFile.Values,
|
|
486
|
+
DeploymentRootFile.SecretInputs,
|
|
487
|
+
],
|
|
488
|
+
[diff_1.InstallationRenderObligation.WorkloadRollout]: [
|
|
489
|
+
DeploymentRootFile.DistributionLock,
|
|
490
|
+
DeploymentRootFile.ImagesLock,
|
|
491
|
+
],
|
|
492
|
+
[diff_1.InstallationRenderObligation.InfrastructureReconcile]: [
|
|
493
|
+
DeploymentRootFile.Deployment,
|
|
494
|
+
DeploymentRootFile.Infra,
|
|
495
|
+
],
|
|
496
|
+
[diff_1.InstallationRenderObligation.DataAndRecoveryReconcile]: [
|
|
497
|
+
DeploymentRootFile.Deployment,
|
|
498
|
+
DeploymentRootFile.Infra,
|
|
499
|
+
],
|
|
500
|
+
};
|
|
501
|
+
function renderAcknowledgements(installation, files) {
|
|
502
|
+
const byPath = new Map(files.map((file) => [file.path, file.content]));
|
|
503
|
+
return Object.entries(OBLIGATION_FILES).map(([obligation, paths]) => ({
|
|
504
|
+
obligation,
|
|
505
|
+
rendererId: exports.DEPLOYMENT_ROOT_RENDERER_ID,
|
|
506
|
+
effectivePlanHash: installation.effectivePlanHash,
|
|
507
|
+
artifactDigest: `sha256:${(0, serialization_1.hashInstallation)(paths.map((path) => ({ path, content: byPath.get(path) })))}`,
|
|
508
|
+
}));
|
|
509
|
+
}
|
|
510
|
+
//# sourceMappingURL=deployment-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-root.js","sourceRoot":"","sources":["../../../src/runtime/installation/deployment-root.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type ProjectDeploymentRootOptions, type ProjectedDeploymentRoot } from './deployment-root';
|
|
2
|
+
import { DeploymentEngineOutcome, DeploymentEngineVerb, type DeploymentEngineDocument } from './engine';
|
|
3
|
+
import { planInstallation } from './lifecycle';
|
|
4
|
+
import { type InstallationReadinessProof } from './readiness-proof';
|
|
5
|
+
import type { CompiledXemaInstallation } from './compiler';
|
|
6
|
+
import type { InstallationStateStore } from './state-store';
|
|
7
|
+
export interface EngineVerbOptions {
|
|
8
|
+
readonly desired: CompiledXemaInstallation;
|
|
9
|
+
readonly installationPath?: string;
|
|
10
|
+
readonly kubeconfig?: string;
|
|
11
|
+
readonly dir?: string;
|
|
12
|
+
readonly lockPaths?: ProjectDeploymentRootOptions['lockPaths'];
|
|
13
|
+
readonly homeDir?: string;
|
|
14
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
15
|
+
readonly log?: (line: string) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface EngineVerbResult {
|
|
18
|
+
readonly root: ProjectedDeploymentRoot;
|
|
19
|
+
readonly outcome: DeploymentEngineOutcome;
|
|
20
|
+
}
|
|
21
|
+
export declare class DeploymentEngineRefusedError extends Error {
|
|
22
|
+
constructor(verb: DeploymentEngineVerb);
|
|
23
|
+
}
|
|
24
|
+
export declare function validateWithEngine(opts: EngineVerbOptions): Promise<EngineVerbResult>;
|
|
25
|
+
export declare function planWithEngine(opts: EngineVerbOptions): Promise<EngineVerbResult>;
|
|
26
|
+
export interface EngineApplyOptions extends EngineVerbOptions {
|
|
27
|
+
readonly store: InstallationStateStore;
|
|
28
|
+
readonly allowDestructive?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function applyWithEngine(opts: EngineApplyOptions): Promise<EngineVerbResult & {
|
|
31
|
+
readonly executed: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
export declare function verifyWithEngine(opts: EngineVerbOptions): Promise<EngineVerbResult>;
|
|
34
|
+
export declare function localPlan(desired: CompiledXemaInstallation, store: InstallationStateStore): ReturnType<typeof planInstallation>;
|
|
35
|
+
export declare function engineReadinessProof(desired: CompiledXemaInstallation, document: DeploymentEngineDocument): InstallationReadinessProof;
|
|
36
|
+
//# sourceMappingURL=engine-verbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-verbs.d.ts","sourceRoot":"","sources":["../../../src/runtime/installation/engine-verbs.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,uBAAuB,EAEvB,oBAAoB,EAEpB,KAAK,wBAAwB,EAE9B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAqB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAY5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAE3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,SAAS,CAAC,EAAE,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAEjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;CAC3C;AAGD,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,IAAI,EAAE,oBAAoB;CAMvC;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAuC5D;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAa3B;AAGD,wBAAgB,SAAS,CACvB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,sBAAsB,GAC5B,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAErC;AASD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,wBAAwB,GACjC,0BAA0B,CAiC5B"}
|