@go-to-k/cdkd 0.250.0 → 0.251.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 CHANGED
@@ -1888,7 +1888,7 @@ const FLUSH_INTERVAL_MS = 2e3;
1888
1888
  const FLUSH_EVENT_THRESHOLD = 50;
1889
1889
  /** Build-time cdkd version, with a dev fallback for non-built contexts. */
1890
1890
  function getCdkdVersion() {
1891
- return "0.250.0";
1891
+ return "0.251.0";
1892
1892
  }
1893
1893
  /**
1894
1894
  * Generate a time-sortable unique run id, e.g.
@@ -34494,6 +34494,11 @@ const VARIANT_CONFIG_KEY = {
34494
34494
  ONTAP: "OntapConfiguration",
34495
34495
  OPENZFS: "OpenZFSConfiguration"
34496
34496
  };
34497
+ /**
34498
+ * Exported so a unit test can assert every declared-mutable sub-property has
34499
+ * a matching `apply*UpdateField` case — the invariant the unreachable
34500
+ * `default:` guard enforces at runtime.
34501
+ */
34497
34502
  const VARIANT_MUTABLE_SUBPROPS = {
34498
34503
  LustreConfiguration: LUSTRE_MUTABLE_SUBPROPS,
34499
34504
  WindowsConfiguration: WINDOWS_MUTABLE_SUBPROPS,
@@ -34501,6 +34506,21 @@ const VARIANT_MUTABLE_SUBPROPS = {
34501
34506
  OpenZFSConfiguration: OPENZFS_MUTABLE_SUBPROPS
34502
34507
  };
34503
34508
  /**
34509
+ * Copy `value` into `target[key]` only when AWS actually returned it, so the
34510
+ * snapshot carries no `undefined`-valued keys.
34511
+ *
34512
+ * The drift comparator walks the BASELINE's keys (`observedProperties`, or
34513
+ * `properties` when a resource predates observed-capture), not the AWS side —
34514
+ * so an omitted key here is not itself phantom drift. It matters because this
34515
+ * snapshot BECOMES the next baseline: `deploy-engine` stores it as
34516
+ * `observedProperties`, and an explicit `Foo: undefined` would then be walked
34517
+ * as a real key on every later comparison. Omitting is also what keeps the
34518
+ * emitted shape a faithful subset of the CFn input shape.
34519
+ */
34520
+ const putIfDefined = (target, key, value) => {
34521
+ if (value !== void 0) target[key] = value;
34522
+ };
34523
+ /**
34504
34524
  * Compute the Add/Remove route-table-id deltas an ONTAP / OpenZFS
34505
34525
  * `UpdateFileSystem` needs from the previous vs. next `RouteTableIds` list.
34506
34526
  * Route table membership is an unordered set, so a pure reorder yields no
@@ -34927,14 +34947,30 @@ var FSxFileSystemProvider = class {
34927
34947
  const prevVal = prev[key];
34928
34948
  if (JSON.stringify(nextVal) === JSON.stringify(prevVal)) continue;
34929
34949
  if (!mutable.has(key)) throw new ResourceUpdateNotSupportedError(resourceType, logicalId, `AWS FSx FileSystem ${configKey}.${key} is immutable on AWS — UpdateFileSystem cannot change it after creation. Re-deploy with cdkd deploy --replace, or destroy + redeploy the stack.`);
34930
- if (configKey === "LustreConfiguration" ? this.applyLustreUpdateField(key, nextVal, diff) : configKey === "WindowsConfiguration" ? this.applyWindowsUpdateField(key, nextVal, diff) : configKey === "OntapConfiguration" ? this.applyOntapUpdateField(key, nextVal, prevVal, diff) : this.applyOpenZFSUpdateField(key, nextVal, prevVal, diff)) hasMutableDiff = true;
34950
+ const ctx = {
34951
+ resourceType,
34952
+ logicalId,
34953
+ configKey
34954
+ };
34955
+ if (configKey === "LustreConfiguration" ? this.applyLustreUpdateField(ctx, key, nextVal, diff) : configKey === "WindowsConfiguration" ? this.applyWindowsUpdateField(ctx, key, nextVal, diff) : configKey === "OntapConfiguration" ? this.applyOntapUpdateField(ctx, key, nextVal, prevVal, diff) : this.applyOpenZFSUpdateField(ctx, key, nextVal, prevVal, diff)) hasMutableDiff = true;
34931
34956
  }
34932
34957
  return {
34933
34958
  diff,
34934
34959
  hasMutableDiff
34935
34960
  };
34936
34961
  }
34937
- applyLustreUpdateField(key, next, diff) {
34962
+ /**
34963
+ * A sub-property listed in a `*_MUTABLE_SUBPROPS` set with no matching
34964
+ * `apply*UpdateField` case. Reaching here is a cdkd bug, not user error:
34965
+ * `computeVariantConfigDiff` already accepted the key as mutable, so
34966
+ * falling through would issue a no-op `UpdateFileSystem` (`hasMutableDiff`
34967
+ * true, empty diff) and silently drop the user's change. Fail loudly
34968
+ * instead so the missing mapping surfaces the moment it is added.
34969
+ */
34970
+ unmappedMutableSubprop(ctx, key) {
34971
+ throw new ProvisioningError(`AWS FSx FileSystem ${ctx.configKey}.${key} is declared mutable but has no UpdateFileSystem mapping in cdkd. This is a cdkd bug — please report it at https://github.com/go-to-k/cdkd/issues`, ctx.resourceType, ctx.logicalId);
34972
+ }
34973
+ applyLustreUpdateField(ctx, key, next, diff) {
34938
34974
  const out = diff;
34939
34975
  switch (key) {
34940
34976
  case "WeeklyMaintenanceStartTime":
@@ -34966,10 +35002,11 @@ var FSxFileSystemProvider = class {
34966
35002
  } : void 0;
34967
35003
  break;
34968
35004
  }
35005
+ default: this.unmappedMutableSubprop(ctx, key);
34969
35006
  }
34970
35007
  return true;
34971
35008
  }
