@microsoft/terraform-cdk-constructs 1.0.0 → 1.2.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.
Files changed (385) hide show
  1. package/.jsii +60999 -15780
  2. package/API.md +54947 -10610
  3. package/README.md +72 -36
  4. package/docs/monitoring-guide.md +206 -0
  5. package/docs/testing.md +84 -1
  6. package/lib/azure-actiongroup/index.d.ts +11 -0
  7. package/lib/azure-actiongroup/index.js +28 -0
  8. package/lib/azure-actiongroup/lib/action-group-schemas.d.ts +24 -0
  9. package/lib/azure-actiongroup/lib/action-group-schemas.js +201 -0
  10. package/lib/azure-actiongroup/lib/action-group.d.ts +312 -0
  11. package/lib/azure-actiongroup/lib/action-group.js +201 -0
  12. package/lib/azure-actiongroup/lib/index.d.ts +5 -0
  13. package/lib/azure-actiongroup/lib/index.js +22 -0
  14. package/lib/azure-actiongroup/test/action-group.integ.d.ts +9 -0
  15. package/lib/azure-actiongroup/test/action-group.integ.js +79 -0
  16. package/lib/azure-actiongroup/test/action-group.spec.d.ts +8 -0
  17. package/lib/azure-actiongroup/test/action-group.spec.js +602 -0
  18. package/lib/azure-activitylogalert/index.d.ts +11 -0
  19. package/lib/azure-activitylogalert/index.js +28 -0
  20. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.d.ts +24 -0
  21. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.js +182 -0
  22. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +236 -0
  23. package/lib/azure-activitylogalert/lib/activity-log-alert.js +212 -0
  24. package/lib/azure-activitylogalert/lib/index.d.ts +5 -0
  25. package/lib/azure-activitylogalert/lib/index.js +22 -0
  26. package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +9 -0
  27. package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +98 -0
  28. package/lib/azure-activitylogalert/test/activity-log-alert.spec.d.ts +9 -0
  29. package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +1101 -0
  30. package/lib/azure-aks/index.d.ts +9 -0
  31. package/lib/azure-aks/index.js +28 -0
  32. package/lib/azure-aks/lib/aks-cluster-schemas.d.ts +505 -0
  33. package/lib/azure-aks/lib/aks-cluster-schemas.js +572 -0
  34. package/lib/azure-aks/lib/aks-cluster.d.ts +395 -0
  35. package/lib/azure-aks/lib/aks-cluster.js +489 -0
  36. package/lib/azure-aks/lib/index.d.ts +11 -0
  37. package/lib/azure-aks/lib/index.js +38 -0
  38. package/lib/azure-aks/test/aks-cluster.integ.d.ts +9 -0
  39. package/lib/azure-aks/test/aks-cluster.integ.js +260 -0
  40. package/lib/azure-aks/test/aks-cluster.spec.d.ts +8 -0
  41. package/lib/azure-aks/test/aks-cluster.spec.js +1396 -0
  42. package/lib/azure-diagnosticsettings/index.d.ts +7 -0
  43. package/lib/azure-diagnosticsettings/index.js +24 -0
  44. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.d.ts +50 -0
  45. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.js +207 -0
  46. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +193 -0
  47. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +200 -0
  48. package/lib/azure-diagnosticsettings/lib/index.d.ts +8 -0
  49. package/lib/azure-diagnosticsettings/lib/index.js +25 -0
  50. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.d.ts +8 -0
  51. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +432 -0
  52. package/lib/azure-metricalert/index.d.ts +11 -0
  53. package/lib/azure-metricalert/index.js +28 -0
  54. package/lib/azure-metricalert/lib/index.d.ts +5 -0
  55. package/lib/azure-metricalert/lib/index.js +22 -0
  56. package/lib/azure-metricalert/lib/metric-alert-schemas.d.ts +24 -0
  57. package/lib/azure-metricalert/lib/metric-alert-schemas.js +242 -0
  58. package/lib/azure-metricalert/lib/metric-alert.d.ts +344 -0
  59. package/lib/azure-metricalert/lib/metric-alert.js +252 -0
  60. package/lib/azure-metricalert/test/metric-alert.integ.d.ts +9 -0
  61. package/lib/azure-metricalert/test/metric-alert.integ.js +123 -0
  62. package/lib/azure-metricalert/test/metric-alert.spec.d.ts +9 -0
  63. package/lib/azure-metricalert/test/metric-alert.spec.js +1266 -0
  64. package/lib/azure-networkinterface/index.d.ts +4 -0
  65. package/lib/azure-networkinterface/index.js +21 -0
  66. package/lib/azure-networkinterface/lib/index.d.ts +6 -0
  67. package/lib/azure-networkinterface/lib/index.js +22 -0
  68. package/lib/azure-networkinterface/lib/network-interface-schemas.d.ts +32 -0
  69. package/lib/azure-networkinterface/lib/network-interface-schemas.js +222 -0
  70. package/lib/azure-networkinterface/lib/network-interface.d.ts +265 -0
  71. package/lib/azure-networkinterface/lib/network-interface.js +228 -0
  72. package/lib/azure-networkinterface/test/network-interface.integ.d.ts +9 -0
  73. package/lib/azure-networkinterface/test/network-interface.integ.js +102 -0
  74. package/lib/azure-networkinterface/test/network-interface.spec.d.ts +8 -0
  75. package/lib/azure-networkinterface/test/network-interface.spec.js +655 -0
  76. package/lib/azure-networksecuritygroup/index.d.ts +6 -0
  77. package/lib/azure-networksecuritygroup/index.js +23 -0
  78. package/lib/azure-networksecuritygroup/lib/index.d.ts +5 -0
  79. package/lib/azure-networksecuritygroup/lib/index.js +16 -0
  80. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.d.ts +32 -0
  81. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.js +198 -0
  82. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +268 -0
  83. package/lib/azure-networksecuritygroup/lib/network-security-group.js +248 -0
  84. package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +9 -0
  85. package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +151 -0
  86. package/lib/azure-networksecuritygroup/test/network-security-group.spec.d.ts +8 -0
  87. package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +652 -0
  88. package/lib/azure-publicipaddress/index.d.ts +6 -0
  89. package/lib/azure-publicipaddress/index.js +23 -0
  90. package/lib/azure-publicipaddress/lib/index.d.ts +9 -0
  91. package/lib/azure-publicipaddress/lib/index.js +19 -0
  92. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.d.ts +32 -0
  93. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.js +227 -0
  94. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +256 -0
  95. package/lib/azure-publicipaddress/lib/public-ip-address.js +267 -0
  96. package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +9 -0
  97. package/lib/azure-publicipaddress/test/public-ip-address.integ.js +75 -0
  98. package/lib/azure-publicipaddress/test/public-ip-address.spec.d.ts +15 -0
  99. package/lib/azure-publicipaddress/test/public-ip-address.spec.js +498 -0
  100. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  101. package/lib/azure-resourcegroup/test/resource-group.integ.js +23 -11
  102. package/lib/azure-storageaccount/lib/storage-account-schemas.d.ts +98 -0
  103. package/lib/azure-storageaccount/lib/storage-account-schemas.js +1 -1
  104. package/lib/azure-storageaccount/lib/storage-account.d.ts +38 -1
  105. package/lib/azure-storageaccount/lib/storage-account.js +138 -2
  106. package/lib/azure-storageaccount/test/storage-account.integ.js +91 -12
  107. package/lib/azure-subnet/index.d.ts +4 -0
  108. package/lib/azure-subnet/index.js +21 -0
  109. package/lib/azure-subnet/lib/index.d.ts +5 -0
  110. package/lib/azure-subnet/lib/index.js +22 -0
  111. package/lib/azure-subnet/lib/subnet-schemas.d.ts +32 -0
  112. package/lib/azure-subnet/lib/subnet-schemas.js +237 -0
  113. package/lib/azure-subnet/lib/subnet.d.ts +285 -0
  114. package/lib/azure-subnet/lib/subnet.js +254 -0
  115. package/lib/azure-subnet/test/subnet.integ.d.ts +11 -0
  116. package/lib/azure-subnet/test/subnet.integ.js +80 -0
  117. package/lib/azure-subnet/test/subnet.spec.d.ts +8 -0
  118. package/lib/azure-subnet/test/subnet.spec.js +396 -0
  119. package/lib/azure-virtualmachine/index.d.ts +7 -0
  120. package/lib/azure-virtualmachine/index.js +24 -0
  121. package/lib/azure-virtualmachine/lib/index.d.ts +11 -0
  122. package/lib/azure-virtualmachine/lib/index.js +38 -0
  123. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.d.ts +327 -0
  124. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.js +544 -0
  125. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +377 -0
  126. package/lib/azure-virtualmachine/lib/virtual-machine.js +462 -0
  127. package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +9 -0
  128. package/lib/azure-virtualmachine/test/virtual-machine.integ.js +220 -0
  129. package/lib/azure-virtualmachine/test/virtual-machine.spec.d.ts +9 -0
  130. package/lib/azure-virtualmachine/test/virtual-machine.spec.js +1032 -0
  131. package/lib/azure-virtualnetwork/index.d.ts +10 -0
  132. package/lib/azure-virtualnetwork/index.js +28 -0
  133. package/lib/azure-virtualnetwork/lib/index.d.ts +9 -0
  134. package/lib/azure-virtualnetwork/lib/index.js +22 -0
  135. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.d.ts +32 -0
  136. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.js +236 -0
  137. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +213 -0
  138. package/lib/azure-virtualnetwork/lib/virtual-network.js +245 -0
  139. package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +9 -0
  140. package/lib/azure-virtualnetwork/test/virtual-network.integ.js +91 -0
  141. package/lib/azure-virtualnetwork/test/virtual-network.spec.d.ts +8 -0
  142. package/lib/azure-virtualnetwork/test/virtual-network.spec.js +398 -0
  143. package/lib/azure-vmss/index.d.ts +6 -0
  144. package/lib/azure-vmss/index.js +23 -0
  145. package/lib/azure-vmss/lib/index.d.ts +9 -0
  146. package/lib/azure-vmss/lib/index.js +39 -0
  147. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +258 -0
  148. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +503 -0
  149. package/lib/azure-vmss/lib/vmss-schemas.d.ts +472 -0
  150. package/lib/azure-vmss/lib/vmss-schemas.js +444 -0
  151. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +15 -0
  152. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +261 -0
  153. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.d.ts +8 -0
  154. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +997 -0
  155. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +95 -27
  156. package/lib/core-azure/lib/azapi/azapi-resource.js +95 -58
  157. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +33 -21
  158. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +69 -27
  159. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +134 -120
  160. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +209 -59
  161. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +141 -128
  162. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +183 -36
  163. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +55 -43
  164. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +94 -26
  165. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +129 -116
  166. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +155 -32
  167. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +187 -174
  168. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +267 -48
  169. package/lib/core-azure/lib/azapi/providers-azapi/index.d.ts +10 -10
  170. package/lib/core-azure/lib/azapi/providers-azapi/index.js +1 -1
  171. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.d.ts +0 -0
  172. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +13 -0
  173. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +174 -162
  174. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +274 -14
  175. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +239 -225
  176. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +360 -76
  177. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +163 -150
  178. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +221 -46
  179. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +162 -149
  180. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +249 -50
  181. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +4 -2
  182. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  183. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  184. package/lib/index.d.ts +37 -0
  185. package/lib/index.js +40 -2
  186. package/lib/testing/index.d.ts +92 -2
  187. package/lib/testing/index.js +258 -18
  188. package/lib/testing/lib/cleanup.d.ts +229 -0
  189. package/lib/testing/lib/cleanup.js +331 -0
  190. package/lib/testing/lib/metadata.d.ts +151 -0
  191. package/lib/testing/lib/metadata.js +180 -0
  192. package/lib/testing/lib/naming.d.ts +96 -0
  193. package/lib/testing/lib/naming.js +336 -0
  194. package/node_modules/uuid/LICENSE.md +9 -0
  195. package/node_modules/uuid/README.md +510 -0
  196. package/node_modules/uuid/dist/cjs/index.d.ts +15 -0
  197. package/node_modules/uuid/dist/cjs/index.js +31 -0
  198. package/node_modules/uuid/dist/cjs/max.d.ts +2 -0
  199. package/node_modules/uuid/dist/cjs/max.js +3 -0
  200. package/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
  201. package/node_modules/uuid/dist/cjs/md5.js +13 -0
  202. package/node_modules/uuid/dist/cjs/native.d.ts +6 -0
  203. package/node_modules/uuid/dist/cjs/native.js +4 -0
  204. package/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
  205. package/node_modules/uuid/dist/cjs/nil.js +3 -0
  206. package/node_modules/uuid/dist/cjs/package.json +1 -0
  207. package/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
  208. package/node_modules/uuid/dist/cjs/parse.js +11 -0
  209. package/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
  210. package/node_modules/uuid/dist/cjs/regex.js +3 -0
  211. package/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
  212. package/node_modules/uuid/dist/cjs/rng.js +13 -0
  213. package/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
  214. package/node_modules/uuid/dist/cjs/sha1.js +13 -0
  215. package/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
  216. package/node_modules/uuid/dist/cjs/stringify.js +39 -0
  217. package/node_modules/uuid/dist/cjs/types.d.ts +21 -0
  218. package/node_modules/uuid/dist/cjs/types.js +2 -0
  219. package/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
  220. package/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
  221. package/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
  222. package/node_modules/uuid/dist/cjs/v1.js +87 -0
  223. package/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
  224. package/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
  225. package/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
  226. package/node_modules/uuid/dist/cjs/v3.js +14 -0
  227. package/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
  228. package/node_modules/uuid/dist/cjs/v35.js +41 -0
  229. package/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
  230. package/node_modules/uuid/dist/cjs/v4.js +29 -0
  231. package/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
  232. package/node_modules/uuid/dist/cjs/v5.js +14 -0
  233. package/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
  234. package/node_modules/uuid/dist/cjs/v6.js +19 -0
  235. package/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
  236. package/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
  237. package/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
  238. package/node_modules/uuid/dist/cjs/v7.js +69 -0
  239. package/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
  240. package/node_modules/uuid/dist/cjs/validate.js +7 -0
  241. package/node_modules/uuid/dist/cjs/version.d.ts +2 -0
  242. package/node_modules/uuid/dist/cjs/version.js +10 -0
  243. package/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
  244. package/node_modules/uuid/dist/cjs-browser/index.js +31 -0
  245. package/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
  246. package/node_modules/uuid/dist/cjs-browser/max.js +3 -0
  247. package/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
  248. package/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
  249. package/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
  250. package/node_modules/uuid/dist/cjs-browser/native.js +4 -0
  251. package/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
  252. package/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
  253. package/node_modules/uuid/dist/cjs-browser/package.json +1 -0
  254. package/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
  255. package/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
  256. package/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
  257. package/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
  258. package/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
  259. package/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
  260. package/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
  261. package/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
  262. package/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
  263. package/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
  264. package/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
  265. package/node_modules/uuid/dist/cjs-browser/types.js +2 -0
  266. package/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
  267. package/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
  268. package/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
  269. package/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
  270. package/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
  271. package/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
  272. package/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
  273. package/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
  274. package/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
  275. package/node_modules/uuid/dist/cjs-browser/v35.js +41 -0
  276. package/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
  277. package/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
  278. package/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
  279. package/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
  280. package/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
  281. package/node_modules/uuid/dist/cjs-browser/v6.js +19 -0
  282. package/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
  283. package/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
  284. package/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
  285. package/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
  286. package/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
  287. package/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
  288. package/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
  289. package/node_modules/uuid/dist/cjs-browser/version.js +10 -0
  290. package/node_modules/uuid/dist/esm/bin/uuid +2 -0
  291. package/node_modules/uuid/dist/esm/index.d.ts +15 -0
  292. package/node_modules/uuid/dist/esm/index.js +14 -0
  293. package/node_modules/uuid/dist/esm/max.d.ts +2 -0
  294. package/node_modules/uuid/dist/esm/max.js +1 -0
  295. package/node_modules/uuid/dist/esm/md5.d.ts +4 -0
  296. package/node_modules/uuid/dist/esm/md5.js +11 -0
  297. package/node_modules/uuid/dist/esm/native.d.ts +6 -0
  298. package/node_modules/uuid/dist/esm/native.js +2 -0
  299. package/node_modules/uuid/dist/esm/nil.d.ts +2 -0
  300. package/node_modules/uuid/dist/esm/nil.js +1 -0
  301. package/node_modules/uuid/dist/esm/parse.d.ts +2 -0
  302. package/node_modules/uuid/dist/esm/parse.js +9 -0
  303. package/node_modules/uuid/dist/esm/regex.d.ts +2 -0
  304. package/node_modules/uuid/dist/esm/regex.js +1 -0
  305. package/node_modules/uuid/dist/esm/rng.d.ts +1 -0
  306. package/node_modules/uuid/dist/esm/rng.js +10 -0
  307. package/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
  308. package/node_modules/uuid/dist/esm/sha1.js +11 -0
  309. package/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
  310. package/node_modules/uuid/dist/esm/stringify.js +35 -0
  311. package/node_modules/uuid/dist/esm/types.d.ts +21 -0
  312. package/node_modules/uuid/dist/esm/types.js +1 -0
  313. package/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
  314. package/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
  315. package/node_modules/uuid/dist/esm/v1.d.ts +11 -0
  316. package/node_modules/uuid/dist/esm/v1.js +83 -0
  317. package/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
  318. package/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
  319. package/node_modules/uuid/dist/esm/v3.d.ts +9 -0
  320. package/node_modules/uuid/dist/esm/v3.js +9 -0
  321. package/node_modules/uuid/dist/esm/v35.d.ts +7 -0
  322. package/node_modules/uuid/dist/esm/v35.js +36 -0
  323. package/node_modules/uuid/dist/esm/v4.d.ts +4 -0
  324. package/node_modules/uuid/dist/esm/v4.js +27 -0
  325. package/node_modules/uuid/dist/esm/v5.d.ts +9 -0
  326. package/node_modules/uuid/dist/esm/v5.js +9 -0
  327. package/node_modules/uuid/dist/esm/v6.d.ts +4 -0
  328. package/node_modules/uuid/dist/esm/v6.js +17 -0
  329. package/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
  330. package/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
  331. package/node_modules/uuid/dist/esm/v7.d.ts +9 -0
  332. package/node_modules/uuid/dist/esm/v7.js +65 -0
  333. package/node_modules/uuid/dist/esm/validate.d.ts +2 -0
  334. package/node_modules/uuid/dist/esm/validate.js +5 -0
  335. package/node_modules/uuid/dist/esm/version.d.ts +2 -0
  336. package/node_modules/uuid/dist/esm/version.js +8 -0
  337. package/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
  338. package/node_modules/uuid/dist/esm-browser/index.js +14 -0
  339. package/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
  340. package/node_modules/uuid/dist/esm-browser/max.js +1 -0
  341. package/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
  342. package/node_modules/uuid/dist/esm-browser/md5.js +135 -0
  343. package/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
  344. package/node_modules/uuid/dist/esm-browser/native.js +2 -0
  345. package/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
  346. package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
  347. package/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
  348. package/node_modules/uuid/dist/esm-browser/parse.js +9 -0
  349. package/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
  350. package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  351. package/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
  352. package/node_modules/uuid/dist/esm-browser/rng.js +11 -0
  353. package/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
  354. package/node_modules/uuid/dist/esm-browser/sha1.js +70 -0
  355. package/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
  356. package/node_modules/uuid/dist/esm-browser/stringify.js +35 -0
  357. package/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
  358. package/node_modules/uuid/dist/esm-browser/types.js +1 -0
  359. package/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
  360. package/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
  361. package/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
  362. package/node_modules/uuid/dist/esm-browser/v1.js +83 -0
  363. package/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
  364. package/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
  365. package/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
  366. package/node_modules/uuid/dist/esm-browser/v3.js +9 -0
  367. package/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
  368. package/node_modules/uuid/dist/esm-browser/v35.js +36 -0
  369. package/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
  370. package/node_modules/uuid/dist/esm-browser/v4.js +27 -0
  371. package/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
  372. package/node_modules/uuid/dist/esm-browser/v5.js +9 -0
  373. package/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
  374. package/node_modules/uuid/dist/esm-browser/v6.js +17 -0
  375. package/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
  376. package/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
  377. package/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
  378. package/node_modules/uuid/dist/esm-browser/v7.js +65 -0
  379. package/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
  380. package/node_modules/uuid/dist/esm-browser/validate.js +5 -0
  381. package/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
  382. package/node_modules/uuid/dist/esm-browser/version.js +8 -0
  383. package/node_modules/uuid/package.json +132 -0
  384. package/package.json +17 -12
  385. package/scripts/cleanup-test-resources.ts +369 -0
