@microsoft/terraform-cdk-constructs 2.2.0 → 2.5.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.
Files changed (259) hide show
  1. package/.jsii +64029 -35477
  2. package/API.md +89314 -49618
  3. package/README.md +15 -0
  4. package/cdktf.json +1 -1
  5. package/docs/azure-api-version-update-pipeline.md +271 -0
  6. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  7. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  8. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  9. package/lib/azure-applicationinsights/index.d.ts +7 -0
  10. package/lib/azure-applicationinsights/index.js +24 -0
  11. package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
  12. package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
  13. package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
  14. package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
  15. package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
  16. package/lib/azure-applicationinsights/lib/index.js +22 -0
  17. package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
  18. package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
  19. package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
  20. package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
  21. package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +1 -1
  22. package/lib/azure-containerapps/lib/container-app-environment-schemas.js +2 -2
  23. package/lib/azure-containerapps/lib/container-app-environment.js +1 -1
  24. package/lib/azure-containerapps/lib/container-app-schemas.d.ts +1 -1
  25. package/lib/azure-containerapps/lib/container-app-schemas.js +2 -2
  26. package/lib/azure-containerapps/lib/container-app.js +1 -1
  27. package/lib/azure-containerapps/lib/container-apps-job-schemas.d.ts +8 -0
  28. package/lib/azure-containerapps/lib/container-apps-job-schemas.js +179 -0
  29. package/lib/azure-containerapps/lib/container-apps-job.d.ts +128 -0
  30. package/lib/azure-containerapps/lib/container-apps-job.js +81 -0
  31. package/lib/azure-containerapps/lib/index.d.ts +2 -0
  32. package/lib/azure-containerapps/lib/index.js +3 -1
  33. package/lib/azure-containerapps/test/container-apps-job.integ.d.ts +6 -0
  34. package/lib/azure-containerapps/test/container-apps-job.integ.js +95 -0
  35. package/lib/azure-containerapps/test/container-apps-job.spec.d.ts +1 -0
  36. package/lib/azure-containerapps/test/container-apps-job.spec.js +261 -0
  37. package/lib/azure-containerregistry/index.d.ts +1 -0
  38. package/lib/azure-containerregistry/index.js +18 -0
  39. package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
  40. package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
  41. package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
  42. package/lib/azure-containerregistry/lib/container-registry.js +217 -0
  43. package/lib/azure-containerregistry/lib/index.d.ts +2 -0
  44. package/lib/azure-containerregistry/lib/index.js +19 -0
  45. package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
  46. package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
  47. package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
  48. package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
  49. package/lib/azure-cosmosdb/index.d.ts +1 -0
  50. package/lib/azure-cosmosdb/index.js +18 -0
  51. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
  52. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
  53. package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
  54. package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
  55. package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
  56. package/lib/azure-cosmosdb/lib/index.js +19 -0
  57. package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
  58. package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
  59. package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
  60. package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
  61. package/lib/azure-dataexplorer/index.d.ts +1 -0
  62. package/lib/azure-dataexplorer/index.js +18 -0
  63. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.d.ts +5 -0
  64. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.js +131 -0
  65. package/lib/azure-dataexplorer/lib/data-explorer-cluster.d.ts +54 -0
  66. package/lib/azure-dataexplorer/lib/data-explorer-cluster.js +91 -0
  67. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.d.ts +5 -0
  68. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.js +78 -0
  69. package/lib/azure-dataexplorer/lib/data-explorer-database.d.ts +24 -0
  70. package/lib/azure-dataexplorer/lib/data-explorer-database.js +68 -0
  71. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.d.ts +5 -0
  72. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.js +94 -0
  73. package/lib/azure-dataexplorer/lib/data-explorer-table.d.ts +25 -0
  74. package/lib/azure-dataexplorer/lib/data-explorer-table.js +62 -0
  75. package/lib/azure-dataexplorer/lib/index.d.ts +6 -0
  76. package/lib/azure-dataexplorer/lib/index.js +23 -0
  77. package/lib/azure-dataexplorer/test/data-explorer.integ.d.ts +1 -0
  78. package/lib/azure-dataexplorer/test/data-explorer.integ.js +78 -0
  79. package/lib/azure-dataexplorer/test/data-explorer.spec.d.ts +1 -0
  80. package/lib/azure-dataexplorer/test/data-explorer.spec.js +248 -0
  81. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  82. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  83. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  84. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  85. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  86. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  87. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  88. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  89. package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
  90. package/lib/azure-eventgrideventsubscription/index.d.ts +1 -0
  91. package/lib/azure-eventgrideventsubscription/index.js +18 -0
  92. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.d.ts +5 -0
  93. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.js +151 -0
  94. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.d.ts +59 -0
  95. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.js +67 -0
  96. package/lib/azure-eventgrideventsubscription/lib/index.d.ts +2 -0
  97. package/lib/azure-eventgrideventsubscription/lib/index.js +19 -0
  98. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.d.ts +1 -0
  99. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.js +100 -0
  100. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.d.ts +1 -0
  101. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.js +242 -0
  102. package/lib/azure-eventgridsystemtopic/index.d.ts +1 -0
  103. package/lib/azure-eventgridsystemtopic/index.js +18 -0
  104. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.d.ts +5 -0
  105. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.js +164 -0
  106. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.d.ts +46 -0
  107. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.js +68 -0
  108. package/lib/azure-eventgridsystemtopic/lib/index.d.ts +2 -0
  109. package/lib/azure-eventgridsystemtopic/lib/index.js +19 -0
  110. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.d.ts +1 -0
  111. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.js +64 -0
  112. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.d.ts +1 -0
  113. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.js +241 -0
  114. package/lib/azure-eventhub/index.d.ts +7 -0
  115. package/lib/azure-eventhub/index.js +24 -0
  116. package/lib/azure-eventhub/lib/event-hub-namespace.d.ts +204 -0
  117. package/lib/azure-eventhub/lib/event-hub-namespace.js +178 -0
  118. package/lib/azure-eventhub/lib/event-hub-schemas.d.ts +63 -0
  119. package/lib/azure-eventhub/lib/event-hub-schemas.js +370 -0
  120. package/lib/azure-eventhub/lib/event-hub.d.ts +153 -0
  121. package/lib/azure-eventhub/lib/event-hub.js +171 -0
  122. package/lib/azure-eventhub/lib/index.d.ts +6 -0
  123. package/lib/azure-eventhub/lib/index.js +23 -0
  124. package/lib/azure-eventhub/test/event-hub.integ.d.ts +9 -0
  125. package/lib/azure-eventhub/test/event-hub.integ.js +113 -0
  126. package/lib/azure-eventhub/test/event-hub.spec.d.ts +8 -0
  127. package/lib/azure-eventhub/test/event-hub.spec.js +438 -0
  128. package/lib/azure-functionapp/index.d.ts +1 -0
  129. package/lib/azure-functionapp/index.js +18 -0
  130. package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
  131. package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
  132. package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
  133. package/lib/azure-functionapp/lib/function-app.js +223 -0
  134. package/lib/azure-functionapp/lib/index.d.ts +2 -0
  135. package/lib/azure-functionapp/lib/index.js +19 -0
  136. package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
  137. package/lib/azure-functionapp/test/function-app.integ.js +134 -0
  138. package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
  139. package/lib/azure-functionapp/test/function-app.spec.js +566 -0
  140. package/lib/azure-keyvault/index.d.ts +1 -0
  141. package/lib/azure-keyvault/index.js +18 -0
  142. package/lib/azure-keyvault/lib/index.d.ts +2 -0
  143. package/lib/azure-keyvault/lib/index.js +19 -0
  144. package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
  145. package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
  146. package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
  147. package/lib/azure-keyvault/lib/key-vault.js +243 -0
  148. package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
  149. package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
  150. package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
  151. package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
  152. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +1 -1
  153. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  154. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  155. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  156. package/lib/azure-networkwatcher/lib/network-watcher.js +1 -1
  157. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  158. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  159. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +1 -1
  160. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  161. package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
  162. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  163. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  164. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  165. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  166. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  167. package/lib/azure-sreagent/index.d.ts +1 -0
  168. package/lib/azure-sreagent/index.js +18 -0
  169. package/lib/azure-sreagent/lib/index.d.ts +2 -0
  170. package/lib/azure-sreagent/lib/index.js +19 -0
  171. package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
  172. package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
  173. package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
  174. package/lib/azure-sreagent/lib/sre-agent.js +217 -0
  175. package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
  176. package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
  177. package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
  178. package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
  179. package/lib/azure-staticwebapp/index.d.ts +1 -0
  180. package/lib/azure-staticwebapp/index.js +18 -0
  181. package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
  182. package/lib/azure-staticwebapp/lib/index.js +19 -0
  183. package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
  184. package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
  185. package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
  186. package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
  187. package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
  188. package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
  189. package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
  190. package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
  191. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  192. package/lib/azure-storageblobcontainer/index.d.ts +1 -0
  193. package/lib/azure-storageblobcontainer/index.js +18 -0
  194. package/lib/azure-storageblobcontainer/lib/index.d.ts +2 -0
  195. package/lib/azure-storageblobcontainer/lib/index.js +19 -0
  196. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.d.ts +5 -0
  197. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.js +108 -0
  198. package/lib/azure-storageblobcontainer/lib/storage-blob-container.d.ts +37 -0
  199. package/lib/azure-storageblobcontainer/lib/storage-blob-container.js +63 -0
  200. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.d.ts +1 -0
  201. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.js +60 -0
  202. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.d.ts +1 -0
  203. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.js +172 -0
  204. package/lib/azure-subnet/lib/subnet.js +1 -1
  205. package/lib/azure-userassignedidentity/index.d.ts +1 -0
  206. package/lib/azure-userassignedidentity/index.js +18 -0
  207. package/lib/azure-userassignedidentity/lib/index.d.ts +2 -0
  208. package/lib/azure-userassignedidentity/lib/index.js +19 -0
  209. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.d.ts +8 -0
  210. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.js +107 -0
  211. package/lib/azure-userassignedidentity/lib/user-assigned-identity.d.ts +37 -0
  212. package/lib/azure-userassignedidentity/lib/user-assigned-identity.js +85 -0
  213. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.d.ts +1 -0
  214. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.js +64 -0
  215. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.d.ts +1 -0
  216. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.js +241 -0
  217. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  218. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  219. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
  220. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  221. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  222. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  223. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  224. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  225. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  226. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  227. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  228. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  229. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  230. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +66 -1
  231. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +141 -2
  232. package/lib/azure-vmss/lib/vmss-schemas.d.ts +195 -0
  233. package/lib/azure-vmss/lib/vmss-schemas.js +33 -1
  234. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +463 -1
  235. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  236. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +4 -4
  237. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +7 -7
  238. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +2 -2
  239. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +2 -2
  240. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +2 -2
  241. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +2 -2
  242. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +3 -3
  243. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +7 -7
  244. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +5 -5
  245. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +5 -5
  246. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  247. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  248. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  249. package/lib/index.d.ts +39 -0
  250. package/lib/index.js +41 -2
  251. package/lib/testing/index.js +20 -3
  252. package/lib/testing/lib/cleanup.js +1 -1
  253. package/lib/testing/lib/metadata.js +12 -4
  254. package/lib/testing/lib/naming.js +57 -1
  255. package/package.json +1 -1
  256. package/scripts/azure-version-updater/create-issue.ts +189 -0
  257. package/scripts/azure-version-updater/discover.ts +382 -0
  258. package/scripts/azure-version-updater/spec-mapping.ts +164 -0
  259. package/scripts/azure-version-updater/tsconfig.json +11 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cdktn_1 = require("cdktn");
