@go-to-k/cdkd 0.243.0 → 0.244.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +614 -17
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-DNqZHDA5.js → deploy-engine-3KNTmr1u.js} +66 -16
- package/dist/{deploy-engine-DNqZHDA5.js.map → deploy-engine-3KNTmr1u.js.map} +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -1
|
@@ -9338,7 +9338,6 @@ const NON_PROVISIONABLE_TYPES = new Set([
|
|
|
9338
9338
|
"AWS::EMR::Cluster",
|
|
9339
9339
|
"AWS::EMR::InstanceFleetConfig",
|
|
9340
9340
|
"AWS::EMR::InstanceGroupConfig",
|
|
9341
|
-
"AWS::FSx::FileSystem",
|
|
9342
9341
|
"AWS::FSx::Snapshot",
|
|
9343
9342
|
"AWS::FSx::StorageVirtualMachine",
|
|
9344
9343
|
"AWS::FSx::Volume",
|
|
@@ -11928,6 +11927,26 @@ const PROPERTY_COVERAGE_BY_TYPE = new Map([
|
|
|
11928
11927
|
]),
|
|
11929
11928
|
silentDrop: /* @__PURE__ */ new Map()
|
|
11930
11929
|
}],
|
|
11930
|
+
["AWS::FSx::FileSystem", {
|
|
11931
|
+
handled: new Set([
|
|
11932
|
+
"BackupId",
|
|
11933
|
+
"FileSystemType",
|
|
11934
|
+
"FileSystemTypeVersion",
|
|
11935
|
+
"KmsKeyId",
|
|
11936
|
+
"LustreConfiguration",
|
|
11937
|
+
"NetworkType",
|
|
11938
|
+
"SecurityGroupIds",
|
|
11939
|
+
"StorageCapacity",
|
|
11940
|
+
"StorageType",
|
|
11941
|
+
"SubnetIds",
|
|
11942
|
+
"Tags"
|
|
11943
|
+
]),
|
|
11944
|
+
silentDrop: new Map([
|
|
11945
|
+
["OntapConfiguration", "FSx for NetApp ONTAP variant — the file system is only a container for SVMs/volumes (separate AWS::FSx::StorageVirtualMachine / AWS::FSx::Volume types, both still unsupported), so shipping it alone would be misleading; only the Lustre variant is supported in v1. Follow-up to issue #1042."],
|
|
11946
|
+
["OpenZFSConfiguration", "FSx for OpenZFS variant — root-volume semantics (RootVolumeId, child AWS::FSx::Volume trees) are not implemented in v1; only the Lustre variant is supported. Follow-up to issue #1042."],
|
|
11947
|
+
["WindowsConfiguration", "FSx for Windows File Server variant — requires Active Directory wiring and Windows-specific update/delete semantics (final backups, throughput tiers) that v1 does not implement; only the Lustre variant (the CDK L2) is supported. Follow-up to issue #1042."]
|
|
11948
|
+
])
|
|
11949
|
+
}],
|
|
11931
11950
|
["AWS::Glue::Connection", {
|
|
11932
11951
|
handled: new Set(["CatalogId", "ConnectionInput"]),
|
|
11933
11952
|
silentDrop: /* @__PURE__ */ new Map()
|
|
@@ -12957,7 +12976,11 @@ function findActionableSilentDrops(resourceType, templateProperties, allowedKeys
|
|
|
12957
12976
|
* 3. SDK Provider registered, no silent-drop properties (after the
|
|
12958
12977
|
* `--allow-unsupported-properties` override filter) → SDK Provider.
|
|
12959
12978
|
* 4. SDK Provider registered, silent-drop properties present, NOT all
|
|
12960
|
-
* in the allow set → Cloud Control (auto-route, info-logged).
|
|
12979
|
+
* in the allow set → Cloud Control (auto-route, info-logged). When the
|
|
12980
|
+
* CC route is NOT viable — the type is `NON_PROVISIONABLE` (no CC
|
|
12981
|
+
* handlers, e.g. AWS::FSx::FileSystem) or the provider sets
|
|
12982
|
+
* `disableCcApiFallback` (e.g. NestedStackProvider) — throw the clear
|
|
12983
|
+
* pre-flight error instead of failing opaquely at provisioning time.
|
|
12961
12984
|
* 5. SDK Provider registered, silent-drop properties present, ALL in
|
|
12962
12985
|
* the allow set → SDK Provider (the user explicitly accepted the
|
|
12963
12986
|
* silent drop, warn-logged).
|
|
@@ -12965,10 +12988,12 @@ function findActionableSilentDrops(resourceType, templateProperties, allowedKeys
|
|
|
12965
12988
|
* 7. `--allow-unsupported-types` escape hatch → Cloud Control optimistically.
|
|
12966
12989
|
* 8. Otherwise → throw (no provider available).
|
|
12967
12990
|
*
|
|
12968
|
-
* Tier 3 (`NON_PROVISIONABLE`) types are rejected earlier
|
|
12969
|
-
* {@link validateResourceTypes}
|
|
12970
|
-
*
|
|
12971
|
-
*
|
|
12991
|
+
* SDK-provider-less Tier 3 (`NON_PROVISIONABLE`) types are rejected earlier
|
|
12992
|
+
* by {@link validateResourceTypes}. A Tier 1 type that is ALSO
|
|
12993
|
+
* NON_PROVISIONABLE (SDK provider registered for a type Cloud Control cannot
|
|
12994
|
+
* manage — e.g. AWS::FSx::FileSystem, AWS::DLM::LifecyclePolicy) passes the
|
|
12995
|
+
* type check but has no viable CC auto-route; rule 4's viability guard turns
|
|
12996
|
+
* that case into a clear pre-flight error.
|
|
12972
12997
|
*/
|
|
12973
12998
|
/**
|
|
12974
12999
|
* Types exempt from the sticky `provisionedBy: 'cc-api'` routing rule.
|
|
@@ -13103,6 +13128,7 @@ var ProviderRegistry = class {
|
|
|
13103
13128
|
provisionedBy: "sdk"
|
|
13104
13129
|
};
|
|
13105
13130
|
}
|
|
13131
|
+
if (isNonProvisionable(resourceType) || specificProvider.disableCcApiFallback === true) throw new Error(this.buildUnroutableSilentDropMessage(resourceType, actionableDrops));
|
|
13106
13132
|
this.logger.debug(`Auto-routing ${resourceType} via Cloud Control (silent-drop properties: ${actionableDrops.map((d) => d.property).join(", ")})`);
|
|
13107
13133
|
return {
|
|
13108
13134
|
provider: this.cloudControlProvider,
|
|
@@ -13127,6 +13153,21 @@ var ProviderRegistry = class {
|
|
|
13127
13153
|
throw new Error(`No provider available for resource type: ${resourceType}. This resource type is not supported by Cloud Control API and no SDK provider is registered.`);
|
|
13128
13154
|
}
|
|
13129
13155
|
/**
|
|
13156
|
+
* Error message for a resource whose template uses SDK-provider-unhandled
|
|
13157
|
+
* properties on a type where the Cloud Control auto-route (issue #614) is
|
|
13158
|
+
* NOT viable — `ProvisioningType: NON_PROVISIONABLE` (no CC handlers) or a
|
|
13159
|
+
* provider-level `disableCcApiFallback` opt-out. Includes each property's
|
|
13160
|
+
* `unhandledByDesign` rationale so the user sees WHY it is unhandled, plus
|
|
13161
|
+
* the `--allow-unsupported-properties` escape hatch (which forces the SDK
|
|
13162
|
+
* path and accepts the drop — the provider may still reject the resource
|
|
13163
|
+
* if the property is load-bearing, e.g. a non-Lustre FSx variant config).
|
|
13164
|
+
*/
|
|
13165
|
+
buildUnroutableSilentDropMessage(resourceType, drops) {
|
|
13166
|
+
const details = drops.map((d) => ` - ${d.property}: ${d.rationale}`).join("\n");
|
|
13167
|
+
const overrideHint = drops.map((d) => `${resourceType}:${d.property}`).join(",");
|
|
13168
|
+
return `${resourceType} uses properties cdkd's SDK Provider does not handle, and this type cannot fall back to Cloud Control API (${isNonProvisionable(resourceType) ? "ProvisioningType: NON_PROVISIONABLE — Cloud Control has no handlers for it" : "the type's SDK provider opts out of the Cloud Control fallback (disableCcApiFallback)"}):\n${details}\nRemove the properties, or force the SDK provider path and accept the drop via --allow-unsupported-properties ${overrideHint} (the provider may still reject the resource if the property is required).`;
|
|
13169
|
+
}
|
|
13170
|
+
/**
|
|
13130
13171
|
* Legacy entry point that returns just the provider. Delegates to
|
|
13131
13172
|
* {@link getProviderFor} with no properties / no state-recorded layer —
|
|
13132
13173
|
* which means silent-drop auto-routing CANNOT fire (no template to
|
|
@@ -13204,14 +13245,17 @@ var ProviderRegistry = class {
|
|
|
13204
13245
|
/**
|
|
13205
13246
|
* Walk every resource in the template and identify top-level CFn
|
|
13206
13247
|
* properties cdkd's SDK provider would silently drop on write. As of
|
|
13207
|
-
* issue [#614](https://github.com/go-to-k/cdkd/issues/614),
|
|
13208
|
-
*
|
|
13209
|
-
*
|
|
13210
|
-
* is retained on the name `validateResourceProperties` so existing deploy
|
|
13211
|
-
* call sites continue to work; it now emits info-level routing decisions
|
|
13248
|
+
* issue [#614](https://github.com/go-to-k/cdkd/issues/614), silent drops
|
|
13249
|
+
* auto-route the resource through Cloud Control API by default (see
|
|
13250
|
+
* {@link getProviderFor}) — the method emits info-level routing decisions
|
|
13212
13251
|
* for each silent-drop resource, plus warn-level lines for resources
|
|
13213
13252
|
* where the user explicitly opted into the silent drop via
|
|
13214
|
-
* `--allow-unsupported-properties`.
|
|
13253
|
+
* `--allow-unsupported-properties`. The ONE remaining throw path is the
|
|
13254
|
+
* CC-route viability guard: when the auto-route target cannot manage the
|
|
13255
|
+
* type (`NON_PROVISIONABLE` or a provider-level `disableCcApiFallback`
|
|
13256
|
+
* opt-out — e.g. AWS::FSx::FileSystem's Windows/ONTAP/OpenZFS blocks),
|
|
13257
|
+
* this rejects pre-flight with a clear per-property error instead of
|
|
13258
|
+
* letting provisioning fail opaquely.
|
|
13215
13259
|
*
|
|
13216
13260
|
* Must be called AFTER {@link validateResourceTypes} — type-level errors
|
|
13217
13261
|
* are still hard rejects. For a type allowed via `--allow-unsupported-types`,
|
|
@@ -13228,11 +13272,13 @@ var ProviderRegistry = class {
|
|
|
13228
13272
|
* Info-log every silent-drop routing decision (auto-route via CC API) and
|
|
13229
13273
|
* warn-log every silent drop the user explicitly opted into via
|
|
13230
13274
|
* `--allow-unsupported-properties` (forced SDK path, the property will
|
|
13231
|
-
* be dropped).
|
|
13275
|
+
* be dropped). Does not mutate state; throws ONLY for the CC-route
|
|
13276
|
+
* viability guard (un-allowed silent drops on a type Cloud Control cannot
|
|
13277
|
+
* manage — see {@link buildUnroutableSilentDropMessage}).
|
|
13232
13278
|
*
|
|
13233
13279
|
* Issue [#614](https://github.com/go-to-k/cdkd/issues/614). Replaces the
|
|
13234
13280
|
* pre-v0.16x throw path: silent drops are now a routing signal, not an
|
|
13235
|
-
* error.
|
|
13281
|
+
* error (except the viability guard above).
|
|
13236
13282
|
*
|
|
13237
13283
|
* When the optional `provisionedBy` (from existing state) is `'cc-api'`,
|
|
13238
13284
|
* the auto-route info line is demoted to `debug` — the resource has been
|
|
@@ -13255,6 +13301,8 @@ var ProviderRegistry = class {
|
|
|
13255
13301
|
else autoRouted.push(property);
|
|
13256
13302
|
}
|
|
13257
13303
|
if (autoRouted.length > 0) {
|
|
13304
|
+
const provider = this.providers.get(resourceType);
|
|
13305
|
+
if (isNonProvisionable(resourceType) || provider?.disableCcApiFallback === true) throw new Error(`${logicalId}: ${this.buildUnroutableSilentDropMessage(resourceType, drops.filter((d) => autoRouted.includes(d.property)))}`);
|
|
13258
13306
|
const message = `${logicalId} (${resourceType}): routing via Cloud Control API (cdkd's SDK Provider does not yet wire ${autoRouted.join(", ")} — CC API will forward the full property map. Override via --allow-unsupported-properties ${autoRouted.map((p) => `${resourceType}:${p}`).join(",")}.)`;
|
|
13259
13307
|
if (provisionedBy === "cc-api") this.logger.debug(message);
|
|
13260
13308
|
else this.logger.info(message);
|
|
@@ -14012,6 +14060,7 @@ const STATEFUL_TYPES = new Set([
|
|
|
14012
14060
|
"AWS::DynamoDB::Table",
|
|
14013
14061
|
"AWS::DynamoDB::GlobalTable",
|
|
14014
14062
|
"AWS::EFS::FileSystem",
|
|
14063
|
+
"AWS::FSx::FileSystem",
|
|
14015
14064
|
"AWS::S3::Bucket",
|
|
14016
14065
|
"AWS::ECR::Repository",
|
|
14017
14066
|
"AWS::Kinesis::Stream",
|
|
@@ -15826,11 +15875,12 @@ var DeployEngine = class {
|
|
|
15826
15875
|
} else throw updateError;
|
|
15827
15876
|
}
|
|
15828
15877
|
if (result.wasReplaced) this.logger.info(`Resource ${logicalId} was replaced: ${currentResource.physicalId} -> ${result.physicalId}`);
|
|
15878
|
+
const carriedAttributes = result.attributes ?? (result.wasReplaced ? void 0 : currentResource.attributes);
|
|
15829
15879
|
stateResources[logicalId] = {
|
|
15830
15880
|
physicalId: result.physicalId,
|
|
15831
15881
|
resourceType,
|
|
15832
15882
|
properties: resolvedProps,
|
|
15833
|
-
...
|
|
15883
|
+
...carriedAttributes && { attributes: carriedAttributes },
|
|
15834
15884
|
...dependencies && dependencies.length > 0 && { dependencies },
|
|
15835
15885
|
...this.extractTemplateAttributes(template, logicalId),
|
|
15836
15886
|
provisionedBy: resultProvisionedBy
|
|
@@ -16092,4 +16142,4 @@ var DeployEngine = class {
|
|
|
16092
16142
|
|
|
16093
16143
|
//#endregion
|
|
16094
16144
|
export { getDockerCmd as $, DiffCalculator as A, buildAssetRedirectMap as B, findActionableSilentDrops as C, resolveBucketRegion as Ct, refStateLookupFromResource as D, cfnRefValueFromPhysicalId as E, rebuildClientForBucketRegion as F, BOOTSTRAP_MARKER_PREFIX as G, loadPublishableAssetManifest as H, shouldRetainResource as I, parseBootstrapMarker as J, ensureAssetStorage as K, AssetPublisher as L, TemplateParser as M, LockManager as N, WAFv2WebACLProvider as O, S3StateBackend as P, formatDockerLoginError as Q, stringifyValue as R, ProviderRegistry as S, clearBucketRegionCache as St, IntrinsicFunctionResolver as T, rewriteTemplateAssetReferences as U, createAssetRedirectResolver as V, AssetModeResolver as W, validateContainerRepoName as X, validateAssetBucketName as Y, buildDockerImage as Z, green as _, CFN_TEMPLATE_URL_LIMIT as _t, withRetry as a, synthesisStatusMessage as at, IAMRoleProvider as b, uploadCfnTemplate as bt, computeImplicitDeleteEdges as c, resolveApp as ct, isStatefulRecreateTargetSync as d, resolveSkipPrefix as dt, runDockerForeground as et, renderStatefulReason as f, resolveStateBucketWithDefault as ft, gray as g, CFN_TEMPLATE_BODY_LIMIT as gt, cyan as h, warnDeprecatedNoPrefixCliFlag as ht, withResourceDeadline as i, Synthesizer as it, DagBuilder as j, applyRoleArnIfSet as k, extractDeploymentEventError as l, resolveAutoAssetStorage as lt, bold as m, resolveUseCdkBootstrapAssets as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, AssetManifestLoader as nt, isRetryableTransientError as o, getDefaultStateBucketName as ot, formatResourceLine as p, resolveStateBucketWithDefaultAndSource as pt, getBootstrapMarkerKey as q, DeployEngine as r, getDockerImageBySourceHash as rt, IMPLICIT_DELETE_DEPENDENCIES as s, getLegacyStateBucketName as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, runDockerStreaming as tt, MULTI_REGION_RECREATE_BLOCKED_TYPES as u, resolveCaptureObservedState as ut, red as v, MIGRATE_TMP_PREFIX as vt, CloudControlProvider as w, collectInlinePolicyNamesManagedBySiblings as x, AssemblyReader as xt, yellow as y, findLargeInlineResources as yt, WorkGraph as z };
|
|
16095
|
-
//# sourceMappingURL=deploy-engine-
|
|
16145
|
+
//# sourceMappingURL=deploy-engine-3KNTmr1u.js.map
|