package/README.md CHANGED
@@ -20,18 +20,48 @@ With AZAPI L2 Constructs, you get the following benefits:
20
20
  - **Version Flexibility**: Choose specific API versions for your resources
21
21
  - **Rapid Feature Adoption**: Access new Azure features immediately without waiting for provider updates
22
22
  - **Enhanced Abstraction**: Higher-level abstractions over Azure resources with type safety
23
+ - **Built-in Monitoring**: One-line setup for comprehensive monitoring with customizable alerts and diagnostic settings
24
+ - **Schema Validation**: Automatic validation of properties against Azure API schemas
23
25
  - **Reusability**: Encapsulate common patterns and best practices in your infrastructure code
26
+ - **Testing Utilities**: Helper functions for integration tests including naming conventions, metadata, and resource cleanup
24
27
  - **Direct IDE Integration**: Access detailed documentation directly within your IDE
25
28
  - **Zero Provider Setup**: AZAPI provider bindings included in the package
26
29
 
27
30
  ## Currently Supported Services
28
31
 
32
+ ### Compute
33
+
34
+ | Service | API Versions | Monitoring Support | Status |
35
+ |---------|-------------|-------------------|--------|
36
+ | [Virtual Machines](./src/azure-virtualmachine/README.md) | 2024-07-01, 2024-11-01, 2025-04-01 | ✅ Built-in | ✅ Available |
37
+ | [AKS Clusters](./src/azure-aks/README.md) | 2025-05-01, 2025-07-01, 2025-08-01 | ✅ Built-in | ✅ Available |
38
+ | [Virtual Machine Scale Sets](./src/azure-vmss/README.md) | 2025-01-02, 2025-02-01, 2025-04-01 | ✅ Built-in | ✅ Available |
39
+
40
+ ### Networking
41
+
42
+ | Service | API Versions | Status |
43
+ |---------|-------------|--------|
44
+ | [Virtual Networks](./src/azure-virtualnetwork/README.md) | 2024-07-01, 2024-10-01, 2025-01-01 | ✅ Available |
45
+ | [Subnets](./src/azure-subnet/README.md) | 2024-07-01, 2024-10-01, 2025-01-01 | ✅ Available |
46
+ | [Network Interfaces](./src/azure-networkinterface/README.md) | 2024-07-01, 2024-10-01, 2025-01-01 | ✅ Available |
47
+ | [Network Security Groups](./src/azure-networksecuritygroup/README.md) | 2024-07-01, 2024-10-01, 2025-01-01 | ✅ Available |
48
+ | [Public IP Addresses](./src/azure-publicipaddress/README.md) | 2024-07-01, 2024-10-01, 2025-01-01 | ✅ Available |
49
+
50
+ ### Monitoring & Alerting
51
+
29
52
  | Service | API Versions | Status |