34972
- applyWindowsUpdateField(key, next, diff) {
35009
+ applyWindowsUpdateField(ctx, key, next, diff) {
34973
35010
  const out = diff;
34974
35011
  switch (key) {
34975
35012
  case "WeeklyMaintenanceStartTime":
@@ -34992,10 +35029,11 @@ var FSxFileSystemProvider = class {
34992
35029
  case "FsrmConfiguration":
34993
35030
  out.FsrmConfiguration = this.toWindowsFsrmConfiguration(next);
34994
35031
  break;
35032
+ default: this.unmappedMutableSubprop(ctx, key);
34995
35033
  }
34996
35034
  return true;
34997
35035
  }
34998
- applyOntapUpdateField(key, next, prev, diff) {
35036
+ applyOntapUpdateField(ctx, key, next, prev, diff) {
34999
35037
  const out = diff;
35000
35038
  switch (key) {
35001
35039
  case "DailyAutomaticBackupStartTime":
@@ -35019,10 +35057,11 @@ var FSxFileSystemProvider = class {
35019
35057
  if (remove) out.RemoveRouteTableIds = remove;
35020
35058
  return add !== void 0 || remove !== void 0;
35021
35059
  }
35060
+ default: this.unmappedMutableSubprop(ctx, key);
35022
35061
  }
35023
35062
  return true;
35024
35063
  }
35025
- applyOpenZFSUpdateField(key, next, prev, diff) {
35064
+ applyOpenZFSUpdateField(ctx, key, next, prev, diff) {
35026
35065
  const out = diff;
35027
35066
  switch (key) {
35028
35067
  case "DailyAutomaticBackupStartTime":
@@ -35050,6 +35089,7 @@ var FSxFileSystemProvider = class {
35050
35089
  if (remove) out.RemoveRouteTableIds = remove;
35051
35090
  return add !== void 0 || remove !== void 0;
35052
35091
  }
35092
+ default: this.unmappedMutableSubprop(ctx, key);
35053
35093
  }
35054
35094
  return true;
35055
35095
  }
@@ -35223,28 +35263,122 @@ var FSxFileSystemProvider = class {
35223
35263
  default: return;
35224
35264
  }
35225
35265
  }
35266
+ /** Map the read-side `WindowsConfiguration` back to CFn input shape. */
35267
+ readWindowsConfiguration(windows) {
35268
+ const config = {};
35269
+ putIfDefined(config, "ActiveDirectoryId", windows.ActiveDirectoryId);
35270
+ putIfDefined(config, "DeploymentType", windows.DeploymentType);
35271
+ putIfDefined(config, "PreferredSubnetId", windows.PreferredSubnetId);
35272
+ putIfDefined(config, "ThroughputCapacity", windows.ThroughputCapacity);
35273
+ putIfDefined(config, "WeeklyMaintenanceStartTime", windows.WeeklyMaintenanceStartTime);
35274
+ putIfDefined(config, "DailyAutomaticBackupStartTime", windows.DailyAutomaticBackupStartTime);
35275
+ putIfDefined(config, "AutomaticBackupRetentionDays", windows.AutomaticBackupRetentionDays);
35276
+ putIfDefined(config, "CopyTagsToBackups", windows.CopyTagsToBackups);
35277
+ if (windows.Aliases !== void 0) config["Aliases"] = windows.Aliases.map((alias) => alias.Name).filter((name) => name !== void 0);
35278
+ if (windows.SelfManagedActiveDirectoryConfiguration) {
35279
+ const ad = windows.SelfManagedActiveDirectoryConfiguration;
35280
+ const adConfig = {};
35281
+ putIfDefined(adConfig, "DomainName", ad.DomainName);
35282
+ putIfDefined(adConfig, "OrganizationalUnitDistinguishedName", ad.OrganizationalUnitDistinguishedName);
35283
+ putIfDefined(adConfig, "FileSystemAdministratorsGroup", ad.FileSystemAdministratorsGroup);
35284
+ putIfDefined(adConfig, "UserName", ad.UserName);
35285
+ putIfDefined(adConfig, "DnsIps", ad.DnsIps ? [...ad.DnsIps] : void 0);
35286
+ putIfDefined(adConfig, "DomainJoinServiceAccountSecret", ad.DomainJoinServiceAccountSecret);
35287
+ if (Object.keys(adConfig).length > 0) config["SelfManagedActiveDirectoryConfiguration"] = adConfig;
35288
+ }
35289
+ if (windows.AuditLogConfiguration) {
35290
+ const audit = {};
35291
+ putIfDefined(audit, "FileAccessAuditLogLevel", windows.AuditLogConfiguration.FileAccessAuditLogLevel);
35292
+ putIfDefined(audit, "FileShareAccessAuditLogLevel", windows.AuditLogConfiguration.FileShareAccessAuditLogLevel);
35293
+ putIfDefined(audit, "AuditLogDestination", windows.AuditLogConfiguration.AuditLogDestination);
35294
+ if (Object.keys(audit).length > 0) config["AuditLogConfiguration"] = audit;
35295
+ }
35296
+ const diskIops = this.readDiskIopsConfiguration(windows.DiskIopsConfiguration);
35297
+ if (diskIops) config["DiskIopsConfiguration"] = diskIops;
35298
+ if (windows.FsrmConfiguration) {
35299
+ const fsrm = {};
35300
+ putIfDefined(fsrm, "FsrmServiceEnabled", windows.FsrmConfiguration.FsrmServiceEnabled);
35301
+ putIfDefined(fsrm, "EventLogDestination", windows.FsrmConfiguration.EventLogDestination);
35302
+ if (Object.keys(fsrm).length > 0) config["FsrmConfiguration"] = fsrm;
35303
+ }
35304
+ return config;
35305
+ }
35306
+ /** Map the read-side `OntapConfiguration` back to CFn input shape. */
35307
+ readOntapConfiguration(ontap) {
35308
+ const config = {};
35309
+ putIfDefined(config, "DeploymentType", ontap.DeploymentType);
35310
+ putIfDefined(config, "AutomaticBackupRetentionDays", ontap.AutomaticBackupRetentionDays);
35311
+ putIfDefined(config, "DailyAutomaticBackupStartTime", ontap.DailyAutomaticBackupStartTime);
35312
+ putIfDefined(config, "WeeklyMaintenanceStartTime", ontap.WeeklyMaintenanceStartTime);
35313
+ putIfDefined(config, "EndpointIpAddressRange", ontap.EndpointIpAddressRange);
35314
+ putIfDefined(config, "PreferredSubnetId", ontap.PreferredSubnetId);
35315
+ putIfDefined(config, "ThroughputCapacity", ontap.ThroughputCapacity);
35316
+ putIfDefined(config, "ThroughputCapacityPerHAPair", ontap.ThroughputCapacityPerHAPair);
35317
+ putIfDefined(config, "HAPairs", ontap.HAPairs);
35318
+ putIfDefined(config, "RouteTableIds", ontap.RouteTableIds ? [...ontap.RouteTableIds] : void 0);
35319
+ putIfDefined(config, "EndpointIpv6AddressRange", ontap.EndpointIpv6AddressRange);
35320
+ const diskIops = this.readDiskIopsConfiguration(ontap.DiskIopsConfiguration);
35321
+ if (diskIops) config["DiskIopsConfiguration"] = diskIops;
35322
+ return config;
35323
+ }
35324
+ /** Map the read-side `OpenZFSConfiguration` back to CFn input shape. */
35325
+ readOpenZFSConfiguration(openzfs) {
35326
+ const config = {};
35327
+ putIfDefined(config, "DeploymentType", openzfs.DeploymentType);
35328
+ putIfDefined(config, "AutomaticBackupRetentionDays", openzfs.AutomaticBackupRetentionDays);
35329
+ putIfDefined(config, "CopyTagsToBackups", openzfs.CopyTagsToBackups);
35330
+ putIfDefined(config, "CopyTagsToVolumes", openzfs.CopyTagsToVolumes);
35331
+ putIfDefined(config, "DailyAutomaticBackupStartTime", openzfs.DailyAutomaticBackupStartTime);
35332
+ putIfDefined(config, "WeeklyMaintenanceStartTime", openzfs.WeeklyMaintenanceStartTime);
35333
+ putIfDefined(config, "ThroughputCapacity", openzfs.ThroughputCapacity);
35334
+ putIfDefined(config, "PreferredSubnetId", openzfs.PreferredSubnetId);
35335
+ putIfDefined(config, "EndpointIpAddressRange", openzfs.EndpointIpAddressRange);
35336
+ putIfDefined(config, "RouteTableIds", openzfs.RouteTableIds ? [...openzfs.RouteTableIds] : void 0);
35337
+ putIfDefined(config, "EndpointIpv6AddressRange", openzfs.EndpointIpv6AddressRange);
35338
+ const diskIops = this.readDiskIopsConfiguration(openzfs.DiskIopsConfiguration);
35339
+ if (diskIops) config["DiskIopsConfiguration"] = diskIops;
35340
+ if (openzfs.ReadCacheConfiguration) {
35341
+ const readCache = {};
35342
+ putIfDefined(readCache, "SizingMode", openzfs.ReadCacheConfiguration.SizingMode);
35343
+ putIfDefined(readCache, "SizeGiB", openzfs.ReadCacheConfiguration.SizeGiB);
35344
+ if (Object.keys(readCache).length > 0) config["ReadCacheConfiguration"] = readCache;
35345
+ }
35346
+ return config;
35347
+ }
35348
+ /** Shared `DiskIopsConfiguration` reverse-mapper (Windows / ONTAP / OpenZFS). */
35349
+ readDiskIopsConfiguration(diskIops) {
35350
+ if (!diskIops) return void 0;
35351
+ const out = {};
35352
+ putIfDefined(out, "Mode", diskIops.Mode);
35353
+ putIfDefined(out, "Iops", diskIops.Iops);
35354
+ return Object.keys(out).length > 0 ? out : void 0;
35355
+ }
35226
35356
  /**
35227
35357
  * State property paths this provider cannot read back from AWS:
35228
35358
  * - `SecurityGroupIds` — `DescribeFileSystems` returns network
35229
35359
  * interface ids, never the original security group list.
35230
35360
  * - `BackupId` — creation-source input, not surfaced on the deployed
35231
35361
  * file system.
35232
- * - `WindowsConfiguration` / `OntapConfiguration` / `OpenZFSConfiguration`
35233
- * `readCurrentState` maps only the Lustre block back to CFn shape
35234
- * today, so drift on the non-Lustre variant blocks is not yet computed;
35235
- * marking them unknown avoids a guaranteed false positive on every run
35236
- * (variant-config drift is a follow-up). Only the block matching the
35237
- * file system's type is ever present in state, so listing all three is
35238
- * harmless.
35362
+ * - `WindowsConfiguration.SelfManagedActiveDirectoryConfiguration.Password`
35363
+ * / `OntapConfiguration.FsxAdminPassword` write-only credentials; the
35364
+ * API never echoes them back.
35365
+ * - `OpenZFSConfiguration.RootVolumeConfiguration` configured on the
35366
+ * root VOLUME, not the file system; `DescribeFileSystems` returns only
35367
+ * `RootVolumeId`, so reading it back would need a separate
35368
+ * `DescribeVolumes` call (out of scope here).
35369
+ *
35370
+ * The whole-block `WindowsConfiguration` / `OntapConfiguration` /
35371
+ * `OpenZFSConfiguration` entries are gone as of the variant reverse-mappers
35372
+ * — only the individually-unreadable leaves above stay unknown.
35239
35373
  */
35240
35374
  getDriftUnknownPaths(resourceType) {
35241
35375
  if (resourceType !== "AWS::FSx::FileSystem") return [];
35242
35376
  return [
35243
35377
  "SecurityGroupIds",
35244
35378
  "BackupId",
35245
- "WindowsConfiguration",
35246
- "OntapConfiguration",
35247
- "OpenZFSConfiguration"
35379
+ "WindowsConfiguration.SelfManagedActiveDirectoryConfiguration.Password",
35380
+ "OntapConfiguration.FsxAdminPassword",
35381
+ "OpenZFSConfiguration.RootVolumeConfiguration"
35248
35382
  ];
35249
35383
  }
35250
35384
  /**
@@ -35252,7 +35386,11 @@ var FSxFileSystemProvider = class {
35252
35386
  * via `DescribeFileSystems`. Lustre data-repository fields (`ImportPath`
35253
35387
  * / `ExportPath` / `AutoImportPolicy` / `ImportedFileChunkSize`) are
35254
35388
  * mapped back from the nested `DataRepositoryConfiguration` the API
35255
- * returns. Returns `undefined` when the file system is gone.
35389
+ * returns. The Windows / ONTAP / OpenZFS variant blocks are reverse-mapped
35390
+ * by their respective `read*Configuration` helpers; the few inputs AWS
35391
+ * never returns stay listed in {@link getDriftUnknownPaths}. At most one
35392
+ * variant block is ever present (they key off `FileSystemType`).
35393
+ * Returns `undefined` when the file system is gone.
35256
35394
  */
35257
35395
  async readCurrentState(physicalId, _logicalId, resourceType) {
35258
35396
  if (resourceType !== "AWS::FSx::FileSystem") return void 0;
@@ -35265,47 +35403,59 @@ var FSxFileSystemProvider = class {
35265
35403
  }
35266
35404
  if (!fs) return void 0;
35267
35405
  const result = {};
35268
- if (fs.FileSystemType !== void 0) result["FileSystemType"] = fs.FileSystemType;
35269
- if (fs.StorageCapacity !== void 0) result["StorageCapacity"] = fs.StorageCapacity;
35270
- if (fs.StorageType !== void 0) result["StorageType"] = fs.StorageType;
35271
- if (fs.SubnetIds !== void 0) result["SubnetIds"] = [...fs.SubnetIds];
35272
- if (fs.KmsKeyId !== void 0) result["KmsKeyId"] = fs.KmsKeyId;
35273
- if (fs.FileSystemTypeVersion !== void 0) result["FileSystemTypeVersion"] = fs.FileSystemTypeVersion;
35274
- if (fs.NetworkType !== void 0) result["NetworkType"] = fs.NetworkType;
35406
+ putIfDefined(result, "FileSystemType", fs.FileSystemType);
35407
+ putIfDefined(result, "StorageCapacity", fs.StorageCapacity);
35408
+ putIfDefined(result, "StorageType", fs.StorageType);
35409
+ putIfDefined(result, "SubnetIds", fs.SubnetIds ? [...fs.SubnetIds] : void 0);
35410
+ putIfDefined(result, "KmsKeyId", fs.KmsKeyId);
35411
+ putIfDefined(result, "FileSystemTypeVersion", fs.FileSystemTypeVersion);
35412
+ putIfDefined(result, "NetworkType", fs.NetworkType);
35275
35413
  const lustre = fs.LustreConfiguration;
35276
35414
  if (lustre) {
35277
35415
  const config = {};
35278
- if (lustre.WeeklyMaintenanceStartTime !== void 0) config["WeeklyMaintenanceStartTime"] = lustre.WeeklyMaintenanceStartTime;
35279
- if (lustre.DeploymentType !== void 0) config["DeploymentType"] = lustre.DeploymentType;
35280
- if (lustre.PerUnitStorageThroughput !== void 0) config["PerUnitStorageThroughput"] = lustre.PerUnitStorageThroughput;
35281
- if (lustre.DailyAutomaticBackupStartTime !== void 0) config["DailyAutomaticBackupStartTime"] = lustre.DailyAutomaticBackupStartTime;
35282
- if (lustre.AutomaticBackupRetentionDays !== void 0) config["AutomaticBackupRetentionDays"] = lustre.AutomaticBackupRetentionDays;
35283
- if (lustre.CopyTagsToBackups !== void 0) config["CopyTagsToBackups"] = lustre.CopyTagsToBackups;
35284
- if (lustre.DriveCacheType !== void 0) config["DriveCacheType"] = lustre.DriveCacheType;
35285
- if (lustre.DataCompressionType !== void 0) config["DataCompressionType"] = lustre.DataCompressionType;
35286
- if (lustre.EfaEnabled !== void 0) config["EfaEnabled"] = lustre.EfaEnabled;
35287
- if (lustre.ThroughputCapacity !== void 0) config["ThroughputCapacity"] = lustre.ThroughputCapacity;
35416
+ putIfDefined(config, "WeeklyMaintenanceStartTime", lustre.WeeklyMaintenanceStartTime);
35417
+ putIfDefined(config, "DeploymentType", lustre.DeploymentType);
35418
+ putIfDefined(config, "PerUnitStorageThroughput", lustre.PerUnitStorageThroughput);
35419
+ putIfDefined(config, "DailyAutomaticBackupStartTime", lustre.DailyAutomaticBackupStartTime);
35420
+ putIfDefined(config, "AutomaticBackupRetentionDays", lustre.AutomaticBackupRetentionDays);
35421
+ putIfDefined(config, "CopyTagsToBackups", lustre.CopyTagsToBackups);
35422
+ putIfDefined(config, "DriveCacheType", lustre.DriveCacheType);
35423
+ putIfDefined(config, "DataCompressionType", lustre.DataCompressionType);
35424
+ putIfDefined(config, "EfaEnabled", lustre.EfaEnabled);
35425
+ putIfDefined(config, "ThroughputCapacity", lustre.ThroughputCapacity);
35288
35426
  if (lustre.MetadataConfiguration) {
35289
35427
  const metadata = {};
35290
- if (lustre.MetadataConfiguration.Mode !== void 0) metadata["Mode"] = lustre.MetadataConfiguration.Mode;
35291
- if (lustre.MetadataConfiguration.Iops !== void 0) metadata["Iops"] = lustre.MetadataConfiguration.Iops;
35428
+ putIfDefined(metadata, "Mode", lustre.MetadataConfiguration.Mode);
35429
+ putIfDefined(metadata, "Iops", lustre.MetadataConfiguration.Iops);
35292
35430
  if (Object.keys(metadata).length > 0) config["MetadataConfiguration"] = metadata;
35293
35431
  }
35294
35432
  if (lustre.DataReadCacheConfiguration) {
35295
35433
  const readCache = {};
35296
- if (lustre.DataReadCacheConfiguration.SizingMode !== void 0) readCache["SizingMode"] = lustre.DataReadCacheConfiguration.SizingMode;
35297
- if (lustre.DataReadCacheConfiguration.SizeGiB !== void 0) readCache["SizeGiB"] = lustre.DataReadCacheConfiguration.SizeGiB;
35434
+ putIfDefined(readCache, "SizingMode", lustre.DataReadCacheConfiguration.SizingMode);
35435
+ putIfDefined(readCache, "SizeGiB", lustre.DataReadCacheConfiguration.SizeGiB);
35298
35436
  if (Object.keys(readCache).length > 0) config["DataReadCacheConfiguration"] = readCache;
35299
35437
  }
35300
35438
  const dataRepo = lustre.DataRepositoryConfiguration;
35301
35439
  if (dataRepo) {
35302
- if (dataRepo.ImportPath !== void 0) config["ImportPath"] = dataRepo.ImportPath;
35303
- if (dataRepo.ExportPath !== void 0) config["ExportPath"] = dataRepo.ExportPath;
35304
- if (dataRepo.AutoImportPolicy !== void 0) config["AutoImportPolicy"] = dataRepo.AutoImportPolicy;
35305
- if (dataRepo.ImportedFileChunkSize !== void 0) config["ImportedFileChunkSize"] = dataRepo.ImportedFileChunkSize;
35440
+ putIfDefined(config, "ImportPath", dataRepo.ImportPath);
35441
+ putIfDefined(config, "ExportPath", dataRepo.ExportPath);
35442
+ putIfDefined(config, "AutoImportPolicy", dataRepo.AutoImportPolicy);
35443
+ putIfDefined(config, "ImportedFileChunkSize", dataRepo.ImportedFileChunkSize);
35306
35444
  }
35307
35445
  if (Object.keys(config).length > 0) result["LustreConfiguration"] = config;
35308
35446
  }
35447
+ if (fs.WindowsConfiguration) {
35448
+ const config = this.readWindowsConfiguration(fs.WindowsConfiguration);
35449
+ if (Object.keys(config).length > 0) result["WindowsConfiguration"] = config;
35450
+ }
35451
+ if (fs.OntapConfiguration) {
35452
+ const config = this.readOntapConfiguration(fs.OntapConfiguration);
35453
+ if (Object.keys(config).length > 0) result["OntapConfiguration"] = config;
35454
+ }
35455
+ if (fs.OpenZFSConfiguration) {
35456
+ const config = this.readOpenZFSConfiguration(fs.OpenZFSConfiguration);
35457
+ if (Object.keys(config).length > 0) result["OpenZFSConfiguration"] = config;
35458
+ }
35309
35459
  result["Tags"] = normalizeAwsTagsToCfn(fs.Tags);
35310
35460
  return result;
35311
35461
  }
@@ -61608,7 +61758,7 @@ function reorderArgs(argv) {
61608
61758
  async function main() {
61609
61759
  installPipeCloseHandler();
61610
61760
  const program = new Command();
61611
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.250.0");
61761
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.251.0");
61612
61762
  program.addCommand(createBootstrapCommand());
61613
61763
  program.addCommand(createSynthCommand());
61614
61764
  program.addCommand(createListCommand());