typekro 0.14.0 → 0.15.1
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/.tsbuildinfo +1 -1
- package/dist/alchemy/deployers.d.ts +2 -2
- package/dist/alchemy/deployers.d.ts.map +1 -1
- package/dist/alchemy/deployers.js +12 -5
- package/dist/alchemy/deployers.js.map +1 -1
- package/dist/alchemy/index.d.ts +4 -2
- package/dist/alchemy/index.d.ts.map +1 -1
- package/dist/alchemy/index.js +4 -3
- package/dist/alchemy/index.js.map +1 -1
- package/dist/alchemy/resource-registration.d.ts +81 -19
- package/dist/alchemy/resource-registration.d.ts.map +1 -1
- package/dist/alchemy/resource-registration.js +296 -147
- package/dist/alchemy/resource-registration.js.map +1 -1
- package/dist/alchemy/types.d.ts +76 -8
- package/dist/alchemy/types.d.ts.map +1 -1
- package/dist/alchemy/wrapper.d.ts +0 -9
- package/dist/alchemy/wrapper.d.ts.map +1 -1
- package/dist/alchemy/wrapper.js +0 -15
- package/dist/alchemy/wrapper.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +14 -2
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +117 -14
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +8 -5
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +36 -12
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/kro-factory.d.ts +35 -9
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +143 -151
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/shared-utilities.d.ts +15 -4
- package/dist/core/deployment/shared-utilities.d.ts.map +1 -1
- package/dist/core/deployment/shared-utilities.js +47 -14
- package/dist/core/deployment/shared-utilities.js.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.js +1 -2
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
- package/dist/core/deployment/strategies/index.d.ts +0 -1
- package/dist/core/deployment/strategies/index.d.ts.map +1 -1
- package/dist/core/deployment/strategies/index.js +0 -1
- package/dist/core/deployment/strategies/index.js.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts +0 -13
- package/dist/core/expressions/composition/composition-analyzer-helpers.d.ts.map +1 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js +78 -1
- package/dist/core/expressions/composition/composition-analyzer-helpers.js.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.js +34 -1
- package/dist/core/expressions/composition/imperative-analyzer.js.map +1 -1
- package/dist/core/serialization/cel-references.d.ts +1 -1
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +19 -3
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +19 -4
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/types/deployment.d.ts +28 -42
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/resource-graph.d.ts +2 -6
- package/dist/core/types/resource-graph.d.ts.map +1 -1
- package/dist/core/types/schema.d.ts +0 -1
- package/dist/core/types/schema.d.ts.map +1 -1
- package/dist/core/types/serialization.d.ts +3 -7
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-directory.js +2 -13
- package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -1
- package/dist/factories/kubernetes/yaml/yaml-file.js +2 -18
- package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -1
- package/package.json +6 -3
- package/dist/alchemy/deployment.d.ts +0 -12
- package/dist/alchemy/deployment.d.ts.map +0 -1
- package/dist/alchemy/deployment.js +0 -12
- package/dist/alchemy/deployment.js.map +0 -1
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts +0 -109
- package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +0 -1
- package/dist/core/deployment/strategies/alchemy-strategy.js +0 -556
- package/dist/core/deployment/strategies/alchemy-strategy.js.map +0 -1
|
@@ -1,98 +1,297 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Alchemy Resource
|
|
2
|
+
* Alchemy v2 KRO Resource Provider
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Exposes TypeKro KRO deploys as an alchemy **v2** custom resource. Under v2 a
|
|
5
|
+
* resource is declarative: callers instantiate `KroResource` inside their alchemy
|
|
6
|
+
* Stack and merge `kroProvider` (an Effect `Layer`) into their runtime's providers,
|
|
7
|
+
* so the deployed RGD/instance joins the caller's unified alchemy state (reverse-topo
|
|
8
|
+
* teardown + idempotent reconcile). This replaces the v1 (`alchemy@0.62`) integration,
|
|
9
|
+
* which dynamically registered per-kind providers in a global `PROVIDERS` registry and
|
|
10
|
+
* drove them imperatively via `scope.run(() => Provider(id, props))` — a model alchemy
|
|
11
|
+
* v2 does not have.
|
|
6
12
|
*
|
|
7
|
-
*
|
|
8
|
-
* and
|
|
13
|
+
* The Kubernetes machinery (`deployers`, `kro-delete`, client/deployer construction) is
|
|
14
|
+
* alchemy-version-agnostic and reused verbatim; only the registration glue changed.
|
|
9
15
|
*/
|
|
10
|
-
import {
|
|
16
|
+
import { Effect } from 'effect';
|
|
17
|
+
import * as Output from 'alchemy/Output';
|
|
18
|
+
import * as ProviderMod from 'alchemy/Provider';
|
|
19
|
+
import * as ResourceMod from 'alchemy/Resource';
|
|
11
20
|
import { DEFAULT_DEPLOYMENT_TIMEOUT } from '../core/config/defaults.js';
|
|
12
21
|
import { ensureError } from '../core/errors.js';
|
|
13
22
|
import { createKubernetesClientProvider } from '../core/kubernetes/client-provider.js';
|
|
14
23
|
import { getComponentLogger } from '../core/logging/index.js';
|
|
24
|
+
import { CEL_EXPRESSION_BRAND } from '../core/constants/brands.js';
|
|
25
|
+
import { createBunCompatibleKubernetesObjectApi } from '../core/kubernetes/index.js';
|
|
26
|
+
import { SINGLETON_SPEC_FINGERPRINT_ANNOTATION } from '../core/deployment/resource-tagging.js';
|
|
27
|
+
import { stableSerialize } from '../core/singleton/singleton.js';
|
|
15
28
|
import { DirectTypeKroDeployer, KroTypeKroDeployer, ResourceGraphDefinitionDeletionDeferredError, } from './deployers.js';
|
|
16
29
|
import { deleteKroDefinition, deleteKroInstanceFinalizerSafe, hasKroInstances } from './kro-delete.js';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
/** The single alchemy v2 resource type for any TypeKro KRO resource (RGD or CR instance). */
|
|
31
|
+
export const KRO_RESOURCE_TYPE = 'TypeKro.KroResource';
|
|
32
|
+
/**
|
|
33
|
+
* The declarative v2 resource. Instantiate inside an alchemy Stack — one per RGD and one
|
|
34
|
+
* per CR instance — e.g. `yield* KroResource(rgdId, { resource, namespace, deploymentStrategy: 'kro', … })`.
|
|
35
|
+
* Order instances after their RGD (pass the RGD output through) so reverse-topo teardown
|
|
36
|
+
* removes instances before the shared RGD.
|
|
37
|
+
*/
|
|
38
|
+
export const KroResource = ResourceMod.Resource(KRO_RESOURCE_TYPE);
|
|
39
|
+
/**
|
|
40
|
+
* The provider `Layer` that backs {@link KroResource}. Merge into the runtime's providers
|
|
41
|
+
* (alongside the cloud providers) so reconcile/delete run. `reconcile` is the single
|
|
42
|
+
* convergent create/update (apply the manifest, wait for readiness); `delete` performs the
|
|
43
|
+
* finalizer-safe, shared-RGD-aware teardown.
|
|
44
|
+
*/
|
|
45
|
+
export const kroProvider = ProviderMod.effect(KroResource, Effect.succeed({
|
|
46
|
+
// `namespace` is identity-stable: a namespace change is a replacement, not an in-place update.
|
|
47
|
+
stables: ['namespace'],
|
|
48
|
+
reconcile: Effect.fn(function* ({ news }) {
|
|
49
|
+
return yield* Effect.promise(() => deployKroResource(news));
|
|
50
|
+
}),
|
|
51
|
+
delete: Effect.fn(function* ({ output, news, }) {
|
|
52
|
+
// Prefer the live spec; fall back to reconstructing minimal props from persisted output
|
|
53
|
+
// (a delete after the spec is gone — e.g. resource removed from the stack).
|
|
54
|
+
const props = news ?? propsFromOutput(output);
|
|
55
|
+
if (props) {
|
|
56
|
+
yield* Effect.promise(() => deleteKroResource(props));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Neither a live spec nor a usable output (e.g. a create that failed before persisting a
|
|
60
|
+
// complete output). Warn rather than silently no-op so a possible leaked cluster object is
|
|
61
|
+
// visible — there's nothing reconstructable to tear down here.
|
|
62
|
+
getComponentLogger('alchemy-deployment')
|
|
63
|
+
.child({ alchemyType: KRO_RESOURCE_TYPE })
|
|
64
|
+
.warn('Skipping delete: no live spec and no reconstructable output to tear down', {
|
|
65
|
+
hasOutput: !!output,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}),
|
|
69
|
+
}));
|
|
70
|
+
/**
|
|
71
|
+
* Instantiate a set of {@link AlchemyResourceDeclaration}s (from a factory's `toAlchemyResources`)
|
|
72
|
+
* as `KroResource`s inside an alchemy Stack, wiring each declaration's `dependsOn` into alchemy
|
|
73
|
+
* `Output` dependencies. This is what gives the fan-out its **ordering** (alchemy deploys a
|
|
74
|
+
* resource only after every resource it `dependsOn` is ready) and, in direct mode, feeds each
|
|
75
|
+
* dependency's resolved live state into the dependent's reconcile for cross-resource reference
|
|
76
|
+
* resolution. Returns the map of declaration id → deployed output.
|
|
77
|
+
*
|
|
78
|
+
* ```ts
|
|
79
|
+
* // inside a Stack/generator:
|
|
80
|
+
* const outputs = yield* materializeAlchemyResources(KroResource, await factory.toAlchemyResources(spec));
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* Declarations must be topologically ordered (as `toAlchemyResources` returns them) so each
|
|
84
|
+
* dependency's output exists before its dependents reference it.
|
|
85
|
+
*/
|
|
86
|
+
export function materializeAlchemyResources(kroResource, declarations) {
|
|
87
|
+
return Effect.gen(function* () {
|
|
88
|
+
// Keyed by declaration id → the instantiated alchemy resource HANDLE (what `Output.of` consumes
|
|
89
|
+
// and what carries the dependency edge); its resolved attributes are a `TypeKroResource`.
|
|
90
|
+
const handles = {};
|
|
91
|
+
for (const decl of declarations) {
|
|
92
|
+
const deps = decl.dependsOn.map((id) => {
|
|
93
|
+
const handle = handles[id];
|
|
94
|
+
if (!handle) {
|
|
95
|
+
// Declarations must be topologically ordered so every dependency is instantiated first.
|
|
96
|
+
// A missing handle means an out-of-order/unknown id — fail loudly rather than silently
|
|
97
|
+
// dropping the edge (which would cause a deploy-order race or unresolved reference).
|
|
98
|
+
throw new Error(`materializeAlchemyResources: '${decl.id}' dependsOn '${id}', which is not (yet) instantiated. ` +
|
|
99
|
+
`Declarations must be topologically ordered.`);
|
|
100
|
+
}
|
|
101
|
+
return handle;
|
|
102
|
+
});
|
|
103
|
+
// `Output.all([...Output.of(dep)])` both (a) creates the alchemy dependency edges so these
|
|
104
|
+
// deploy first and (b) resolves to the concrete dependency outputs handed to `reconcile`.
|
|
105
|
+
const props = deps.length > 0
|
|
106
|
+
? { ...decl.props, dependencies: Output.all(...deps.map((d) => Output.of(d))) }
|
|
107
|
+
: decl.props;
|
|
108
|
+
// Cast: `props` carries an `Output` for `dependencies` that the `KroResource` constructor
|
|
109
|
+
// accepts as an `Input<…>` and alchemy resolves before reconcile — the field's static type
|
|
110
|
+
// is the resolved (post-evaluation) shape.
|
|
111
|
+
handles[decl.id] = yield* kroResource(decl.id, props);
|
|
112
|
+
}
|
|
113
|
+
return handles;
|
|
114
|
+
});
|
|
25
115
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Reconcile: deploy a single KRO resource (RGD or CR instance) and return its persisted state.
|
|
118
|
+
* Convergent — alchemy calls this for both create and update; the deployer is idempotent apply.
|
|
119
|
+
*/
|
|
120
|
+
async function deployKroResource(props) {
|
|
121
|
+
const logger = getComponentLogger('alchemy-deployment').child({ alchemyType: KRO_RESOURCE_TYPE });
|
|
122
|
+
// Singleton-owner spec-drift protection (the declarative analog of `assertNoDeployedSingletonSpecDrift`
|
|
123
|
+
// in the imperative deploy path): refuse to clobber a shared singleton that already exists with a
|
|
124
|
+
// different spec. Cluster-checked here since `toAlchemyResources` is intentionally cluster-free.
|
|
125
|
+
await _assertNoSingletonDrift(props, logger);
|
|
126
|
+
const { deployer, dispose } = await _resolveDeployer(props, 'deployment');
|
|
127
|
+
try {
|
|
128
|
+
// Direct mode: hand the deployer the live state of this resource's dependencies so the engine
|
|
129
|
+
// resolves its cross-resource references + CEL expressions against them (the deps deployed
|
|
130
|
+
// first via alchemy ordering). KRO docs are self-contained, so the seed is irrelevant there.
|
|
131
|
+
const seedResources = _seedFromDependencies(props);
|
|
132
|
+
// alchemy serializes props to state, flattening this resource's CEL refs to `${…}` STRINGS.
|
|
133
|
+
// The engine resolver only evaluates CEL OBJECTS, so (direct mode, with dependency state to
|
|
134
|
+
// resolve against) re-hydrate those strings into template CEL objects before deploying — but
|
|
135
|
+
// ONLY strings that reference a known dependency id, so genuine `${…}` literals (e.g. a shell
|
|
136
|
+
// `${HOME}` in an env var) are left untouched.
|
|
137
|
+
const deployProps = seedResources && props.deploymentStrategy === 'direct'
|
|
138
|
+
? {
|
|
139
|
+
...props,
|
|
140
|
+
resource: _rehydrateCelStrings(props.resource, new Set(seedResources.map((s) => s.id))),
|
|
141
|
+
}
|
|
142
|
+
: props;
|
|
143
|
+
const { resourceProperties } = await _deployAndCreateResult(deployProps, deployer, seedResources);
|
|
144
|
+
_logDeploymentSuccess(logger, KRO_RESOURCE_TYPE, props, resourceProperties);
|
|
145
|
+
return resourceProperties;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
logger.error('Error deploying resource through Alchemy', ensureError(error));
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
await dispose();
|
|
153
|
+
}
|
|
30
154
|
}
|
|
31
|
-
const REGISTERED_TYPE_NAMES = globalRegisteredTypes[REGISTERED_TYPE_NAMES_KEY];
|
|
32
155
|
/**
|
|
33
|
-
*
|
|
156
|
+
* Pure drift verdict (no I/O) for a singleton instance being deployed, given:
|
|
157
|
+
* - `expectedFingerprint`: the spec-fingerprint annotation on the resource being deployed,
|
|
158
|
+
* - `deployingSpec`: that resource's spec,
|
|
159
|
+
* - `live`: the existing same-named owner on the cluster (or undefined if none).
|
|
34
160
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
161
|
+
* Mirrors the imperative `assertNoDeployedSingletonSpecDrift`, INCLUDING its fallback: an existing
|
|
162
|
+
* owner with NO fingerprint annotation (a legacy/unfingerprinted owner) is still verified by
|
|
163
|
+
* comparing serialized specs — so a different-spec legacy owner is NOT silently accepted.
|
|
37
164
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (REGISTERED_TYPES.has(alchemyType)) {
|
|
47
|
-
return REGISTERED_TYPES.get(alchemyType);
|
|
165
|
+
export function singletonDriftVerdict(expectedFingerprint, deployingSpec, live) {
|
|
166
|
+
if (!live)
|
|
167
|
+
return { drift: false };
|
|
168
|
+
const actual = live.metadata?.annotations?.[SINGLETON_SPEC_FINGERPRINT_ANNOTATION];
|
|
169
|
+
if (actual === expectedFingerprint)
|
|
170
|
+
return { drift: false };
|
|
171
|
+
if (actual) {
|
|
172
|
+
return { drift: true, reason: `existing fingerprint ${actual} does not match ${expectedFingerprint}` };
|
|
48
173
|
}
|
|
49
|
-
//
|
|
50
|
-
if (
|
|
51
|
-
|
|
52
|
-
REGISTERED_TYPES.set(alchemyType, existingProvider);
|
|
53
|
-
REGISTERED_TYPE_NAMES.add(alchemyType);
|
|
54
|
-
return existingProvider;
|
|
174
|
+
// Unfingerprinted (legacy) owner — fall back to comparing serialized specs.
|
|
175
|
+
if (stableSerialize(live.spec) !== stableSerialize(deployingSpec)) {
|
|
176
|
+
return { drift: true, reason: 'an existing unfingerprinted singleton owner has a different spec' };
|
|
55
177
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
178
|
+
return { drift: false };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Refuse to deploy a singleton owner whose identity already exists on the cluster with a DIFFERENT
|
|
182
|
+
* spec — the declarative-path equivalent of the imperative `assertNoDeployedSingletonSpecDrift`. Only
|
|
183
|
+
* fires for resources carrying the singleton spec-fingerprint annotation (i.e. singleton instances);
|
|
184
|
+
* a missing instance / absent CRD / unreachable cluster is treated as "nothing to drift from".
|
|
185
|
+
*/
|
|
186
|
+
async function _assertNoSingletonDrift(props, logger) {
|
|
187
|
+
const resource = props.resource;
|
|
188
|
+
const expected = resource.metadata?.annotations?.[SINGLETON_SPEC_FINGERPRINT_ANNOTATION];
|
|
189
|
+
if (!expected)
|
|
190
|
+
return; // not a fingerprinted singleton instance
|
|
191
|
+
let live;
|
|
192
|
+
try {
|
|
193
|
+
const kc = _createClientProvider(props, 'singleton-drift-check');
|
|
194
|
+
const api = createBunCompatibleKubernetesObjectApi(kc);
|
|
195
|
+
live = (await api.read(props.resource));
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return; // not found / CRD not yet created / cluster unreachable → no existing spec to clash with
|
|
199
|
+
}
|
|
200
|
+
const verdict = singletonDriftVerdict(expected, resource.spec, live);
|
|
201
|
+
if (verdict.drift) {
|
|
202
|
+
throw new Error(`Singleton config drift detected for ${resource.metadata?.name ?? '<unknown>'}: ${verdict.reason}. ` +
|
|
203
|
+
'A singleton identity must not be deployed with multiple specs.');
|
|
204
|
+
}
|
|
205
|
+
logger.debug('Singleton spec verified (no drift)', {
|
|
206
|
+
name: resource.metadata?.name,
|
|
207
|
+
fingerprint: expected,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Build the engine resolution seed (direct mode) from `props.dependencies`: each dependency output
|
|
212
|
+
* carries its live `deployedResource` (apiVersion/kind + status) and its logical `resourceId` — the
|
|
213
|
+
* id this resource's `KubernetesRef`s / CEL expressions (`${resourceId.field}`) point at. The engine
|
|
214
|
+
* resolves against these without redeploying them.
|
|
215
|
+
*/
|
|
216
|
+
function _seedFromDependencies(props) {
|
|
217
|
+
const deps = props.dependencies;
|
|
218
|
+
if (props.deploymentStrategy !== 'direct' || !deps || deps.length === 0)
|
|
219
|
+
return undefined;
|
|
220
|
+
const seed = deps
|
|
221
|
+
.filter((d) => !!d?.deployedResource && !!d.resourceId)
|
|
222
|
+
.map((d) => {
|
|
223
|
+
const manifest = d.deployedResource;
|
|
224
|
+
return {
|
|
225
|
+
id: d.resourceId,
|
|
226
|
+
kind: manifest.kind ?? 'Unknown',
|
|
227
|
+
name: manifest.metadata?.name ?? 'unknown',
|
|
228
|
+
namespace: manifest.metadata?.namespace ?? props.namespace,
|
|
229
|
+
manifest,
|
|
230
|
+
status: 'deployed',
|
|
231
|
+
applied: true,
|
|
232
|
+
deployedAt: new Date(0),
|
|
233
|
+
};
|
|
91
234
|
});
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
235
|
+
return seed.length > 0 ? seed : undefined;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Deep-clone `value`, converting strings that contain a `${dependencyId.…}` placeholder into a
|
|
239
|
+
* template {@link CelExpression} object so the engine resolver evaluates them (alchemy's state
|
|
240
|
+
* serialization had flattened the original CEL objects to these strings). Only strings whose
|
|
241
|
+
* placeholder references one of `seedIds` (this resource's dependencies) are converted — genuine
|
|
242
|
+
* `${…}` literals that don't reference a dependency (e.g. a shell `${HOME}`) are left untouched.
|
|
243
|
+
*
|
|
244
|
+
* Template form means placeholders are resolved and string-concatenated; this is correct for the
|
|
245
|
+
* string-valued fields (env/data/annotations) where cross-resource refs survive serialization. A
|
|
246
|
+
* cross-resource ref in a NON-string field would be coerced to a string — an accepted limitation
|
|
247
|
+
* of round-tripping CEL through serialized state.
|
|
248
|
+
*/
|
|
249
|
+
function _rehydrateCelStrings(value, seedIds) {
|
|
250
|
+
if (typeof value === 'string') {
|
|
251
|
+
return _referencesSeed(value, seedIds)
|
|
252
|
+
? { [CEL_EXPRESSION_BRAND]: true, expression: value, __isTemplate: true }
|
|
253
|
+
: value;
|
|
254
|
+
}
|
|
255
|
+
if (Array.isArray(value))
|
|
256
|
+
return value.map((v) => _rehydrateCelStrings(v, seedIds));
|
|
257
|
+
if (value && typeof value === 'object') {
|
|
258
|
+
const out = {};
|
|
259
|
+
for (const [k, v] of Object.entries(value)) {
|
|
260
|
+
out[k] = _rehydrateCelStrings(v, seedIds);
|
|
261
|
+
}
|
|
262
|
+
return out;
|
|
263
|
+
}
|
|
264
|
+
return value;
|
|
265
|
+
}
|
|
266
|
+
/** True if `s` contains a `${<id>.…}` placeholder whose leading identifier is a known dependency. */
|
|
267
|
+
function _referencesSeed(s, seedIds) {
|
|
268
|
+
if (!s.includes('${'))
|
|
269
|
+
return false;
|
|
270
|
+
const re = /\$\{\s*([a-zA-Z_][a-zA-Z0-9_]*)\b/g;
|
|
271
|
+
let m = re.exec(s);
|
|
272
|
+
while (m !== null) {
|
|
273
|
+
if (m[1] && seedIds.has(m[1]))
|
|
274
|
+
return true;
|
|
275
|
+
m = re.exec(s);
|
|
276
|
+
}
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Rebuild the minimal delete-time props from persisted output. The output carries the deployed
|
|
281
|
+
* resource (with `metadata.labels['typekro.io/rgd']` for instances / `spec.schema` for RGDs),
|
|
282
|
+
* which is all {@link inferKroDeletionOptions} + the deployer need to tear down finalizer-safe.
|
|
283
|
+
*/
|
|
284
|
+
function propsFromOutput(output) {
|
|
285
|
+
if (!output?.resource)
|
|
286
|
+
return undefined;
|
|
287
|
+
return {
|
|
288
|
+
resource: output.resource,
|
|
289
|
+
...(output.resourceId !== undefined && { resourceId: output.resourceId }),
|
|
290
|
+
namespace: output.namespace,
|
|
291
|
+
deploymentStrategy: output.deploymentStrategy ?? 'kro',
|
|
292
|
+
...(output.kubeConfigOptions !== undefined && { kubeConfigOptions: output.kubeConfigOptions }),
|
|
293
|
+
...(output.kroDeletion !== undefined && { kroDeletion: output.kroDeletion }),
|
|
294
|
+
};
|
|
96
295
|
}
|
|
97
296
|
/**
|
|
98
297
|
* Create KubernetesClientProvider using centralized configuration management
|
|
@@ -199,9 +398,14 @@ async function _resolveDeployer(props, phase) {
|
|
|
199
398
|
};
|
|
200
399
|
}
|
|
201
400
|
/**
|
|
202
|
-
*
|
|
401
|
+
* Delete: tear down a single KRO resource finalizer-safe. Under v2 reverse-topo teardown,
|
|
402
|
+
* CR instances are deleted before their RGD, so by the time an RGD's delete runs its
|
|
403
|
+
* instances are gone. If the deployer still defers an RGD delete (a shared RGD that other
|
|
404
|
+
* stacks' instances reference), we log and let alchemy drop the state entry — the orphaned
|
|
405
|
+
* RGD is cluster-scoped and dies with the cluster; it must not wedge the destroy.
|
|
203
406
|
*/
|
|
204
|
-
async function
|
|
407
|
+
async function deleteKroResource(props) {
|
|
408
|
+
const logger = getComponentLogger('alchemy-deployment').child({ alchemyType: KRO_RESOURCE_TYPE });
|
|
205
409
|
const { deployer, dispose } = await _resolveDeployer(props, 'delete');
|
|
206
410
|
try {
|
|
207
411
|
await deployer.delete(props.resource, {
|
|
@@ -212,18 +416,11 @@ async function _handleResourceDeletion(context, props, logger) {
|
|
|
212
416
|
}
|
|
213
417
|
catch (error) {
|
|
214
418
|
if (error instanceof ResourceGraphDefinitionDeletionDeferredError) {
|
|
215
|
-
logger.debug('Deferring
|
|
419
|
+
logger.debug('Deferring ResourceGraphDefinition delete (still referenced); dropping state entry', {
|
|
216
420
|
resourceName: props.resource.metadata?.name,
|
|
217
421
|
reason: error.message,
|
|
218
422
|
});
|
|
219
|
-
return
|
|
220
|
-
...context,
|
|
221
|
-
resource: props.resource,
|
|
222
|
-
namespace: props.namespace,
|
|
223
|
-
deployedResource: props.resource,
|
|
224
|
-
ready: false,
|
|
225
|
-
deployedAt: Date.now(),
|
|
226
|
-
};
|
|
423
|
+
return;
|
|
227
424
|
}
|
|
228
425
|
logger.error('Error deleting resource', ensureError(error));
|
|
229
426
|
throw error;
|
|
@@ -231,18 +428,17 @@ async function _handleResourceDeletion(context, props, logger) {
|
|
|
231
428
|
finally {
|
|
232
429
|
await dispose();
|
|
233
430
|
}
|
|
234
|
-
return context.destroy();
|
|
235
431
|
}
|
|
236
432
|
/** Internal test hook for deletion semantics. */
|
|
237
|
-
export const
|
|
433
|
+
export const deleteKroResourceForTest = deleteKroResource;
|
|
238
434
|
/**
|
|
239
435
|
* Deploy resource and create deployment result
|
|
240
436
|
*/
|
|
241
|
-
async function _deployAndCreateResult(props, deployer) {
|
|
437
|
+
async function _deployAndCreateResult(props, deployer, seedResources) {
|
|
242
438
|
const deploymentOptions = buildAlchemyDeploymentOptions(props);
|
|
243
|
-
// Deploy using the created deployer
|
|
244
|
-
//
|
|
245
|
-
const deployedResource = await deployer.deploy(props.resource, deploymentOptions);
|
|
439
|
+
// Deploy using the created deployer. The deployer/engine resolves references + CEL expressions,
|
|
440
|
+
// seeded (direct mode) with dependencies' live state so cross-resource refs resolve.
|
|
441
|
+
const deployedResource = await deployer.deploy(props.resource, deploymentOptions, seedResources);
|
|
246
442
|
// Create clean, serializable versions for Alchemy storage.
|
|
247
443
|
// We use JSON.parse(JSON.stringify()) deliberately instead of structuredClone because:
|
|
248
444
|
// 1. Enhanced<> resources contain non-cloneable values (Symbols like pino.chindings,
|
|
@@ -255,7 +451,11 @@ async function _deployAndCreateResult(props, deployer) {
|
|
|
255
451
|
// Create the resource properties for Alchemy
|
|
256
452
|
const resourceProperties = {
|
|
257
453
|
resource: cleanResource,
|
|
454
|
+
...(props.resourceId !== undefined && { resourceId: props.resourceId }),
|
|
258
455
|
namespace: props.namespace,
|
|
456
|
+
deploymentStrategy: props.deploymentStrategy,
|
|
457
|
+
...(props.kubeConfigOptions !== undefined && { kubeConfigOptions: props.kubeConfigOptions }),
|
|
458
|
+
...(props.kroDeletion !== undefined && { kroDeletion: props.kroDeletion }),
|
|
259
459
|
deployedResource: cleanDeployedResource,
|
|
260
460
|
ready: true,
|
|
261
461
|
deployedAt: Date.now(),
|
|
@@ -273,10 +473,9 @@ export function buildAlchemyDeploymentOptions(props) {
|
|
|
273
473
|
};
|
|
274
474
|
}
|
|
275
475
|
/**
|
|
276
|
-
* Log deployment success
|
|
476
|
+
* Log deployment success.
|
|
277
477
|
*/
|
|
278
|
-
function _logDeploymentSuccess(logger, alchemyType, props, resourceProperties
|
|
279
|
-
// Log successful deployment
|
|
478
|
+
function _logDeploymentSuccess(logger, alchemyType, props, resourceProperties) {
|
|
280
479
|
logger.debug('Successfully deployed resource through Alchemy', {
|
|
281
480
|
alchemyType,
|
|
282
481
|
resourceKind: props.resource.kind,
|
|
@@ -290,55 +489,5 @@ function _logDeploymentSuccess(logger, alchemyType, props, resourceProperties, c
|
|
|
290
489
|
deployedAt: resourceProperties.deployedAt,
|
|
291
490
|
},
|
|
292
491
|
});
|
|
293
|
-
// Log the exact data we're about to pass to Alchemy's context function
|
|
294
|
-
logger.debug('About to call Alchemy context function', {
|
|
295
|
-
alchemyType,
|
|
296
|
-
contextPhase: context.phase,
|
|
297
|
-
contextId: context.id,
|
|
298
|
-
contextFqn: context.fqn,
|
|
299
|
-
resourcePropertiesKeys: Object.keys(resourceProperties),
|
|
300
|
-
resourcePropertiesStringified: JSON.stringify(resourceProperties, (_key, value) => {
|
|
301
|
-
// Handle circular references and complex objects
|
|
302
|
-
if (typeof value === 'object' && value !== null) {
|
|
303
|
-
if (value.constructor && value.constructor.name !== 'Object') {
|
|
304
|
-
return `[${value.constructor.name}]`;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
return value;
|
|
308
|
-
}, 2),
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Execute Alchemy context function with proper error handling
|
|
313
|
-
*/
|
|
314
|
-
function _executeAlchemyContext(context, resourceProperties, logger, alchemyType) {
|
|
315
|
-
try {
|
|
316
|
-
const result = context(resourceProperties);
|
|
317
|
-
logger.debug('Alchemy context function returned successfully', {
|
|
318
|
-
alchemyType,
|
|
319
|
-
resultType: typeof result,
|
|
320
|
-
resultKeys: result ? Object.keys(result) : [],
|
|
321
|
-
hasAlchemySymbols: result ? Object.getOwnPropertySymbols(result).length > 0 : false,
|
|
322
|
-
});
|
|
323
|
-
return result;
|
|
324
|
-
}
|
|
325
|
-
catch (contextError) {
|
|
326
|
-
logger.error('Alchemy context function failed', ensureError(contextError), {
|
|
327
|
-
alchemyType,
|
|
328
|
-
errorMessage: ensureError(contextError).message,
|
|
329
|
-
errorStack: ensureError(contextError).stack,
|
|
330
|
-
});
|
|
331
|
-
throw contextError;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Clear the registered types cache (useful for testing)
|
|
336
|
-
*/
|
|
337
|
-
export function clearRegisteredTypes() {
|
|
338
|
-
for (const alchemyType of REGISTERED_TYPE_NAMES) {
|
|
339
|
-
PROVIDERS.delete(alchemyType);
|
|
340
|
-
}
|
|
341
|
-
REGISTERED_TYPES.clear();
|
|
342
|
-
REGISTERED_TYPE_NAMES.clear();
|
|
343
492
|
}
|
|
344
493
|
//# sourceMappingURL=resource-registration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-registration.js","sourceRoot":"","sources":["../../src/alchemy/resource-registration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resource-registration.js","sourceRoot":"","sources":["../../src/alchemy/resource-registration.ts"],"names":[],"mappings":"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"}
|