30
53
  |---------|-------------|--------|
31
- | Resource Groups | 2024-11-01, 2025-01-01, 2025-03-01 | ✅ Available |
32
- | Storage Accounts | 2023-01-01, 2023-05-01, 2024-01-01 | ✅ Available |
54
+ | [Action Groups](./src/azure-actiongroup/README.md) | 2021-09-01 | ✅ Available |
55
+ | [Metric Alerts](./src/azure-metricalert/README.md) | 2018-03-01 | ✅ Available |
56
+ | [Activity Log Alerts](./src/azure-activitylogalert/README.md) | 2020-10-01 | ✅ Available |
57
+ | [Diagnostic Settings](./src/azure-diagnosticsettings/README.md) | 2016-09-01, 2021-05-01-preview | ✅ Available |
58
+
59
+ ### Foundation
33
60
 
34
- *More services will be added in future releases using the same AZAPI architecture.*
61
+ | Service | API Versions | Status |
62
+ |---------|-------------|--------|
63
+ | [Resource Groups](./src/azure-resourcegroup/README.md) | 2024-11-01, 2025-01-01, 2025-03-01 | ✅ Available |
64
+ | [Storage Accounts](./src/azure-storageaccount/README.md) | 2023-01-01, 2023-05-01, 2024-01-01 | ✅ Available |
35
65
 
