@microsoft/terraform-cdk-constructs 1.4.0 → 1.5.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 (66) hide show
  1. package/.jsii +6394 -4261
  2. package/API.md +29603 -26837
  3. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  4. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  5. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  6. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  7. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  8. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  9. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  10. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  11. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  12. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  13. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  14. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  15. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  16. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  17. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  18. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  19. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  20. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  21. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  22. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  23. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  24. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  25. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  26. package/lib/azure-subnet/lib/subnet.js +1 -1
  27. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  28. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  29. package/lib/azure-virtualnetworkgateway/index.d.ts +4 -0
  30. package/lib/azure-virtualnetworkgateway/index.js +21 -0
  31. package/lib/azure-virtualnetworkgateway/lib/index.d.ts +5 -0
  32. package/lib/azure-virtualnetworkgateway/lib/index.js +22 -0
  33. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.d.ts +32 -0
  34. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +298 -0
  35. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +368 -0
  36. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +285 -0
  37. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +12 -0
  38. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +129 -0
  39. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.d.ts +8 -0
  40. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +691 -0
  41. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  42. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  43. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  44. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  45. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  46. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  47. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  48. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  49. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  50. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
  51. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  52. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  53. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  54. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  55. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  56. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  57. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  58. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  59. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  60. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  61. package/lib/index.d.ts +2 -0
  62. package/lib/index.js +4 -2
  63. package/lib/testing/index.js +2 -2
  64. package/lib/testing/lib/cleanup.js +1 -1
  65. package/lib/testing/lib/metadata.js +1 -1
  66. package/package.json +1 -1