4
+ require("cdktn/lib/testing/adapters/jest");
5
+ const azure_resourcegroup_1 = require("../../azure-resourcegroup");
6
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
7
+ const testing_1 = require("../../testing");
8
+ const metadata_1 = require("../../testing/lib/metadata");
9
+ const user_assigned_identity_1 = require("../lib/user-assigned-identity");
10
+ const testMetadata = new metadata_1.TestRunMetadata("user-assigned-identity-integration", {
11
+ maxAgeHours: 4,
12
+ });
13
+ class UserAssignedIdentityExampleStack extends testing_1.BaseTestStack {
14
+ constructor(scope, id) {
15
+ super(scope, id, {
16
+ testRunOptions: {
17
+ maxAgeHours: testMetadata.maxAgeHours,
18
+ autoCleanup: testMetadata.autoCleanup,
19
+ cleanupPolicy: testMetadata.cleanupPolicy,
20
+ },
21
+ });
22
+ new provider_1.AzapiProvider(this, "azapi", {});
23
+ const resourceGroupName = this.generateResourceName("Microsoft.Resources/resourceGroups", "identityrg");
24
+ const basicIdentityName = this.generateResourceName("Microsoft.ManagedIdentity/userAssignedIdentities", "basic");
25
+ const versionedIdentityName = this.generateResourceName("Microsoft.ManagedIdentity/userAssignedIdentities", "versioned");
26
+ const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "identity-rg", {
27
+ name: resourceGroupName,
28
+ location: "eastus",
29
+ tags: {
30
+ ...this.systemTags(),
31
+ example: "identity-rg",
32
+ },
33
+ });
34
+ new user_assigned_identity_1.UserAssignedIdentity(this, "basic-identity", {
35
+ name: basicIdentityName,
36
+ location: "eastus",
37
+ resourceGroupId: resourceGroup.id,
38
+ tags: {
39
+ ...this.systemTags(),
40
+ example: "basic",
41
+ },
42
+ });
43
+ new user_assigned_identity_1.UserAssignedIdentity(this, "versioned-identity", {
44
+ name: versionedIdentityName,
45
+ location: "eastus2",
46
+ resourceGroupId: resourceGroup.id,
47
+ apiVersion: "2023-01-31",
48
+ tags: {
49
+ ...this.systemTags(),
50
+ example: "versioned",
51
+ tier: "production",
52
+ },
53
+ });
54
+ }
55
+ }
56
+ describe("User Assigned Identity Integration Test", () => {
57
+ it("should deploy, validate idempotency, and cleanup user assigned identity resources", () => {
58
+ const app = cdktn_1.Testing.app();
59
+ const stack = new UserAssignedIdentityExampleStack(app, "test-user-assigned-identity");
60
+ const synthesized = cdktn_1.Testing.fullSynth(stack);
61
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
62
+ }, 600000);
63
+ });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hc3NpZ25lZC1pZGVudGl0eS5pbnRlZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS11c2VyYXNzaWduZWRpZGVudGl0eS90ZXN0L3VzZXItYXNzaWduZWQtaWRlbnRpdHkuaW50ZWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBZ0M7QUFFaEMsMkNBQXlDO0FBQ3pDLG1FQUEwRDtBQUMxRCxrRkFBb0Y7QUFDcEYsMkNBQTZFO0FBQzdFLHlEQUE2RDtBQUM3RCwwRUFBcUU7QUFFckUsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBZSxDQUFDLG9DQUFvQyxFQUFFO0lBQzdFLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxnQ0FBaUMsU0FBUSx1QkFBYTtJQUMxRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGNBQWMsRUFBRTtnQkFDZCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ2pELG9DQUFvQyxFQUNwQyxZQUFZLENBQ2IsQ0FBQztRQUNGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUNqRCxrREFBa0QsRUFDbEQsT0FBTyxDQUNSLENBQUM7UUFDRixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDckQsa0RBQWtELEVBQ2xELFdBQVcsQ0FDWixDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQ0FBYSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDM0QsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUU7Z0JBQ0osR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixPQUFPLEVBQUUsYUFBYTthQUN2QjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksNkNBQW9CLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQy9DLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSw2Q0FBb0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDbkQsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixRQUFRLEVBQUUsU0FBUztZQUNuQixlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsVUFBVSxFQUFFLFlBQVk7WUFDeEIsSUFBSSxFQUFFO2dCQUNKLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLElBQUksRUFBRSxZQUFZO2FBQ25CO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLENBQUMsbUZBQW1GLEVBQUUsR0FBRyxFQUFFO1FBQzNGLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLGdDQUFnQyxDQUNoRCxHQUFHLEVBQ0gsNkJBQTZCLENBQzlCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLElBQUEsdUNBQTZCLEVBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IFwiY2RrdG4vbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCIuLi8uLi9henVyZS1yZXNvdXJjZWdyb3VwXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgQmFzZVRlc3RTdGFjaywgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgVGVzdFJ1bk1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmcvbGliL21ldGFkYXRhXCI7XG5pbXBvcnQgeyBVc2VyQXNzaWduZWRJZGVudGl0eSB9IGZyb20gXCIuLi9saWIvdXNlci1hc3NpZ25lZC1pZGVudGl0eVwiO1xuXG5jb25zdCB0ZXN0TWV0YWRhdGEgPSBuZXcgVGVzdFJ1bk1ldGFkYXRhKFwidXNlci1hc3NpZ25lZC1pZGVudGl0eS1pbnRlZ3JhdGlvblwiLCB7XG4gIG1heEFnZUhvdXJzOiA0LFxufSk7XG5cbmNsYXNzIFVzZXJBc3NpZ25lZElkZW50aXR5RXhhbXBsZVN0YWNrIGV4dGVuZHMgQmFzZVRlc3RTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlc3RSdW5PcHRpb25zOiB7XG4gICAgICAgIG1heEFnZUhvdXJzOiB0ZXN0TWV0YWRhdGEubWF4QWdlSG91cnMsXG4gICAgICAgIGF1dG9DbGVhbnVwOiB0ZXN0TWV0YWRhdGEuYXV0b0NsZWFudXAsXG4gICAgICAgIGNsZWFudXBQb2xpY3k6IHRlc3RNZXRhZGF0YS5jbGVhbnVwUG9saWN5LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgY29uc3QgcmVzb3VyY2VHcm91cE5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3Jlc291cmNlR3JvdXBzXCIsXG4gICAgICBcImlkZW50aXR5cmdcIixcbiAgICApO1xuICAgIGNvbnN0IGJhc2ljSWRlbnRpdHlOYW1lID0gdGhpcy5nZW5lcmF0ZVJlc291cmNlTmFtZShcbiAgICAgIFwiTWljcm9zb2Z0Lk1hbmFnZWRJZGVudGl0eS91c2VyQXNzaWduZWRJZGVudGl0aWVzXCIsXG4gICAgICBcImJhc2ljXCIsXG4gICAgKTtcbiAgICBjb25zdCB2ZXJzaW9uZWRJZGVudGl0eU5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuTWFuYWdlZElkZW50aXR5L3VzZXJBc3NpZ25lZElkZW50aXRpZXNcIixcbiAgICAgIFwidmVyc2lvbmVkXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcImlkZW50aXR5LXJnXCIsIHtcbiAgICAgIG5hbWU6IHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImlkZW50aXR5LXJnXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHRoaXMsIFwiYmFzaWMtaWRlbnRpdHlcIiwge1xuICAgICAgbmFtZTogYmFzaWNJZGVudGl0eU5hbWUsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIGV4YW1wbGU6IFwiYmFzaWNcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkodGhpcywgXCJ2ZXJzaW9uZWQtaWRlbnRpdHlcIiwge1xuICAgICAgbmFtZTogdmVyc2lvbmVkSWRlbnRpdHlOYW1lLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzMlwiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTAxLTMxXCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcInZlcnNpb25lZFwiLFxuICAgICAgICB0aWVyOiBcInByb2R1Y3Rpb25cIixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZGVzY3JpYmUoXCJVc2VyIEFzc2lnbmVkIElkZW50aXR5IEludGVncmF0aW9uIFRlc3RcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBkZXBsb3ksIHZhbGlkYXRlIGlkZW1wb3RlbmN5LCBhbmQgY2xlYW51cCB1c2VyIGFzc2lnbmVkIGlkZW50aXR5IHJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eUV4YW1wbGVTdGFjayhcbiAgICAgIGFwcCxcbiAgICAgIFwidGVzdC11c2VyLWFzc2lnbmVkLWlkZW50aXR5XCIsXG4gICAgKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95KHN5bnRoZXNpemVkLCB7IHZlcmlmeUNsZWFudXA6IHRydWUgfSk7XG4gIH0sIDYwMDAwMCk7XG59KTtcbiJdfQ==
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cdktn_1 = require("cdktn");
4
+ const cdktn = require("cdktn");
5
+ const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
6
+ const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
7
+ const user_assigned_identity_1 = require("../lib/user-assigned-identity");
8
+ const user_assigned_identity_schemas_1 = require("../lib/user-assigned-identity-schemas");
9
+ describe("UserAssignedIdentity", () => {
10
+ let app;
11
+ let stack;
12
+ let manager;
13
+ beforeEach(() => {
14
+ app = cdktn_1.Testing.app();
15
+ stack = new cdktn.TerraformStack(app, "TestStack");
16
+ manager = api_version_manager_1.ApiVersionManager.instance();
17
+ try {
18
+ manager.registerResourceType(user_assigned_identity_schemas_1.USER_ASSIGNED_IDENTITY_TYPE, user_assigned_identity_schemas_1.ALL_USER_ASSIGNED_IDENTITY_VERSIONS);
19
+ }
20
+ catch (error) {
21
+ // Ignore if already registered
22
+ }
23
+ });
24
+ describe("Constructor and Basic Properties", () => {
25
+ it("should create identity with automatic latest version resolution", () => {
26
+ const props = {
27
+ name: "test-identity",
28
+ location: "eastus",
29
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
30
+ };
31
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", props);
32
+ expect(identity).toBeInstanceOf(user_assigned_identity_1.UserAssignedIdentity);
33
+ expect(identity.resolvedApiVersion).toBe("2023-01-31");
34
+ expect(identity.props).toBe(props);
35
+ expect(identity.name).toBe("test-identity");
36
+ expect(identity.location).toBe("eastus");
37
+ });
38
+ it("should create identity with explicit version pinning", () => {
39
+ const props = {
40
+ name: "test-identity-pinned",
41
+ location: "westus",
42
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
43
+ apiVersion: "2023-01-31",
44
+ tags: { environment: "test" },
45
+ };
46
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", props);
47
+ expect(identity.resolvedApiVersion).toBe("2023-01-31");
48
+ expect(identity.tags).toEqual({ environment: "test" });
49
+ });
50
+ it("should create identity with all optional properties", () => {
51
+ const props = {
52
+ name: "test-identity-full",
53
+ location: "centralus",
54
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
55
+ tags: {
56
+ environment: "production",
57
+ project: "cdktf-constructs",
58
+ owner: "team@company.com",
59
+ },
60
+ enableValidation: true,
61
+ enableMigrationAnalysis: true,
62
+ enableTransformation: true,
63
+ };
64
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", props);
65
+ expect(identity.props.tags).toEqual(props.tags);
66
+ expect(identity.props.resourceGroupId).toBe(props.resourceGroupId);
67
+ });
68
+ it("should use default name when name is not provided", () => {
69
+ const props = {
70
+ location: "eastus",
71
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
72
+ };
73
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", props);
74
+ expect(identity.name).toBe("TestIdentity");
75
+ });
76
+ it("should require location to be provided", () => {
77
+ const props = {
78
+ name: "test-identity",
79
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
80
+ };
81
+ expect(() => {
82
+ new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", props);
83
+ }).toThrow("Location is required for Microsoft.ManagedIdentity/userAssignedIdentities");
84
+ });
85
+ });
86
+ describe("Framework Integration", () => {
87
+ it("should resolve latest API version automatically", () => {
88
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
89
+ name: "test-identity",
90
+ location: "eastus",
91
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
92
+ });
93
+ expect(identity.resolvedApiVersion).toBe("2023-01-31");
94
+ expect(identity.latestVersion()).toBe("2023-01-31");
95
+ });
96
+ it("should support all registered API versions", () => {
97
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
98
+ name: "test-identity",
99
+ location: "eastus",
100
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
101
+ });
102
+ const supportedVersions = identity.supportedVersions();
103
+ expect(supportedVersions).toContain("2023-01-31");
104
+ });
105
+ it("should validate version support", () => {
106
+ expect(() => {
107
+ new user_assigned_identity_1.UserAssignedIdentity(stack, "ValidVersion", {
108
+ name: "test-identity",
109
+ location: "eastus",
110
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
111
+ apiVersion: "2023-01-31",
112
+ });
113
+ }).not.toThrow();
114
+ expect(() => {
115
+ new user_assigned_identity_1.UserAssignedIdentity(stack, "InvalidVersion", {
116
+ name: "test-identity",
117
+ location: "eastus",
118
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
119
+ apiVersion: "2024-01-01",
120
+ });
121
+ }).toThrow("Unsupported API version '2024-01-01'");
122
+ });
123
+ it("should load correct schema for resolved version", () => {
124
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
125
+ name: "test-identity",
126
+ location: "eastus",
127
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
128
+ apiVersion: "2023-01-31",
129
+ });
130
+ expect(identity.schema).toBeDefined();
131
+ expect(identity.schema.resourceType).toBe(user_assigned_identity_schemas_1.USER_ASSIGNED_IDENTITY_TYPE);
132
+ expect(identity.schema.version).toBe("2023-01-31");
133
+ expect(identity.schema.properties).toBeDefined();
134
+ });
135
+ it("should load version configuration correctly", () => {
136
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
137
+ name: "test-identity",
138
+ location: "eastus",
139
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
140
+ });
141
+ expect(identity.versionConfig).toBeDefined();
142
+ expect(identity.versionConfig.version).toBe("2023-01-31");
143
+ expect(identity.versionConfig.supportLevel).toBe(version_interfaces_1.VersionSupportLevel.ACTIVE);
144
+ });
145
+ });
146
+ describe("Property Validation", () => {
147
+ it("should validate properties when validation is enabled", () => {
148
+ const props = {
149
+ name: "test-identity",
150
+ location: "eastus",
151
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
152
+ enableValidation: true,
153
+ };
154
+ expect(() => {
155
+ new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", props);
156
+ }).not.toThrow();
157
+ });
158
+ it("should skip validation when disabled", () => {
159
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
160
+ name: "test-identity",
161
+ location: "eastus",
162
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
163
+ enableValidation: false,
164
+ });
165
+ expect(identity).toBeDefined();
166
+ });
167
+ });
168
+ describe("Migration Analysis", () => {
169
+ it("should perform migration analysis", () => {
170
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
171
+ name: "test-identity",
172
+ location: "eastus",
173
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
174
+ apiVersion: "2023-01-31",
175
+ });
176
+ const analysis = identity.analyzeMigrationTo("2023-01-31");
177
+ expect(analysis).toBeDefined();
178
+ expect(analysis.fromVersion).toBe("2023-01-31");
179
+ expect(analysis.toVersion).toBe("2023-01-31");
180
+ expect(analysis.compatible).toBe(true);
181
+ });
182
+ });
183
+ describe("Resource Creation and Outputs", () => {
184
+ it("should create correct resource body", () => {
185
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
186
+ name: "test-identity",
187
+ location: "westus",
188
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
189
+ tags: { environment: "test" },
190
+ });
191
+ expect(identity).toBeDefined();
192
+ expect(identity.props.tags).toEqual({ environment: "test" });
193
+ expect(identity.props.resourceGroupId).toBe("/subscriptions/test-sub/resourceGroups/test-rg");
194
+ });
195
+ it("should create Terraform outputs", () => {
196
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(stack, "TestIdentity", {
197
+ name: "test-identity-outputs",
198
+ location: "eastus",
199
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
200
+ });
201
+ expect(identity.idOutput).toBeInstanceOf(cdktn.TerraformOutput);
202
+ expect(identity.locationOutput).toBeInstanceOf(cdktn.TerraformOutput);
203
+ expect(identity.nameOutput).toBeInstanceOf(cdktn.TerraformOutput);
204
+ expect(identity.tagsOutput).toBeInstanceOf(cdktn.TerraformOutput);
205
+ expect(identity.clientIdOutput).toBeInstanceOf(cdktn.TerraformOutput);
206
+ expect(identity.principalIdOutput).toBeInstanceOf(cdktn.TerraformOutput);
207
+ });
208
+ it("should synthesize to valid Terraform configuration", () => {
209
+ new user_assigned_identity_1.UserAssignedIdentity(stack, "SynthTest", {
210
+ name: "synth-test",
211
+ location: "eastus",
212
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
213
+ tags: { test: "synthesis" },
214
+ });
215
+ const synthesized = cdktn_1.Testing.synth(stack);
216
+ expect(synthesized).toBeDefined();
217
+ const stackConfig = JSON.parse(synthesized);
218
+ expect(stackConfig.resource).toBeDefined();
219
+ });
220
+ });
221
+ describe("Multiple Resources", () => {
222
+ it("should handle multiple identities in the same stack", () => {
223
+ const identity1 = new user_assigned_identity_1.UserAssignedIdentity(stack, "Identity1", {
224
+ name: "identity-1",
225
+ location: "eastus",
226
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
227
+ });
228
+ const identity2 = new user_assigned_identity_1.UserAssignedIdentity(stack, "Identity2", {
229
+ name: "identity-2",
230
+ location: "westus",
231
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
232
+ apiVersion: "2023-01-31",
233
+ });
234
+ expect(identity1.resolvedApiVersion).toBe("2023-01-31");
235
+ expect(identity2.resolvedApiVersion).toBe("2023-01-31");
236
+ const synthesized = cdktn_1.Testing.synth(stack);
237
+ expect(synthesized).toBeDefined();
238
+ });
239
+ });
240
+ });
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hc3NpZ25lZC1pZGVudGl0eS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXVzZXJhc3NpZ25lZGlkZW50aXR5L3Rlc3QvdXNlci1hc3NpZ25lZC1pZGVudGl0eS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQixrR0FBNkY7QUFDN0YsMkdBQXlHO0FBQ3pHLDBFQUd1QztBQUN2QywwRkFHK0M7QUFFL0MsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFDaEMsSUFBSSxPQUEwQixDQUFDO0lBRS9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2QyxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsb0JBQW9CLENBQzFCLDREQUEyQixFQUMzQixvRUFBbUMsQ0FDcEMsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsK0JBQStCO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsRUFBRSxDQUFDLGlFQUFpRSxFQUFFLEdBQUcsRUFBRTtZQUN6RSxNQUFNLEtBQUssR0FBOEI7Z0JBQ3ZDLElBQUksRUFBRSxlQUFlO2dCQUNyQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUFFLGdEQUFnRDthQUNsRSxDQUFDO1lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSw2Q0FBb0Is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RUFBRTtnQkFDN0QsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQUUsZ0RBQWdEO2dCQUNqRSxVQUFVLEVBQUUsWUFBWTthQUN6QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFeEQsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgVmVyc2lvblN1cHBvcnRMZXZlbCB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcbmltcG9ydCB7XG4gIFVzZXJBc3NpZ25lZElkZW50aXR5LFxuICBVc2VyQXNzaWduZWRJZGVudGl0eVByb3BzLFxufSBmcm9tIFwiLi4vbGliL3VzZXItYXNzaWduZWQtaWRlbnRpdHlcIjtcbmltcG9ydCB7XG4gIEFMTF9VU0VSX0FTU0lHTkVEX0lERU5USVRZX1ZFUlNJT05TLFxuICBVU0VSX0FTU0lHTkVEX0lERU5USVRZX1RZUEUsXG59IGZyb20gXCIuLi9saWIvdXNlci1hc3NpZ25lZC1pZGVudGl0eS1zY2hlbWFzXCI7XG5cbmRlc2NyaWJlKFwiVXNlckFzc2lnbmVkSWRlbnRpdHlcIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0bi5BcHA7XG4gIGxldCBzdGFjazogY2RrdG4uVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBBcGlWZXJzaW9uTWFuYWdlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RuLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJUZXN0U3RhY2tcIik7XG4gICAgbWFuYWdlciA9IEFwaVZlcnNpb25NYW5hZ2VyLmluc3RhbmNlKCk7XG5cbiAgICB0cnkge1xuICAgICAgbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShcbiAgICAgICAgVVNFUl9BU1NJR05FRF9JREVOVElUWV9UWVBFLFxuICAgICAgICBBTExfVVNFUl9BU1NJR05FRF9JREVOVElUWV9WRVJTSU9OUyxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIElnbm9yZSBpZiBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICB9XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ29uc3RydWN0b3IgYW5kIEJhc2ljIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBpZGVudGl0eSB3aXRoIGF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBVc2VyQXNzaWduZWRJZGVudGl0eVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtaWRlbnRpdHlcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpZGVudGl0eSA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShzdGFjaywgXCJUZXN0SWRlbnRpdHlcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QoaWRlbnRpdHkpLnRvQmVJbnN0YW5jZU9mKFVzZXJBc3NpZ25lZElkZW50aXR5KTtcbiAgICAgIGV4cGVjdChpZGVudGl0eS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTAxLTMxXCIpO1xuICAgICAgZXhwZWN0KGlkZW50aXR5LnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChpZGVudGl0eS5uYW1lKS50b0JlKFwidGVzdC1pZGVudGl0eVwiKTtcbiAgICAgIGV4cGVjdChpZGVudGl0eS5sb2NhdGlvbikudG9CZShcImVhc3R1c1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBpZGVudGl0eSB3aXRoIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVXNlckFzc2lnbmVkSWRlbnRpdHlQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWlkZW50aXR5LXBpbm5lZFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTAxLTMxXCIsXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpZGVudGl0eSA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShzdGFjaywgXCJUZXN0SWRlbnRpdHlcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QoaWRlbnRpdHkucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMy0wMS0zMVwiKTtcbiAgICAgIGV4cGVjdChpZGVudGl0eS50YWdzKS50b0VxdWFsKHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGlkZW50aXR5IHdpdGggYWxsIG9wdGlvbmFsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFVzZXJBc3NpZ25lZElkZW50aXR5UHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1pZGVudGl0eS1mdWxsXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImNlbnRyYWx1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC1zdWIvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiLFxuICAgICAgICAgIHByb2plY3Q6IFwiY2RrdGYtY29uc3RydWN0c1wiLFxuICAgICAgICAgIG93bmVyOiBcInRlYW1AY29tcGFueS5jb21cIixcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgICAgZW5hYmxlTWlncmF0aW9uQW5hbHlzaXM6IHRydWUsXG4gICAgICAgIGVuYWJsZVRyYW5zZm9ybWF0aW9uOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkoc3RhY2ssIFwiVGVzdElkZW50aXR5XCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGlkZW50aXR5LnByb3BzLnRhZ3MpLnRvRXF1YWwocHJvcHMudGFncyk7XG4gICAgICBleHBlY3QoaWRlbnRpdHkucHJvcHMucmVzb3VyY2VHcm91cElkKS50b0JlKHByb3BzLnJlc291cmNlR3JvdXBJZCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2UgZGVmYXVsdCBuYW1lIHdoZW4gbmFtZSBpcyBub3QgcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFVzZXJBc3NpZ25lZElkZW50aXR5UHJvcHMgPSB7XG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC1zdWIvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkoc3RhY2ssIFwiVGVzdElkZW50aXR5XCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGlkZW50aXR5Lm5hbWUpLnRvQmUoXCJUZXN0SWRlbnRpdHlcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIGxvY2F0aW9uIHRvIGJlIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBVc2VyQXNzaWduZWRJZGVudGl0eVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtaWRlbnRpdHlcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShzdGFjaywgXCJUZXN0SWRlbnRpdHlcIiwgcHJvcHMpO1xuICAgICAgfSkudG9UaHJvdyhcbiAgICAgICAgXCJMb2NhdGlvbiBpcyByZXF1aXJlZCBmb3IgTWljcm9zb2Z0Lk1hbmFnZWRJZGVudGl0eS91c2VyQXNzaWduZWRJZGVudGl0aWVzXCIsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkZyYW1ld29yayBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgcmVzb2x2ZSBsYXRlc3QgQVBJIHZlcnNpb24gYXV0b21hdGljYWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpZGVudGl0eSA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShzdGFjaywgXCJUZXN0SWRlbnRpdHlcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtaWRlbnRpdHlcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGlkZW50aXR5LnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjMtMDEtMzFcIik7XG4gICAgICBleHBlY3QoaWRlbnRpdHkubGF0ZXN0VmVyc2lvbigpKS50b0JlKFwiMjAyMy0wMS0zMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgYWxsIHJlZ2lzdGVyZWQgQVBJIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlkZW50aXR5ID0gbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHN0YWNrLCBcIlRlc3RJZGVudGl0eVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1pZGVudGl0eVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdXBwb3J0ZWRWZXJzaW9ucyA9IGlkZW50aXR5LnN1cHBvcnRlZFZlcnNpb25zKCk7XG4gICAgICBleHBlY3Qoc3VwcG9ydGVkVmVyc2lvbnMpLnRvQ29udGFpbihcIjIwMjMtMDEtMzFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB2YWxpZGF0ZSB2ZXJzaW9uIHN1cHBvcnRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHN0YWNrLCBcIlZhbGlkVmVyc2lvblwiLCB7XG4gICAgICAgICAgbmFtZTogXCJ0ZXN0LWlkZW50aXR5XCIsXG4gICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgcmVzb3VyY2VHcm91cElkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMDEtMzFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkoc3RhY2ssIFwiSW52YWxpZFZlcnNpb25cIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1pZGVudGl0eVwiLFxuICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTAxLTAxXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSkudG9UaHJvdyhcIlVuc3VwcG9ydGVkIEFQSSB2ZXJzaW9uICcyMDI0LTAxLTAxJ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGxvYWQgY29ycmVjdCBzY2hlbWEgZm9yIHJlc29sdmVkIHZlcnNpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkoc3RhY2ssIFwiVGVzdElkZW50aXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWlkZW50aXR5XCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC1zdWIvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMDEtMzFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoaWRlbnRpdHkuc2NoZW1hKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGlkZW50aXR5LnNjaGVtYS5yZXNvdXJjZVR5cGUpLnRvQmUoVVNFUl9BU1NJR05FRF9JREVOVElUWV9UWVBFKTtcbiAgICAgIGV4cGVjdChpZGVudGl0eS5zY2hlbWEudmVyc2lvbikudG9CZShcIjIwMjMtMDEtMzFcIik7XG4gICAgICBleHBlY3QoaWRlbnRpdHkuc2NoZW1hLnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBsb2FkIHZlcnNpb24gY29uZmlndXJhdGlvbiBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkoc3RhY2ssIFwiVGVzdElkZW50aXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWlkZW50aXR5XCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC1zdWIvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChpZGVudGl0eS52ZXJzaW9uQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGlkZW50aXR5LnZlcnNpb25Db25maWcudmVyc2lvbikudG9CZShcIjIwMjMtMDEtMzFcIik7XG4gICAgICBleHBlY3QoaWRlbnRpdHkudmVyc2lvbkNvbmZpZy5zdXBwb3J0TGV2ZWwpLnRvQmUoXG4gICAgICAgIFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQcm9wZXJ0eSBWYWxpZGF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB2YWxpZGF0ZSBwcm9wZXJ0aWVzIHdoZW4gdmFsaWRhdGlvbiBpcyBlbmFibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBVc2VyQXNzaWduZWRJZGVudGl0eVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtaWRlbnRpdHlcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkoc3RhY2ssIFwiVGVzdElkZW50aXR5XCIsIHByb3BzKTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBza2lwIHZhbGlkYXRpb24gd2hlbiBkaXNhYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpZGVudGl0eSA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShzdGFjaywgXCJUZXN0SWRlbnRpdHlcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtaWRlbnRpdHlcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChpZGVudGl0eSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJNaWdyYXRpb24gQW5hbHlzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHBlcmZvcm0gbWlncmF0aW9uIGFuYWx5c2lzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlkZW50aXR5ID0gbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHN0YWNrLCBcIlRlc3RJZGVudGl0eVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1pZGVudGl0eVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTAxLTMxXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYW5hbHlzaXMgPSBpZGVudGl0eS5hbmFseXplTWlncmF0aW9uVG8oXCIyMDIzLTAxLTMxXCIpO1xuXG4gICAgICBleHBlY3QoYW5hbHlzaXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYW5hbHlzaXMuZnJvbVZlcnNpb24pLnRvQmUoXCIyMDIzLTAxLTMxXCIpO1xuICAgICAgZXhwZWN0KGFuYWx5c2lzLnRvVmVyc2lvbikudG9CZShcIjIwMjMtMDEtMzFcIik7XG4gICAgICBleHBlY3QoYW5hbHlzaXMuY29tcGF0aWJsZSkudG9CZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJSZXNvdXJjZSBDcmVhdGlvbiBhbmQgT3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGNvcnJlY3QgcmVzb3VyY2UgYm9keVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpZGVudGl0eSA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShzdGFjaywgXCJUZXN0SWRlbnRpdHlcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtaWRlbnRpdHlcIixcbiAgICAgICAgbG9jYXRpb246IFwid2VzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGlkZW50aXR5KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGlkZW50aXR5LnByb3BzLnRhZ3MpLnRvRXF1YWwoeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSk7XG4gICAgICBleHBlY3QoaWRlbnRpdHkucHJvcHMucmVzb3VyY2VHcm91cElkKS50b0JlKFxuICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkoc3RhY2ssIFwiVGVzdElkZW50aXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWlkZW50aXR5LW91dHB1dHNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGlkZW50aXR5LmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0bi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KGlkZW50aXR5LmxvY2F0aW9uT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0bi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KGlkZW50aXR5Lm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RuLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QoaWRlbnRpdHkudGFnc091dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdG4uVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChpZGVudGl0eS5jbGllbnRJZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdG4uVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChpZGVudGl0eS5wcmluY2lwYWxJZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdG4uVGVycmFmb3JtT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdG8gdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHN0YWNrLCBcIlN5bnRoVGVzdFwiLCB7XG4gICAgICAgIG5hbWU6IFwic3ludGgtdGVzdFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgdGFnczogeyB0ZXN0OiBcInN5bnRoZXNpc1wiIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJNdWx0aXBsZSBSZXNvdXJjZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBpZGVudGl0aWVzIGluIHRoZSBzYW1lIHN0YWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlkZW50aXR5MSA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShzdGFjaywgXCJJZGVudGl0eTFcIiwge1xuICAgICAgICBuYW1lOiBcImlkZW50aXR5LTFcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaWRlbnRpdHkyID0gbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHN0YWNrLCBcIklkZW50aXR5MlwiLCB7XG4gICAgICAgIG5hbWU6IFwiaWRlbnRpdHktMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTAxLTMxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGlkZW50aXR5MS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTAxLTMxXCIpO1xuICAgICAgZXhwZWN0KGlkZW50aXR5Mi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTAxLTMxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -433,7 +433,7 @@ class VirtualMachine extends azapi_resource_1.AzapiResource {
433
433
  }