36
66
  ## Quick Example
37
67
 
@@ -98,45 +128,50 @@ npm install @microsoft/terraform-cdk-constructs
98
128
 
99
129
  That's it! The AZAPI provider classes are included in the package, so you don't need to configure additional providers or generate bindings.
100
130
 
101
- ### Basic Usage Example
131
+ ## Built-in Monitoring & Alerting
132
+
133
+ Azure L2 Constructs include comprehensive monitoring capabilities that can be enabled with a single method call. The monitoring framework automatically creates metric alerts, diagnostic settings, and activity log alerts for supported resources.
134
+
135
+ ### Quick Example
102
136
 
103
137
  ```typescript
104
- import * as azcdk from "@microsoft/terraform-cdk-constructs";
105
- import { Construct } from 'constructs';
106
- import { App, TerraformStack } from 'cdktf';
138
+ import { VirtualMachine } from "@microsoft/terraform-cdk-constructs/azure-virtualmachine";
139
+ import { ActionGroup } from "@microsoft/terraform-cdk-constructs/azure-actiongroup";
140
+
141
+ // Enable monitoring with one line
142
+ const vm = new VirtualMachine(this, "vm", {
143
+ name: "my-vm",
144
+ // ... VM configuration ...
145
+ monitoring: VirtualMachine.defaultMonitoring(actionGroup.id, workspaceId),
146
+ });
147
+ ```
107
148
 