@@ -0,0 +1,368 @@
1
+ /**
2
+ * Azure Virtual Network Gateway implementation using AzapiResource framework
3
+ *
4
+ * This class provides a unified implementation for Azure Virtual Network Gateways that
5
+ * automatically handles version management, schema validation, and property
6
+ * transformation across all supported API versions.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2024-01-01 (Active)
10
+ * - 2024-05-01 (Active, Latest)
11
+ *
12
+ * Features:
13
+ * - Automatic latest version resolution when no version is specified
14
+ * - Explicit version pinning for stability requirements
15
+ * - Schema-driven validation and transformation
16
+ * - Full backward compatibility
17
+ * - JSII compliance for multi-language support
18
+ */
19
+ import * as cdktf from "cdktf";
20
+ import { Construct } from "constructs";
21
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
22
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
23
+ /**
24
+ * SKU configuration for Virtual Network Gateway
25
+ */
26
+ export interface VirtualNetworkGatewaySku {
27
+ /**
28
+ * Name of the SKU
29
+ * @example "Basic", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ"
30
+ */
31
+ readonly name: string;
32
+ /**
33
+ * Tier of the SKU
34
+ * @example "Basic", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ"
35
+ */
36
+ readonly tier: string;
37
+ }
38
+ /**
39
+ * IP configuration for Virtual Network Gateway
40
+ */
41
+ export interface VirtualNetworkGatewayIpConfiguration {
42
+ /**
43
+ * Name of the IP configuration
44
+ */
45
+ readonly name: string;
46
+ /**
47
+ * Private IP allocation method
48
+ * @defaultValue "Dynamic"
49
+ */
50
+ readonly privateIPAllocationMethod?: string;
51
+ /**
52
+ * ID of the subnet to use (must be GatewaySubnet)
53
+ */
54
+ readonly subnetId: string;
55
+ /**
56
+ * ID of the public IP address to use
57
+ */
58
+ readonly publicIPAddressId: string;
59
+ }
60
+ /**
61
+ * BGP settings for Virtual Network Gateway
62
+ */
63
+ export interface VirtualNetworkGatewayBgpSettings {
64
+ /**
65
+ * BGP ASN (Autonomous System Number)
66
+ * @example 65515
67
+ */
68
+ readonly asn?: number;
69
+ /**
70
+ * BGP peering address
71
+ */
72
+ readonly bgpPeeringAddress?: string;
73
+ /**
74
+ * Weight added to routes learned from this BGP speaker
75
+ */
76
+ readonly peerWeight?: number;
77
+ /**
78
+ * BGP peering addresses for active-active configuration
79
+ */
80
+ readonly bgpPeeringAddresses?: any[];
81
+ }
82
+ /**
83
+ * VPN client address pool configuration
84
+ */
85
+ export interface VirtualNetworkGatewayVpnClientAddressPool {
86
+ /**
87
+ * List of address prefixes for VPN client connections
88
+ */
89
+ readonly addressPrefixes: string[];
90
+ }
91
+ /**
92
+ * VPN client configuration for point-to-site connections
93
+ */
94
+ export interface VirtualNetworkGatewayVpnClientConfiguration {
95
+ /**
96
+ * VPN client address pool
97
+ */
98
+ readonly vpnClientAddressPool?: VirtualNetworkGatewayVpnClientAddressPool;
99
+ /**
100
+ * VPN client protocols
101
+ * @example ["IkeV2", "SSTP", "OpenVPN"]
102
+ */
103
+ readonly vpnClientProtocols?: string[];
104
+ /**
105
+ * VPN client root certificates
106
+ */
107
+ readonly vpnClientRootCertificates?: any[];
108
+ /**
109
+ * VPN client revoked certificates
110
+ */
111
+ readonly vpnClientRevokedCertificates?: any[];
112
+ /**
113
+ * Radius server address
114
+ */
115
+ readonly radiusServerAddress?: string;
116
+ /**
117
+ * Radius server secret
118
+ */
119
+ readonly radiusServerSecret?: string;
120
+ }
121
+ /**
122
+ * Custom routes configuration
123
+ */
124
+ export interface VirtualNetworkGatewayCustomRoutes {
125
+ /**
126
+ * List of address prefixes
127
+ */
128
+ readonly addressPrefixes?: string[];
129
+ }
130
+ /**
131
+ * Gateway default site reference
132
+ */
133
+ export interface VirtualNetworkGatewayDefaultSite {
134
+ /**
135
+ * Resource ID of the local network gateway to use as default site
136
+ */
137
+ readonly id: string;
138
+ }
139
+ /**
140
+ * Properties for the Azure Virtual Network Gateway
141
+ *
142
+ * Extends AzapiResourceProps with Virtual Network Gateway specific properties
143
+ */
144
+ export interface VirtualNetworkGatewayProps extends AzapiResourceProps {
145
+ /**
146
+ * Gateway type
147
+ * Must be either "Vpn" or "ExpressRoute"
148
+ */
149
+ readonly gatewayType: "Vpn" | "ExpressRoute";
150
+ /**
151
+ * VPN type for VPN gateways
152
+ * @defaultValue "RouteBased"
153
+ */
154
+ readonly vpnType?: "RouteBased" | "PolicyBased";
155
+ /**
156
+ * SKU configuration for the gateway
157
+ */
158
+ readonly sku: VirtualNetworkGatewaySku;
159
+ /**
160
+ * IP configurations for the gateway
161
+ * At least one IP configuration is required
162
+ * Two IP configurations are required for active-active mode
163
+ */
164
+ readonly ipConfigurations: VirtualNetworkGatewayIpConfiguration[];
165
+ /**
166
+ * Enable BGP for the gateway
167
+ * @defaultValue false
168
+ */
169
+ readonly enableBgp?: boolean;
170
+ /**
171
+ * Enable active-active mode for the gateway
172
+ * Requires two IP configurations
173
+ * @defaultValue false
174
+ */
175
+ readonly activeActive?: boolean;
176
+ /**
177
+ * BGP settings for the gateway
178
+ * Required if enableBgp is true
179
+ */
180
+ readonly bgpSettings?: VirtualNetworkGatewayBgpSettings;
181
+ /**
182
+ * VPN gateway generation
183
+ * @example "Generation1", "Generation2"
184
+ */
185
+ readonly vpnGatewayGeneration?: string;
186
+ /**
187
+ * Custom routes for the gateway
188
+ */
189
+ readonly customRoutes?: VirtualNetworkGatewayCustomRoutes;
190
+ /**
191
+ * Enable private IP address for the gateway
192
+ * @defaultValue false
193
+ */
194
+ readonly enablePrivateIpAddress?: boolean;
195
+ /**
196
+ * Default site for force tunneling
197
+ */
198
+ readonly gatewayDefaultSite?: VirtualNetworkGatewayDefaultSite;
199
+ /**
200
+ * VPN client configuration for point-to-site connections
201
+ */
202
+ readonly vpnClientConfiguration?: VirtualNetworkGatewayVpnClientConfiguration;
203
+ /**
204
+ * Resource group ID where the Gateway will be created
205
+ * Optional - will use the subscription scope if not provided
206
+ */
207
+ readonly resourceGroupId?: string;
208
+ /**
209
+ * The lifecycle rules to ignore changes
210
+ * Useful for properties that are externally managed
211
+ *
212
+ * @example ["tags"]
213
+ */
214
+ readonly ignoreChanges?: string[];
215
+ }
216
+ /**
217
+ * Azure Virtual Network Gateway implementation
218
+ *
219
+ * This class provides a single, version-aware implementation that replaces
220
+ * version-specific Virtual Network Gateway classes. It automatically handles version
221
+ * resolution, schema validation, and property transformation while maintaining
222
+ * full backward compatibility.
223
+ *
224
+ * Virtual Network Gateways are used to send encrypted traffic between Azure virtual
225
+ * networks and on-premises locations over the public Internet (VPN) or through
226
+ * Azure ExpressRoute circuits (ExpressRoute).
227
+ *
228
+ * @example
229
+ * // Basic VPN Gateway:
230
+ * const vpnGateway = new VirtualNetworkGateway(this, "vpnGateway", {
231
+ * name: "my-vpn-gateway",
232
+ * location: "eastus",
233
+ * resourceGroupId: resourceGroup.id,
234
+ * gatewayType: "Vpn",
235
+ * vpnType: "RouteBased",
236
+ * sku: {
237
+ * name: "VpnGw1",
238
+ * tier: "VpnGw1"
239
+ * },
240
+ * ipConfigurations: [{
241
+ * name: "default",
242
+ * subnetId: gatewaySubnet.id,
243
+ * publicIPAddressId: publicIp.id
244
+ * }]
245
+ * });
246
+ *
247
+ * @example
248
+ * // VPN Gateway with BGP:
249
+ * const vpnGateway = new VirtualNetworkGateway(this, "vpnGateway", {
250
+ * name: "my-vpn-gateway-bgp",
251
+ * location: "eastus",
252
+ * resourceGroupId: resourceGroup.id,
253
+ * gatewayType: "Vpn",
254
+ * vpnType: "RouteBased",
255
+ * sku: {
256
+ * name: "VpnGw1",
257
+ * tier: "VpnGw1"
258
+ * },
259
+ * enableBgp: true,
260
+ * bgpSettings: {
261
+ * asn: 65515,
262
+ * peerWeight: 0
263
+ * },
264
+ * ipConfigurations: [{
265
+ * name: "default",
266
+ * subnetId: gatewaySubnet.id,
267
+ * publicIPAddressId: publicIp.id
268
+ * }]
269
+ * });
270
+ *
271
+ * @example
272
+ * // Active-Active VPN Gateway:
273
+ * const vpnGateway = new VirtualNetworkGateway(this, "vpnGateway", {
274
+ * name: "my-vpn-gateway-aa",
275
+ * location: "eastus",
276
+ * resourceGroupId: resourceGroup.id,
277
+ * gatewayType: "Vpn",
278
+ * vpnType: "RouteBased",
279
+ * sku: {
280
+ * name: "VpnGw1",
281
+ * tier: "VpnGw1"
282
+ * },
283
+ * activeActive: true,
284
+ * ipConfigurations: [
285
+ * {
286
+ * name: "config1",
287
+ * subnetId: gatewaySubnet.id,
288
+ * publicIPAddressId: publicIp1.id
289
+ * },
290
+ * {
291
+ * name: "config2",
292
+ * subnetId: gatewaySubnet.id,
293
+ * publicIPAddressId: publicIp2.id
294
+ * }
295
+ * ]
296
+ * });
297
+ *
298
+ * @stability stable
299
+ */
300
+ export declare class VirtualNetworkGateway extends AzapiResource {
301
+ /**
302
+ * The input properties for this Virtual Network Gateway instance
303
+ */
304
+ readonly props: VirtualNetworkGatewayProps;
305
+ readonly idOutput: cdktf.TerraformOutput;
306
+ readonly nameOutput: cdktf.TerraformOutput;
307
+ readonly locationOutput: cdktf.TerraformOutput;
308
+ readonly tagsOutput: cdktf.TerraformOutput;
309
+ /**
310
+ * Creates a new Azure Virtual Network Gateway using the AzapiResource framework
311
+ *
312
+ * The constructor automatically handles version resolution, schema registration,
313
+ * validation, and resource creation. It maintains full backward compatibility
314
+ * with existing Virtual Network Gateway implementations.
315
+ *
316
+ * @param scope - The scope in which to define this construct
317
+ * @param id - The unique identifier for this instance
318
+ * @param props - Configuration properties for the Virtual Network Gateway
319
+ */
320
+ constructor(scope: Construct, id: string, props: VirtualNetworkGatewayProps);
321
+ /**
322
+ * Gets the default API version to use when no explicit version is specified
323
+ * Returns the most recent stable version as the default
324
+ */
325
+ protected defaultVersion(): string;
326
+ /**
327
+ * Gets the Azure resource type for Virtual Network Gateways
328
+ */
329
+ protected resourceType(): string;
330
+ /**
331
+ * Gets the API schema for the resolved version
332
+ * Uses the framework's schema resolution to get the appropriate schema
333
+ */
334
+ protected apiSchema(): ApiSchema;
335
+ /**
336
+ * Indicates that location is required for Virtual Network Gateways
337
+ */
338
+ protected requiresLocation(): boolean;
339
+ /**
340
+ * Creates the resource body for the Azure API call
341
+ * Transforms the input properties into the JSON format expected by Azure REST API
342
+ */
343
+ protected createResourceBody(props: any): any;
344
+ /**
345
+ * Get the subscription ID from the Virtual Network Gateway ID
346
+ * Extracts the subscription ID from the Azure resource ID format
347
+ */
348
+ get subscriptionId(): string;
349
+ /**
350
+ * Get the full resource identifier for use in other Azure resources
351
+ * Alias for the id property to match original interface
352
+ */
353
+ get resourceId(): string;
354
+ /**
355
+ * Add a tag to the Virtual Network Gateway
356
+ * Note: This modifies the construct props but requires a new deployment to take effect
357
+ */
358
+ addTag(key: string, value: string): void;
359
+ /**
360
+ * Remove a tag from the Virtual Network Gateway
361
+ * Note: This modifies the construct props but requires a new deployment to take effect
362
+ */
363
+ removeTag(key: string): void;
364
+ /**
365
+ * Applies ignore changes lifecycle rules if specified in props
366
+ */
367
+ private _applyIgnoreChanges;
368
+ }