434
434
  exports.VirtualMachine = VirtualMachine;
435
435
  _a = JSII_RTTI_SYMBOL_1;
436
- VirtualMachine[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualMachine", version: "2.2.0" };
436
+ VirtualMachine[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualMachine", version: "2.5.1" };
437
437
  // Static initializer runs once when the class is first loaded
438
438
  (() => {
439
439
  azapi_resource_1.AzapiResource.registerSchemas(virtual_machine_schemas_1.VIRTUAL_MACHINE_TYPE, virtual_machine_schemas_1.ALL_VIRTUAL_MACHINE_VERSIONS);
@@ -216,7 +216,7 @@ class VirtualNetwork extends azapi_resource_1.AzapiResource {
216
216
  }
217
217
  exports.VirtualNetwork = VirtualNetwork;
218
218
  _a = JSII_RTTI_SYMBOL_1;
219
- VirtualNetwork[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetwork", version: "2.2.0" };
219
+ VirtualNetwork[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetwork", version: "2.5.1" };
220
220
  // Static initializer runs once when the class is first loaded
221
221
  (() => {
222
222
  azapi_resource_1.AzapiResource.registerSchemas(virtual_network_schemas_1.VIRTUAL_NETWORK_TYPE, virtual_network_schemas_1.ALL_VIRTUAL_NETWORK_VERSIONS);
@@ -281,7 +281,7 @@ class VirtualNetworkGateway extends azapi_resource_1.AzapiResource {
281
281
  }
282
282
  exports.VirtualNetworkGateway = VirtualNetworkGateway;
283
283
  _a = JSII_RTTI_SYMBOL_1;
284
- VirtualNetworkGateway[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGateway", version: "2.2.0" };
284
+ VirtualNetworkGateway[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGateway", version: "2.5.1" };
285
285
  (() => {
286
286
  azapi_resource_1.AzapiResource.registerSchemas(virtual_network_gateway_schemas_1.VIRTUAL_NETWORK_GATEWAY_TYPE, virtual_network_gateway_schemas_1.ALL_VIRTUAL_NETWORK_GATEWAY_VERSIONS);
287
287
  })();
@@ -303,7 +303,7 @@ class VirtualNetworkGatewayConnection extends azapi_resource_1.AzapiResource {
303
303
  }
304
304
  exports.VirtualNetworkGatewayConnection = VirtualNetworkGatewayConnection;
305
305
  _a = JSII_RTTI_SYMBOL_1;
306
- VirtualNetworkGatewayConnection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGatewayConnection", version: "2.2.0" };
306
+ VirtualNetworkGatewayConnection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGatewayConnection", version: "2.5.1" };
307
307
  (() => {
308
308
  azapi_resource_1.AzapiResource.registerSchemas(virtual_network_gateway_connection_schemas_1.VIRTUAL_NETWORK_GATEWAY_CONNECTION_TYPE, virtual_network_gateway_connection_schemas_1.ALL_VIRTUAL_NETWORK_GATEWAY_CONNECTION_VERSIONS);
309
309
  })();
@@ -199,7 +199,7 @@ class ConnectivityConfiguration extends azapi_resource_1.AzapiResource {
199
199
  }
200
200
  exports.ConnectivityConfiguration = ConnectivityConfiguration;
201
201
  _a = JSII_RTTI_SYMBOL_1;
202
- ConnectivityConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ConnectivityConfiguration", version: "2.2.0" };
202
+ ConnectivityConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ConnectivityConfiguration", version: "2.5.1" };
203
203
  (() => {
204
204
  azapi_resource_1.AzapiResource.registerSchemas(connectivity_configuration_schemas_1.CONNECTIVITY_CONFIGURATION_TYPE, connectivity_configuration_schemas_1.ALL_CONNECTIVITY_CONFIGURATION_VERSIONS);
205
205
  })();
@@ -207,7 +207,7 @@ class IpamPoolStaticCidr extends azapi_resource_1.AzapiResource {
207
207
  }
208
208
  exports.IpamPoolStaticCidr = IpamPoolStaticCidr;
209
209
  _a = JSII_RTTI_SYMBOL_1;
210
- IpamPoolStaticCidr[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPoolStaticCidr", version: "2.2.0" };
210
+ IpamPoolStaticCidr[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPoolStaticCidr", version: "2.5.1" };
211
211
  (() => {
212
212
  azapi_resource_1.AzapiResource.registerSchemas(ipam_pool_static_cidr_schemas_1.STATIC_CIDR_TYPE, ipam_pool_static_cidr_schemas_1.ALL_STATIC_CIDR_VERSIONS);
213
213
  })();
@@ -199,7 +199,7 @@ class IpamPool extends azapi_resource_1.AzapiResource {
199
199
  }
200
200
  exports.IpamPool = IpamPool;
201
201
  _a = JSII_RTTI_SYMBOL_1;
202
- IpamPool[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPool", version: "2.2.0" };
202
+ IpamPool[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPool", version: "2.5.1" };
203
203
  (() => {
204
204
  azapi_resource_1.AzapiResource.registerSchemas(ipam_pool_schemas_1.IPAM_POOL_TYPE, ipam_pool_schemas_1.ALL_IPAM_POOL_VERSIONS);
205
205
  })();
@@ -156,7 +156,7 @@ class NetworkGroupStaticMember extends azapi_resource_1.AzapiResource {
156
156
  }
157
157
  exports.NetworkGroupStaticMember = NetworkGroupStaticMember;
158
158
  _a = JSII_RTTI_SYMBOL_1;
159
- NetworkGroupStaticMember[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroupStaticMember", version: "2.2.0" };
159
+ NetworkGroupStaticMember[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroupStaticMember", version: "2.5.1" };
160
160
  (() => {
161
161
  azapi_resource_1.AzapiResource.registerSchemas(network_group_static_member_schemas_1.STATIC_MEMBER_TYPE, network_group_static_member_schemas_1.ALL_STATIC_MEMBER_VERSIONS);
162
162
  })();
@@ -151,7 +151,7 @@ class NetworkGroup extends azapi_resource_1.AzapiResource {
151
151
  }
152
152
  exports.NetworkGroup = NetworkGroup;
153
153
  _a = JSII_RTTI_SYMBOL_1;
154
- NetworkGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroup", version: "2.2.0" };
154
+ NetworkGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroup", version: "2.5.1" };
155
155
  (() => {
156
156
  azapi_resource_1.AzapiResource.registerSchemas(network_group_schemas_1.NETWORK_GROUP_TYPE, network_group_schemas_1.ALL_NETWORK_GROUP_VERSIONS);
157
157
  })();
@@ -157,7 +157,7 @@ class SecurityAdminConfiguration extends azapi_resource_1.AzapiResource {
157
157
  }
158
158
  exports.SecurityAdminConfiguration = SecurityAdminConfiguration;
159
159
  _a = JSII_RTTI_SYMBOL_1;
160
- SecurityAdminConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminConfiguration", version: "2.2.0" };
160
+ SecurityAdminConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminConfiguration", version: "2.5.1" };
161
161
  (() => {
162
162
  azapi_resource_1.AzapiResource.registerSchemas(security_admin_configuration_schemas_1.SECURITY_ADMIN_CONFIGURATION_TYPE, security_admin_configuration_schemas_1.ALL_SECURITY_ADMIN_CONFIGURATION_VERSIONS);
163
163
  })();
@@ -155,7 +155,7 @@ class SecurityAdminRuleCollection extends azapi_resource_1.AzapiResource {
155
155
  }
156
156
  exports.SecurityAdminRuleCollection = SecurityAdminRuleCollection;
157
157
  _a = JSII_RTTI_SYMBOL_1;
158
- SecurityAdminRuleCollection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRuleCollection", version: "2.2.0" };
158
+ SecurityAdminRuleCollection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRuleCollection", version: "2.5.1" };
159
159
  (() => {
160
160
  azapi_resource_1.AzapiResource.registerSchemas(security_admin_rule_collection_schemas_1.RULE_COLLECTION_TYPE, security_admin_rule_collection_schemas_1.ALL_RULE_COLLECTION_VERSIONS);
161
161
  })();
@@ -197,7 +197,7 @@ class SecurityAdminRule extends azapi_resource_1.AzapiResource {
197
197
  }
198
198
  exports.SecurityAdminRule = SecurityAdminRule;
199
199
  _a = JSII_RTTI_SYMBOL_1;
200
- SecurityAdminRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRule", version: "2.2.0" };
200
+ SecurityAdminRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRule", version: "2.5.1" };
201
201
  (() => {
202
202
  azapi_resource_1.AzapiResource.registerSchemas(security_admin_rule_schemas_1.SECURITY_ADMIN_RULE_TYPE, security_admin_rule_schemas_1.ALL_SECURITY_ADMIN_RULE_VERSIONS);
203
203
  })();
@@ -303,7 +303,7 @@ class VirtualNetworkManager extends azapi_resource_1.AzapiResource {
303
303
  }
304
304
  exports.VirtualNetworkManager = VirtualNetworkManager;
305
305
  _a = JSII_RTTI_SYMBOL_1;
306
- VirtualNetworkManager[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkManager", version: "2.2.0" };
306
+ VirtualNetworkManager[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkManager", version: "2.5.1" };
307
307
  (() => {
308
308
  azapi_resource_1.AzapiResource.registerSchemas(virtual_network_manager_schemas_1.VIRTUAL_NETWORK_MANAGER_TYPE, virtual_network_manager_schemas_1.ALL_VIRTUAL_NETWORK_MANAGER_VERSIONS);
309
309
  })();
@@ -20,7 +20,7 @@
20
20
  */
21
21
  import * as cdktn from "cdktn";
22
22
  import { Construct } from "constructs";
23
- import { VirtualMachineScaleSetSku, OrchestrationMode, VirtualMachineScaleSetProps, VmssMonitoringOptions } from "./vmss-schemas";
23
+ import { VirtualMachineScaleSetSku, OrchestrationMode, VirtualMachineScaleSetProps, VmssMonitoringOptions, VMExtension, ExtensionHelperOptions, HealthExtensionOptions } from "./vmss-schemas";
24
24
  import { AzapiResource, MonitoringConfig } from "../../core-azure/lib/azapi/azapi-resource";
25
25
  import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
26
26
  /**
@@ -169,6 +169,71 @@ export declare class VirtualMachineScaleSet extends AzapiResource {
169
169
  * @stability stable
170
170
  */
171
171
  static defaultMonitoring(actionGroupId: string, workspaceId?: string, options?: VmssMonitoringOptions): MonitoringConfig;
172
+ /**
173
+ * Creates a Custom Script Extension configuration for Linux VMs
174
+ *
175
+ * This helper creates a properly configured Custom Script extension that can be
176
+ * included in the extensionProfile of the virtualMachineProfile.
177
+ *
178
+ * @param name - The name of the extension
179
+ * @param fileUris - Array of URIs to script files
180
+ * @param commandToExecute - The command to execute
181
+ * @param options - Optional configuration for extension behavior
182
+ * @returns A VMExtension object ready to include in extensionProfile.extensions
183
+ *
184
+ * @example
185
+ * const ext = VirtualMachineScaleSet.customScriptExtension(
186
+ * "install-app",
187
+ * ["https://example.com/install.sh"],
188
+ * "bash install.sh"
189
+ * );
190
+ *
191
+ * @stability stable
192
+ */
193
+ static customScriptExtension(name: string, fileUris: string[], commandToExecute: string, options?: ExtensionHelperOptions): VMExtension;
194
+ /**
195
+ * Creates an Azure Monitor Agent extension configuration
196
+ *
197
+ * The Azure Monitor Agent collects monitoring data from the guest operating system
198
+ * and delivers it to Azure Monitor. This replaces the legacy Log Analytics agent.
199
+ *
200
+ * @param name - The name of the extension
201
+ * @param isWindows - Whether the target OS is Windows (default: false for Linux)
202
+ * @param options - Optional configuration for extension behavior
203
+ * @returns A VMExtension object ready to include in extensionProfile.extensions
204
+ *
205
+ * @example
206
+ * const ext = VirtualMachineScaleSet.azureMonitorExtension("azure-monitor");
207
+ *
208
+ * @stability stable
209
+ */
210
+ static azureMonitorExtension(name: string, isWindows?: boolean, options?: ExtensionHelperOptions): VMExtension;
211
+ /**
212
+ * Creates an Application Health extension configuration
213
+ *
214
+ * The Application Health extension reports on application health from inside
215
+ * the VMSS instance. It is required for features like automatic repairs and
216
+ * rolling upgrades.
217
+ *
218
+ * @param name - The name of the extension
219
+ * @param protocol - Health probe protocol ("http", "https", or "tcp")
220
+ * @param port - The port to probe
221
+ * @param isWindows - Whether the target OS is Windows (default: false for Linux)
222
+ * @param options - Optional configuration including requestPath for HTTP/HTTPS
223
+ * @returns A VMExtension object ready to include in extensionProfile.extensions
224
+ *
225
+ * @example
226
+ * const ext = VirtualMachineScaleSet.applicationHealthExtension(
227
+ * "health-ext",
228
+ * "http",
229
+ * 80,
230
+ * false,
231
+ * { requestPath: "/" }
232
+ * );
233
+ *
234
+ * @stability stable
235
+ */
236
+ static applicationHealthExtension(name: string, protocol: string, port: number, isWindows?: boolean, options?: HealthExtensionOptions): VMExtension;
172
237
  /**
173
238
  * The input properties for this VMSS instance
174
239
  */