108
- class MyAzureInfra extends TerraformStack {
109
- constructor(scope: Construct, name: string) {
110
- super(scope, name);
149
+ ### Supported Resources
111
150
 
112
- // Create a resource group
113
- const rg = new azcdk.azure_resourcegroup.ResourceGroup(this, "main-rg", {
114
- name: "rg-myproject-prod",
115
- location: "eastus",
116
- tags: {
117
- environment: "production",
118
- project: "myproject"
119
- }
120
- });
151
+ | Resource | Monitoring Documentation |
152
+ |----------|-------------------------|
153
+ | Virtual Machines | [VM Monitoring Guide](./src/azure-virtualmachine/README.md#monitoring) |
154
+ | AKS Clusters | [AKS Monitoring Guide](./src/azure-aks/README.md#monitoring) |
155
+ | Virtual Machine Scale Sets | [VMSS Monitoring Guide](./src/azure-vmss/README.md#monitoring) |
156
+ | Storage Accounts | [Storage Monitoring Guide](./src/azure-storageaccount/README.md#monitoring) |
121
157
 
122
- // Create a storage account
123
- const storage = new azcdk.azure_storageaccount.StorageAccount(this, "storage", {
124
- name: "mystorageaccount",
125
- location: "eastus",
126
- resourceGroupId: rg.id,
127
- sku: { name: "Standard_LRS" },
128
- tags: {
129
- environment: "production",
130
- project: "myproject"
131
- }
132
- });
133
- }
134
- }
158
+ See the [Monitoring Guide](./docs/monitoring-guide.md) for comprehensive documentation on monitoring capabilities, customization options, and best practices.
135
159
 
136
- const app = new App();
137
- new MyAzureInfra(app, 'azure-infra');
138
- app.synth();
139
- ```
160
+ ## Networking Constructs
161
+
162
+ Build complete Azure networking infrastructure with type-safe constructs that provide automatic validation and version management.
163
+
164
+ ### Available Components
165
+
166
+ | Component | Documentation |
167
+ |-----------|--------------|
168
+ | [Virtual Networks](./src/azure-virtualnetwork/README.md) | Define address spaces and network isolation with custom DNS and DDoS protection |
169
+ | [Subnets](./src/azure-subnet/README.md) | Segment networks with service endpoints, delegations, and NSG association |
170
+ | [Network Interfaces](./src/azure-networkinterface/README.md) | Attach to VMs with static/dynamic IPs and accelerated networking |
171
+ | [Network Security Groups](./src/azure-networksecuritygroup/README.md) | Control traffic with inbound/outbound security rules |
172
+ | [Public IP Addresses](./src/azure-publicipaddress/README.md) | Expose resources with static/dynamic allocation |
173
+
174
+ See individual service documentation for detailed configuration examples and best practices.
140
175
 
141
176
  ## Version-Specific Usage
142
177
 
@@ -209,6 +244,7 @@ We welcome contributions to this project! See our documentation on [how to get s
209
244
  ## Documentation
210
245
 
211
246
  - [Architecture Documentation](./docs/ARCHITECTURE.md) - High-level architecture and design patterns
247
+ - [Monitoring Guide](./docs/monitoring-guide.md) - Comprehensive monitoring and alerting documentation
212
248
  - [Versioning and Migrations User Guide](./docs/versioning-and-migrations-user-guide.md) - API version management and migration guidance
213
249
  - [Testing Guide](./docs/testing.md) - Testing practices and utilities
214
250
  - [Design Guide](./docs/design_guide.md) - Module design guidelines
@@ -0,0 +1,206 @@
1
+ # Monitoring & Alerting Guide
2
+
3
+ Azure L2 Constructs include comprehensive monitoring capabilities that can be enabled with a single method call. The monitoring framework automatically creates metric alerts, diagnostic settings, and activity log alerts for supported resources.
4
+
5
+ ## Overview
6
+
7
+ Monitoring is built directly into the constructs, allowing you to enable production-ready observability with minimal configuration. Each supported resource type includes sensible defaults for critical metrics while remaining fully customizable.
8
+
9
+ ## Supported Resources
10
+
11
+ | Resource | Metric Alerts | Diagnostic Settings | Activity Log Alerts | Documentation |
12
+ |----------|--------------|---------------------|-------------------|---------------|
13
+ | Virtual Machines | CPU, Memory, Disk Queue | ✅ Yes | VM Deletion | [VM Monitoring](../src/azure-virtualmachine/README.md#monitoring) |
14
+ | AKS Clusters | Node CPU/Memory, Failed Pods | ✅ Yes | Cluster Deletion | [AKS Monitoring](../src/azure-aks/README.md#monitoring) |
15
+ | Virtual Machine Scale Sets | CPU, Memory, Disk Queue | ✅ Yes | VMSS Deletion | [VMSS Monitoring](../src/azure-vmss/README.md#monitoring) |
16
+ | Storage Accounts | Availability, Egress, Transactions | ✅ Yes | Account Deletion | [Storage Monitoring](../src/azure-storageaccount/README.md#monitoring) |
17
+
18
+ ## Quick Start
19
+
20
+ All monitoring-enabled resources follow the same pattern using the `defaultMonitoring()` static method:
21
+
22
+ ```typescript
23
+ import { VirtualMachine } from "@microsoft/terraform-cdk-constructs/azure-virtualmachine";
24
+ import { ActionGroup } from "@microsoft/terraform-cdk-constructs/azure-actiongroup";
25
+
26
+ // Create action group for alert notifications
27
+ const actionGroup = new ActionGroup(this, "alerts", {
28
+ name: "ops-alerts",
29
+ groupShortName: "OpsTeam",
30
+ resourceGroupId: resourceGroup.id,
31
+ emailReceivers: [{
32
+ name: "ops-email",
33
+ emailAddress: "ops@company.com",
34
+ useCommonAlertSchema: true,
35
+ }],
36
+ });
37
+
38
+ // Create resource with built-in monitoring
39
+ const vm = new VirtualMachine(this, "vm", {
40
+ name: "my-vm",
41
+ location: "eastus",
42
+ resourceGroupId: resourceGroup.id,
43
+ // ... other VM configuration ...
44
+
45
+ // Enable monitoring with one line
46
+ monitoring: VirtualMachine.defaultMonitoring(
47
+ actionGroup.id,
48
+ workspaceId // Log Analytics workspace ID
49
+ ),
50
+ });
51
+ ```
52
+
53
+ ## What Gets Created
54
+
55
+ When you enable default monitoring, the following resources are automatically created:
56
+
57
+ ### 1. Metric Alerts
58
+
59
+ Resource-specific metric alerts with sensible thresholds (e.g., CPU > 80%, Memory < 1GB). Each alert is configured with:
60
+ - Appropriate severity levels
61
+ - Evaluation frequency and window size
62
+ - Aggregation methods
63
+ - Actions linked to your action group
64
+
65
+ ### 2. Diagnostic Settings
66
+
67
+ Sends all logs and metrics to Log Analytics workspace for:
68
+ - Centralized monitoring and analysis
69
+ - Long-term retention
70
+ - Query and visualization capabilities
71
+ - Integration with Azure Monitor
72
+
73
+ ### 3. Activity Log Alerts
74
+
75
+ Tracks critical administrative operations such as:
76
+ - Resource deletion events
77
+ - Configuration changes
78
+ - Security-related operations
79
+
80
+ ## Customization
81
+
82
+ All monitoring configurations support customization through options:
83
+
84
+ ```typescript
85
+ monitoring: VirtualMachine.defaultMonitoring(
86
+ actionGroup.id,
87
+ workspaceId,
88
+ {
89
+ // Customize thresholds
90
+ cpuThreshold: 90, // Raise CPU alert threshold to 90%
91
+ memoryThreshold: 524288000, // Lower memory threshold to 500MB
92
+
93
+ // Adjust severities (0=Critical, 1=Error, 2=Warning, 3=Info, 4=Verbose)
94
+ cpuAlertSeverity: 1, // Make CPU alerts critical
95
+
96
+ // Enable/disable specific alerts
97
+ enableDiskQueueAlert: false, // Disable disk queue monitoring
98
+ enableDeletionAlert: true, // Keep deletion tracking
99
+ }
100
+ )
101
+ ```
102
+
103
+ ## Service-Specific Documentation
104
+
105
+ For detailed monitoring configuration options, examples, and available metrics, see the service-specific documentation:
106
+
107
+ - **[Virtual Machine Monitoring](../src/azure-virtualmachine/README.md#monitoring)** - CPU, memory, disk, and network monitoring
108
+ - **[AKS Cluster Monitoring](../src/azure-aks/README.md#monitoring)** - Node health, pod failures, and cluster metrics
109
+ - **[VM Scale Set Monitoring](../src/azure-vmss/README.md#monitoring)** - Instance-level and aggregate monitoring
110
+ - **[Storage Account Monitoring](../src/azure-storageaccount/README.md#monitoring)** - Availability, performance, and transaction tracking
111
+
112
+ ## Advanced Usage
113
+
114
+ ### Combining Default Monitoring with Custom Alerts
115
+
116
+ You can extend the default monitoring configuration with additional custom alerts:
117
+
118
+ ```typescript
119
+ const monitoring = VirtualMachine.defaultMonitoring(
120
+ actionGroup.id,
121
+ workspaceId
122
+ );
123
+
124
+ // Add a custom network traffic alert
125
+ monitoring.metricAlerts?.push({
126
+ name: 'high-network-traffic',
127
+ description: 'Alert when network egress exceeds 10GB',
128
+ severity: 2,
129
+ frequency: 'PT5M',
130
+ windowSize: 'PT15M',
131
+ criteria: {
132
+ singleResourceMultipleMetricCriteria: [{
133
+ metricNamespace: 'Microsoft.Compute/virtualMachines',
134
+ metricName: 'Network Out Total',
135
+ aggregation: 'Total',
136
+ operator: 'GreaterThan',
137
+ threshold: 10737418240, // 10GB
138
+ }]
139
+ },
140
+ actionGroupIds: [actionGroup.id]
141
+ });
142
+ ```
143
+
144
+ ### Fully Custom Monitoring
145
+
146
+ For complete control, provide a custom monitoring configuration object. See individual service documentation for the complete monitoring configuration schema.
147
+
148
+ ## Best Practices
149
+
150
+ 1. **Always enable monitoring for production resources** - Use `defaultMonitoring()` as a baseline
151
+ 2. **Use Log Analytics workspaces** - Enable centralized logging and analysis
152
+ 3. **Configure action groups appropriately** - Ensure alerts reach the right teams
153
+ 4. **Customize thresholds for your workload** - Default values may not fit all scenarios
154
+ 5. **Test alerting** - Verify alerts trigger correctly before production deployment
155
+ 6. **Review metrics regularly** - Adjust thresholds based on actual usage patterns
156
+ 7. **Use multiple action groups** - Route different severity alerts to different teams
157
+ 8. **Enable diagnostic settings** - Essential for troubleshooting and compliance
158
+
159
+ ## Common Patterns
160
+
161
+ ### Development Environment
162
+
163
+ ```typescript
164
+ // Relaxed thresholds for dev
165
+ monitoring: VirtualMachine.defaultMonitoring(
166
+ devActionGroup.id,
167
+ devWorkspace.id,
168
+ {
169
+ cpuThreshold: 95,
170
+ enableDeletionAlert: false,
171
+ }
172
+ )
173
+ ```
174
+
175
+ ### Production Environment
176
+
177
+ ```typescript
178
+ // Stricter thresholds with critical severity
179
+ monitoring: VirtualMachine.defaultMonitoring(
180
+ prodActionGroup.id,
181
+ prodWorkspace.id,
182
+ {
183
+ cpuThreshold: 80,
184
+ memoryThreshold: 1073741824,
185
+ cpuAlertSeverity: 0, // Critical
186
+ memoryAlertSeverity: 0, // Critical
187
+ }
188
+ )
189
+ ```
190
+
191
+ ### Monitoring Disabled
192
+
193
+ ```typescript
194
+ // Explicitly disable monitoring
195
+ monitoring: {
196
+ enabled: false
197
+ }
198
+ ```
199
+
200
+ ## Related Documentation
201
+
202
+ - [Azure Monitor Documentation](https://learn.microsoft.com/en-us/azure/azure-monitor/)
203
+ - [Metric Alerts](../src/azure-metricalert/README.md)
204
+ - [Action Groups](../src/azure-actiongroup/README.md)
205
+ - [Diagnostic Settings](../src/azure-diagnosticsettings/README.md)
206
+ - [Activity Log Alerts](../src/azure-activitylogalert/README.md)
package/docs/testing.md CHANGED
@@ -244,6 +244,89 @@ The integration test will perform the following against the example file:
244
244
  - This step removes the test environment and ensures the infrastructure can be cleanly deleted.
245
245
  - It's designed to catch common problems that occur when removing infrastructure, especially those related to resource dependencies.
246
246
 
247
+ ### Integration Test Resource Management
248
+
249
+ All integration tests use an enhanced resource management system that provides:
250
+
251
+ - **Unique Naming**: Automatically generated, collision-free resource names
252
+ - **System Tags**: 15+ metadata tags for tracking and cleanup
253
+ - **Cleanup Verification**: Post-destroy validation ensures resources are completely removed
254
+ - **Cost Control**: Automated cleanup prevents orphaned resources
255
+
256
+ #### Quick Example
257
+
258
+ ```typescript
259
+ import { Testing } from "cdktf";
260
+ import { BaseTestStack, TerraformApplyCheckAndDestroy } from "../../testing";
261
+ import { TestRunMetadata } from "../../testing/lib/metadata";
262
+ import { ResourceGroup } from "../../azure-resourcegroup";
263
+
264
+ // Generate unique test run metadata
265
+ const testMetadata = new TestRunMetadata("my-test-integration", {
266
+ maxAgeHours: 4,
267
+ });
268
+
269
+ class MyTestStack extends BaseTestStack {
270
+ constructor(scope: Construct, id: string) {
271
+ super(scope, id, {
272
+ testRunOptions: {
273
+ maxAgeHours: testMetadata.maxAgeHours,
274
+ autoCleanup: testMetadata.autoCleanup,
275
+ cleanupPolicy: testMetadata.cleanupPolicy,
276
+ },
277
+ });
278
+
279
+ // Generate unique name
280
+ const rgName = this.generateResourceName(
281
+ "Microsoft.Resources/resourceGroups",
282
+ "my-test",
283
+ );
284
+
285
+ // Create resource with system tags
286
+ new ResourceGroup(this, "rg", {
287
+ name: rgName,
288
+ location: "eastus",
289
+ tags: {
290
+ ...this.getSystemTags(), // System tags for tracking
291
+ myCustomTag: "value", // Your custom tags
292
+ },
293
+ });
294
+ }
295
+ }
296
+
297
+ describe("My Test", () => {
298
+ it("should deploy and cleanup resources", () => {
299
+ const app = Testing.app();
300
+ const stack = new MyTestStack(app, "test");
301
+ const synthesized = Testing.fullSynth(stack);
302
+
303
+ // Enable cleanup verification
304
+ TerraformApplyCheckAndDestroy(synthesized, { verifyCleanup: true });
305
+ }, 600000);
306
+ });
307
+ ```
308
+
309
+ #### Key Benefits
310
+
311
+ ✅ **No Name Conflicts**: Tests can run in parallel without collision
312
+ ✅ **Automatic Cleanup**: Resources are properly destroyed after tests
313
+ ✅ **Cost Control**: Manual cleanup script removes orphaned resources
314
+ ✅ **Traceability**: Track resources back to specific test runs and commits
315
+
316
+ #### Manual Cleanup
317
+
318
+ Remove orphaned resources from failed tests:
319
+
320
+ ```bash
321
+ # Preview what would be deleted (dry run)
322
+ npx ts-node scripts/cleanup-test-resources.ts --dry-run
323
+
324
+ # Delete orphaned resources older than 2 hours
325
+ npx ts-node scripts/cleanup-test-resources.ts
326
+ ```
327
+
328
+ For comprehensive documentation, see the [Integration Test Resource Management Guide](./integration-test-resource-management-guide.md).
329
+
247
330
  ## End to End Tests
248
331
 
249
- End to End tests are used when testing a class that contains multiple stacks. The workflow is the same as with integration tests, however the test will take much longer.
332
+ End to End tests are used when testing a class that contains multiple stacks. The workflow is the same as with integration tests, however the test will take much longer.
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Azure Action Group construct
3
+ *
4
+ * This module provides the Action Group construct for Azure Monitor alerts.
5
+ * Action Groups serve as the central notification hub, supporting multiple
6
+ * receiver types including email, SMS, webhook, Azure Functions, Logic Apps,
7
+ * and voice calls.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ export * from "./lib";
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Azure Action Group construct
4
+ *
5
+ * This module provides the Action Group construct for Azure Monitor alerts.
6
+ * Action Groups serve as the central notification hub, supporting multiple
7
+ * receiver types including email, SMS, webhook, Azure Functions, Logic Apps,
8
+ * and voice calls.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
24
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ __exportStar(require("./lib"), exports);
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp1cmUtYWN0aW9uZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXp1cmUgQWN0aW9uIEdyb3VwIGNvbnN0cnVjdFxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBBY3Rpb24gR3JvdXAgY29uc3RydWN0IGZvciBBenVyZSBNb25pdG9yIGFsZXJ0cy5cbiAqIEFjdGlvbiBHcm91cHMgc2VydmUgYXMgdGhlIGNlbnRyYWwgbm90aWZpY2F0aW9uIGh1Yiwgc3VwcG9ydGluZyBtdWx0aXBsZVxuICogcmVjZWl2ZXIgdHlwZXMgaW5jbHVkaW5nIGVtYWlsLCBTTVMsIHdlYmhvb2ssIEF6dXJlIEZ1bmN0aW9ucywgTG9naWMgQXBwcyxcbiAqIGFuZCB2b2ljZSBjYWxscy5cbiAqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9saWJcIjtcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ /**
2
+ * API schemas for Azure Action Group across all supported versions
3
+ *
4
+ * This file defines the complete API schemas for Microsoft.Insights/actionGroups
5
+ * across all supported API versions. The schemas are used by the AzapiResource
6
+ * framework for validation, transformation, and version management.
7
+ */
8
+ import { ApiSchema, VersionConfig } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
9
+ /**
10
+ * API Schema for Action Group version 2021-09-01
11
+ */
12
+ export declare const ACTION_GROUP_SCHEMA_2021_09_01: ApiSchema;
13
+ /**
14
+ * Version configuration for Action Group 2021-09-01
15
+ */
16
+ export declare const ACTION_GROUP_VERSION_2021_09_01: VersionConfig;
17
+ /**
18
+ * All supported Action Group versions for registration
19
+ */
20
+ export declare const ALL_ACTION_GROUP_VERSIONS: VersionConfig[];
21
+ /**
22
+ * Resource type constant
23
+ */
24
+ export declare const ACTION_GROUP_TYPE = "Microsoft.Insights/actionGroups";