@microsoft/terraform-cdk-constructs 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +12910 -8935
- package/API.md +31954 -26602
- package/lib/azure-actiongroup/lib/action-group.js +1 -1
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
- package/lib/azure-aks/lib/aks-cluster.js +1 -1
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
- package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
- package/lib/azure-dnszone/lib/dns-zone.js +1 -1
- package/lib/azure-metricalert/lib/metric-alert.js +1 -1
- package/lib/azure-networkinterface/lib/network-interface.js +1 -1
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
- package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
- package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
- package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
- package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
- package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
- package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
- package/lib/azure-roledefinition/lib/role-definition.js +1 -1
- package/lib/azure-storageaccount/lib/storage-account.js +1 -1
- package/lib/azure-subnet/lib/subnet.js +1 -1
- package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
- package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
- package/lib/azure-virtualnetworkgateway/index.d.ts +4 -0
- package/lib/azure-virtualnetworkgateway/index.js +21 -0
- package/lib/azure-virtualnetworkgateway/lib/index.d.ts +5 -0
- package/lib/azure-virtualnetworkgateway/lib/index.js +22 -0
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +298 -0
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +368 -0
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +285 -0
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +12 -0
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +129 -0
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.d.ts +8 -0
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +691 -0
- package/lib/azure-virtualnetworkgatewayconnection/index.d.ts +6 -0
- package/lib/azure-virtualnetworkgatewayconnection/index.js +23 -0
- package/lib/azure-virtualnetworkgatewayconnection/lib/index.d.ts +8 -0
- package/lib/azure-virtualnetworkgatewayconnection/lib/index.js +25 -0
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection-schemas.js +322 -0
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.d.ts +333 -0
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +310 -0
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.d.ts +12 -0
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.js +216 -0
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.d.ts +8 -0
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.js +706 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
- package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
- package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
- package/lib/index.d.ts +4 -0
- package/lib/index.js +6 -2
- package/lib/testing/index.js +2 -2
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.VirtualNetworkGatewayConnection = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Azure Virtual Network Gateway Connection implementation using AzapiResource framework
|
|
8
|
+
*
|
|
9
|
+
* This class provides a unified implementation for Azure Virtual Network Gateway Connections that
|
|
10
|
+
* automatically handles version management, schema validation, and property
|
|
11
|
+
* transformation across all supported API versions.
|
|
12
|
+
*
|
|
13
|
+
* Supported API Versions:
|
|
14
|
+
* - 2024-01-01 (Active)
|
|
15
|
+
* - 2024-05-01 (Active, Latest)
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Automatic latest version resolution when no version is specified
|
|
19
|
+
* - Explicit version pinning for stability requirements
|
|
20
|
+
* - Schema-driven validation and transformation
|
|
21
|
+
* - Type-safe connection type handling using discriminated unions
|
|
22
|
+
* - Full backward compatibility
|
|
23
|
+
* - JSII compliance for multi-language support
|
|
24
|
+
*/
|
|
25
|
+
const cdktf = require("cdktf");
|
|
26
|
+
const virtual_network_gateway_connection_schemas_1 = require("./virtual-network-gateway-connection-schemas");
|
|
27
|
+
const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
|
|
28
|
+
/**
|
|
29
|
+
* Azure Virtual Network Gateway Connection implementation
|
|
30
|
+
*
|
|
31
|
+
* This class provides a single, version-aware implementation that replaces
|
|
32
|
+
* version-specific Virtual Network Gateway Connection classes. It automatically handles version
|
|
33
|
+
* resolution, schema validation, and property transformation while maintaining
|
|
34
|
+
* full backward compatibility.
|
|
35
|
+
*
|
|
36
|
+
* Virtual Network Gateway Connections establish connectivity between Virtual Network Gateways
|
|
37
|
+
* and other networking endpoints:
|
|
38
|
+
* - IPsec: Site-to-Site VPN connections to on-premises networks
|
|
39
|
+
* - Vnet2Vnet: VNet-to-VNet connections between Azure virtual networks
|
|
40
|
+
* - ExpressRoute: Private connections to Azure via ExpressRoute circuits
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* // IPsec (Site-to-Site VPN) Connection:
|
|
44
|
+
* const s2sConnection = new VirtualNetworkGatewayConnection(this, "s2sConnection", {
|
|
45
|
+
* name: "my-s2s-connection",
|
|
46
|
+
* location: "eastus",
|
|
47
|
+
* resourceGroupId: resourceGroup.id,
|
|
48
|
+
* connectionType: "IPsec",
|
|
49
|
+
* virtualNetworkGateway1: { id: vpnGateway.id },
|
|
50
|
+
* localNetworkGateway2: { id: localGateway.id },
|
|
51
|
+
* sharedKey: "mySecureSharedKey123!"
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* // VNet-to-VNet Connection:
|
|
56
|
+
* const vnetConnection = new VirtualNetworkGatewayConnection(this, "vnetConnection", {
|
|
57
|
+
* name: "my-vnet-connection",
|
|
58
|
+
* location: "eastus",
|
|
59
|
+
* resourceGroupId: resourceGroup.id,
|
|
60
|
+
* connectionType: "Vnet2Vnet",
|
|
61
|
+
* virtualNetworkGateway1: { id: vpnGateway1.id },
|
|
62
|
+
* virtualNetworkGateway2: { id: vpnGateway2.id },
|
|
63
|
+
* sharedKey: "mySecureSharedKey123!",
|
|
64
|
+
* enableBgp: true
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* // ExpressRoute Connection:
|
|
69
|
+
* const erConnection = new VirtualNetworkGatewayConnection(this, "erConnection", {
|
|
70
|
+
* name: "my-er-connection",
|
|
71
|
+
* location: "eastus",
|
|
72
|
+
* resourceGroupId: resourceGroup.id,
|
|
73
|
+
* connectionType: "ExpressRoute",
|
|
74
|
+
* virtualNetworkGateway1: { id: erGateway.id },
|
|
75
|
+
* peer: { id: expressRouteCircuit.id },
|
|
76
|
+
* authorizationKey: "optional-auth-key-if-cross-subscription"
|
|
77
|
+
* });
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* // IPsec Connection with Custom IPsec Policies:
|
|
81
|
+
* const customConnection = new VirtualNetworkGatewayConnection(this, "customConnection", {
|
|
82
|
+
* name: "my-custom-connection",
|
|
83
|
+
* location: "eastus",
|
|
84
|
+
* resourceGroupId: resourceGroup.id,
|
|
85
|
+
* connectionType: "IPsec",
|
|
86
|
+
* virtualNetworkGateway1: { id: vpnGateway.id },
|
|
87
|
+
* localNetworkGateway2: { id: localGateway.id },
|
|
88
|
+
* sharedKey: "mySecureSharedKey123!",
|
|
89
|
+
* connectionProtocol: "IKEv2",
|
|
90
|
+
* ipsecPolicies: [{
|
|
91
|
+
* dhGroup: "DHGroup14",
|
|
92
|
+
* ikeEncryption: "AES256",
|
|
93
|
+
* ikeIntegrity: "SHA256",
|
|
94
|
+
* ipsecEncryption: "AES256",
|
|
95
|
+
* ipsecIntegrity: "SHA256",
|
|
96
|
+
* pfsGroup: "PFS2048",
|
|
97
|
+
* saLifeTimeSeconds: 3600,
|
|
98
|
+
* saDataSizeKilobytes: 102400000
|
|
99
|
+
* }],
|
|
100
|
+
* usePolicyBasedTrafficSelectors: true
|
|
101
|
+
* });
|
|
102
|
+
*
|
|
103
|
+
* @stability stable
|
|
104
|
+
*/
|
|
105
|
+
class VirtualNetworkGatewayConnection extends azapi_resource_1.AzapiResource {
|
|
106
|
+
/**
|
|
107
|
+
* Creates a new Azure Virtual Network Gateway Connection using the AzapiResource framework
|
|
108
|
+
*
|
|
109
|
+
* The constructor automatically handles version resolution, schema registration,
|
|
110
|
+
* validation, and resource creation. It maintains full backward compatibility
|
|
111
|
+
* with existing Virtual Network Gateway Connection implementations.
|
|
112
|
+
*
|
|
113
|
+
* @param scope - The scope in which to define this construct
|
|
114
|
+
* @param id - The unique identifier for this instance
|
|
115
|
+
* @param props - Configuration properties for the Virtual Network Gateway Connection
|
|
116
|
+
*/
|
|
117
|
+
constructor(scope, id, props) {
|
|
118
|
+
super(scope, id, props);
|
|
119
|
+
this.props = props;
|
|
120
|
+
// Add timeouts for connection provisioning (typically 30 minutes)
|
|
121
|
+
this.terraformResource.addOverride("timeouts", {
|
|
122
|
+
create: "30m",
|
|
123
|
+
update: "30m",
|
|
124
|
+
delete: "30m",
|
|
125
|
+
});
|
|
126
|
+
// Create Terraform outputs for easy access and referencing from other resources
|
|
127
|
+
this.idOutput = new cdktf.TerraformOutput(this, "id", {
|
|
128
|
+
value: this.id,
|
|
129
|
+
description: "The ID of the Virtual Network Gateway Connection",
|
|
130
|
+
});
|
|
131
|
+
this.nameOutput = new cdktf.TerraformOutput(this, "name", {
|
|
132
|
+
value: `\${${this.terraformResource.fqn}.name}`,
|
|
133
|
+
description: "The name of the Virtual Network Gateway Connection",
|
|
134
|
+
});
|
|
135
|
+
this.locationOutput = new cdktf.TerraformOutput(this, "location", {
|
|
136
|
+
value: `\${${this.terraformResource.fqn}.location}`,
|
|
137
|
+
description: "The location of the Virtual Network Gateway Connection",
|
|
138
|
+
});
|
|
139
|
+
this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
|
|
140
|
+
value: `\${${this.terraformResource.fqn}.tags}`,
|
|
141
|
+
description: "The tags assigned to the Virtual Network Gateway Connection",
|
|
142
|
+
});
|
|
143
|
+
// Override logical IDs to match original naming convention
|
|
144
|
+
this.idOutput.overrideLogicalId("id");
|
|
145
|
+
this.nameOutput.overrideLogicalId("name");
|
|
146
|
+
this.locationOutput.overrideLogicalId("location");
|
|
147
|
+
this.tagsOutput.overrideLogicalId("tags");
|
|
148
|
+
// Apply ignore changes if specified
|
|
149
|
+
this._applyIgnoreChanges();
|
|
150
|
+
}
|
|
151
|
+
// =============================================================================
|
|
152
|
+
// REQUIRED ABSTRACT METHODS FROM VersionedAzapiResource
|
|
153
|
+
// =============================================================================
|
|
154
|
+
/**
|
|
155
|
+
* Gets the default API version to use when no explicit version is specified
|
|
156
|
+
* Returns the most recent stable version as the default
|
|
157
|
+
*/
|
|
158
|
+
defaultVersion() {
|
|
159
|
+
return "2024-05-01";
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Gets the Azure resource type for Virtual Network Gateway Connections
|
|
163
|
+
*/
|
|
164
|
+
resourceType() {
|
|
165
|
+
return virtual_network_gateway_connection_schemas_1.VIRTUAL_NETWORK_GATEWAY_CONNECTION_TYPE;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Gets the API schema for the resolved version
|
|
169
|
+
* Uses the framework's schema resolution to get the appropriate schema
|
|
170
|
+
*/
|
|
171
|
+
apiSchema() {
|
|
172
|
+
return this.resolveSchema();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Indicates that location is required for Virtual Network Gateway Connections
|
|
176
|
+
*/
|
|
177
|
+
requiresLocation() {
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Creates the resource body for the Azure API call
|
|
182
|
+
* Transforms the input properties into the JSON format expected by Azure REST API
|
|
183
|
+
* Handles type-specific properties based on connectionType
|
|
184
|
+
*/
|
|
185
|
+
createResourceBody(props) {
|
|
186
|
+
const typedProps = props;
|
|
187
|
+
// Build the properties object based on connection type
|
|
188
|
+
const properties = {
|
|
189
|
+
connectionType: typedProps.connectionType,
|
|
190
|
+
virtualNetworkGateway1: {
|
|
191
|
+
id: typedProps.virtualNetworkGateway1.id,
|
|
192
|
+
properties: {},
|
|
193
|
+
},
|
|
194
|
+
connectionProtocol: typedProps.connectionProtocol || "IKEv2",
|
|
195
|
+
enableBgp: typedProps.enableBgp || false,
|
|
196
|
+
};
|
|
197
|
+
// Add optional common properties
|
|
198
|
+
if (typedProps.routingWeight !== undefined) {
|
|
199
|
+
properties.routingWeight = typedProps.routingWeight;
|
|
200
|
+
}
|
|
201
|
+
if (typedProps.dpdTimeoutSeconds !== undefined) {
|
|
202
|
+
properties.dpdTimeoutSeconds = typedProps.dpdTimeoutSeconds;
|
|
203
|
+
}
|
|
204
|
+
if (typedProps.ipsecPolicies !== undefined) {
|
|
205
|
+
properties.ipsecPolicies = typedProps.ipsecPolicies;
|
|
206
|
+
}
|
|
207
|
+
if (typedProps.usePolicyBasedTrafficSelectors !== undefined) {
|
|
208
|
+
properties.usePolicyBasedTrafficSelectors =
|
|
209
|
+
typedProps.usePolicyBasedTrafficSelectors;
|
|
210
|
+
}
|
|
211
|
+
if (typedProps.connectionMode !== undefined) {
|
|
212
|
+
properties.connectionMode = typedProps.connectionMode;
|
|
213
|
+
}
|
|
214
|
+
if (typedProps.egressNatRules !== undefined) {
|
|
215
|
+
properties.egressNatRules = typedProps.egressNatRules;
|
|
216
|
+
}
|
|
217
|
+
if (typedProps.ingressNatRules !== undefined) {
|
|
218
|
+
properties.ingressNatRules = typedProps.ingressNatRules;
|
|
219
|
+
}
|
|
220
|
+
// Add connection type-specific properties
|
|
221
|
+
switch (typedProps.connectionType) {
|
|
222
|
+
case "IPsec":
|
|
223
|
+
properties.localNetworkGateway2 = {
|
|
224
|
+
id: typedProps.localNetworkGateway2.id,
|
|
225
|
+
properties: {},
|
|
226
|
+
};
|
|
227
|
+
properties.sharedKey = typedProps.sharedKey;
|
|
228
|
+
break;
|
|
229
|
+
case "Vnet2Vnet":
|
|
230
|
+
properties.virtualNetworkGateway2 = {
|
|
231
|
+
id: typedProps.virtualNetworkGateway2.id,
|
|
232
|
+
properties: {},
|
|
233
|
+
};
|
|
234
|
+
properties.sharedKey = typedProps.sharedKey;
|
|
235
|
+
break;
|
|
236
|
+
case "ExpressRoute":
|
|
237
|
+
properties.peer = typedProps.peer;
|
|
238
|
+
if (typedProps.authorizationKey !== undefined) {
|
|
239
|
+
properties.authorizationKey = typedProps.authorizationKey;
|
|
240
|
+
}
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
location: this.location,
|
|
245
|
+
tags: this.allTags(),
|
|
246
|
+
properties: properties,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
// =============================================================================
|
|
250
|
+
// PUBLIC METHODS FOR VIRTUAL NETWORK GATEWAY CONNECTION OPERATIONS
|
|
251
|
+
// =============================================================================
|
|
252
|
+
/**
|
|
253
|
+
* Get the subscription ID from the Virtual Network Gateway Connection ID
|
|
254
|
+
* Extracts the subscription ID from the Azure resource ID format
|
|
255
|
+
*/
|
|
256
|
+
get subscriptionId() {
|
|
257
|
+
const idParts = this.id.split("/");
|
|
258
|
+
const subscriptionIndex = idParts.indexOf("subscriptions");
|
|
259
|
+
if (subscriptionIndex !== -1 && subscriptionIndex + 1 < idParts.length) {
|
|
260
|
+
return idParts[subscriptionIndex + 1];
|
|
261
|
+
}
|
|
262
|
+
throw new Error("Unable to extract subscription ID from Virtual Network Gateway Connection ID");
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Get the full resource identifier for use in other Azure resources
|
|
266
|
+
* Alias for the id property to match original interface
|
|
267
|
+
*/
|
|
268
|
+
get resourceId() {
|
|
269
|
+
return this.id;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Add a tag to the Virtual Network Gateway Connection
|
|
273
|
+
* Note: This modifies the construct props but requires a new deployment to take effect
|
|
274
|
+
*/
|
|
275
|
+
addTag(key, value) {
|
|
276
|
+
if (!this.props.tags) {
|
|
277
|
+
this.props.tags = {};
|
|
278
|
+
}
|
|
279
|
+
this.props.tags[key] = value;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Remove a tag from the Virtual Network Gateway Connection
|
|
283
|
+
* Note: This modifies the construct props but requires a new deployment to take effect
|
|
284
|
+
*/
|
|
285
|
+
removeTag(key) {
|
|
286
|
+
if (this.props.tags && this.props.tags[key]) {
|
|
287
|
+
delete this.props.tags[key];
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// =============================================================================
|
|
291
|
+
// PRIVATE HELPER METHODS
|
|
292
|
+
// =============================================================================
|
|
293
|
+
/**
|
|
294
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
295
|
+
*/
|
|
296
|
+
_applyIgnoreChanges() {
|
|
297
|
+
if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
|
|
298
|
+
this.terraformResource.addOverride("lifecycle", {
|
|
299
|
+
ignore_changes: this.props.ignoreChanges,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
exports.VirtualNetworkGatewayConnection = VirtualNetworkGatewayConnection;
|
|
305
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
306
|
+
VirtualNetworkGatewayConnection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGatewayConnection", version: "1.6.0" };
|
|
307
|
+
(() => {
|
|
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
|
+
})();
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXktY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya2dhdGV3YXljb25uZWN0aW9uL2xpYi92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS1jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILCtCQUErQjtBQUUvQiw2R0FHc0Q7QUFDdEQsOEVBR21EO0FBb01uRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRFRztBQUNILE1BQWEsK0JBQWdDLFNBQVEsOEJBQWE7SUFtQmhFOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUEyQztRQUUzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDN0MsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLGtEQUFrRDtTQUNoRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lB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QzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLHlCQUF5QjtJQUN6QixnRkFBZ0Y7SUFFaEY7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzlDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7YUFDekMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBelBILDBFQTBQQzs7O0FBelBDO0lBQ0UsOEJBQWEsQ0FBQyxlQUFlLENBQzNCLG9GQUF1QyxFQUN2Qyw0RkFBK0MsQ0FDaEQsQ0FBQztBQUNKLENBQUMsR0FBQSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBenVyZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBDb25uZWN0aW9uIGltcGxlbWVudGF0aW9uIHVzaW5nIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gZm9yIEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IENvbm5lY3Rpb25zIHRoYXRcbiAqIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmQgcHJvcGVydHlcbiAqIHRyYW5zZm9ybWF0aW9uIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDI0LTAxLTAxIChBY3RpdmUpXG4gKiAtIDIwMjQtMDUtMDEgKEFjdGl2ZSwgTGF0ZXN0KVxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBBdXRvbWF0aWMgbGF0ZXN0IHZlcnNpb24gcmVzb2x1dGlvbiB3aGVuIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gKiAtIEV4cGxpY2l0IHZlcnNpb24gcGlubmluZyBmb3Igc3RhYmlsaXR5IHJlcXVpcmVtZW50c1xuICogLSBTY2hlbWEtZHJpdmVuIHZhbGlkYXRpb24gYW5kIHRyYW5zZm9ybWF0aW9uXG4gKiAtIFR5cGUtc2FmZSBjb25uZWN0aW9uIHR5cGUgaGFuZGxpbmcgdXNpbmcgZGlzY3JpbWluYXRlZCB1bmlvbnNcbiAqIC0gRnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gKiAtIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICovXG5cbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIEFMTF9WSVJUVUFMX05FVFdPUktfR0FURVdBWV9DT05ORUNUSU9OX1ZFUlNJT05TLFxuICBWSVJUVUFMX05FVFdPUktfR0FURVdBWV9DT05ORUNUSU9OX1RZUEUsXG59IGZyb20gXCIuL3ZpcnR1YWwtbmV0d29yay1nYXRld2F5LWNvbm5lY3Rpb24tc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgQXphcGlSZXNvdXJjZSxcbiAgQXphcGlSZXNvdXJjZVByb3BzLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmltcG9ydCB7IEFwaVNjaGVtYSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlSZWZlcmVuY2Uge1xuICAvKipcbiAgICogUmVzb3VyY2UgSUQgb2YgdGhlIHZpcnR1YWwgbmV0d29yayBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZmVyZW5jZSB0byBhbiBFeHByZXNzUm91dGUgY2lyY3VpdCBwZWVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVlclJlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBSZXNvdXJjZSBJRCBvZiB0aGUgRXhwcmVzc1JvdXRlIGNpcmN1aXRcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSVBzZWMgcG9saWN5IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJcHNlY1BvbGljeSB7XG4gIC8qKlxuICAgKiBESCBHcm91cCBmb3IgSUtFIFBoYXNlIDFcbiAgICogQGV4YW1wbGUgXCJESEdyb3VwMTRcIiwgXCJESEdyb3VwMjA0OFwiLCBcIkVDUDI1NlwiLCBcIkVDUDM4NFwiXG4gICAqL1xuICByZWFkb25seSBkaEdyb3VwOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElLRSBlbmNyeXB0aW9uIGFsZ29yaXRobVxuICAgKiBAZXhhbXBsZSBcIkFFUzEyOFwiLCBcIkFFUzE5MlwiLCBcIkFFUzI1NlwiLCBcIkdDTUFFUzEyOFwiLCBcIkdDTUFFUzI1NlwiXG4gICAqL1xuICByZWFkb25seSBpa2VFbmNyeXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElLRSBpbnRlZ3JpdHkgYWxnb3JpdGhtXG4gICAqIEBleGFtcGxlIFwiU0hBMjU2XCIsIFwiU0hBMzg0XCIsIFwiR0NNQUVTMTI4XCIsIFwiR0NNQUVTMjU2XCJcbiAgICovXG4gIHJlYWRvbmx5IGlrZUludGVncml0eTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHNlYyBlbmNyeXB0aW9uIGFsZ29yaXRobVxuICAgKiBAZXhhbXBsZSBcIkFFUzEyOFwiLCBcIkFFUzE5MlwiLCBcIkFFUzI1NlwiLCBcIkdDTUFFUzEyOFwiLCBcIkdDTUFFUzE5MlwiLCBcIkdDTUFFUzI1NlwiXG4gICAqL1xuICByZWFkb25seSBpcHNlY0VuY3J5cHRpb246IHN0cmluZztcblxuICAvKipcbiAgICogSVBzZWMgaW50ZWdyaXR5IGFsZ29yaXRobVxuICAgKiBAZXhhbXBsZSBcIlNIQTI1NlwiLCBcIkdDTUFFUzEyOFwiLCBcIkdDTUFFUzE5MlwiLCBcIkdDTUFFUzI1NlwiXG4gICAqL1xuICByZWFkb25seSBpcHNlY0ludGVncml0eTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQRlMgR3JvdXAgZm9yIElLRSBQaGFzZSAyXG4gICAqIEBleGFtcGxlIFwiTm9uZVwiLCBcIlBGUzFcIiwgXCJQRlMyXCIsIFwiUEZTMjA0OFwiLCBcIkVDUDI1NlwiLCBcIkVDUDM4NFwiLCBcIlBGUzI0XCIsIFwiUEZTMTRcIiwgXCJQRlNNTVwiXG4gICAqL1xuICByZWFkb25seSBwZnNHcm91cDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTQSBsaWZldGltZSBpbiBzZWNvbmRzXG4gICAqIEBleGFtcGxlIDM2MDBcbiAgICovXG4gIHJlYWRvbmx5IHNhTGlmZVRpbWVTZWNvbmRzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNBIGRhdGEgc2l6ZSBpbiBraWxvYnl0ZXNcbiAgICogQGV4YW1wbGUgMTAyNDAwMDAwXG4gICAqL1xuICByZWFkb25seSBzYURhdGFTaXplS2lsb2J5dGVzOiBudW1iZXI7XG59XG5cbi8qKlxuICogTkFUIHJ1bGUgcmVmZXJlbmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0UnVsZVJlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBSZXNvdXJjZSBJRCBvZiB0aGUgTkFUIHJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IENvbm5lY3Rpb25cbiAqXG4gKiBTdXBwb3J0cyB0aHJlZSBjb25uZWN0aW9uIHR5cGVzOiBJUHNlYyAoU2l0ZS10by1TaXRlKSwgVk5ldC10by1WTmV0LCBhbmQgRXhwcmVzc1JvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbE5ldHdvcmtHYXRld2F5Q29ubmVjdGlvblByb3BzXG4gIGV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIENvbm5lY3Rpb24gdHlwZVxuICAgKiBNdXN0IGJlIFwiSVBzZWNcIiwgXCJWbmV0MlZuZXRcIiwgb3IgXCJFeHByZXNzUm91dGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGlvblR5cGU6IFwiSVBzZWNcIiB8IFwiVm5ldDJWbmV0XCIgfCBcIkV4cHJlc3NSb3V0ZVwiO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBncm91cCBJRCB3aGVyZSB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGZpcnN0IHZpcnR1YWwgbmV0d29yayBnYXRld2F5XG4gICAqIFJlcXVpcmVkIGZvciBhbGwgY29ubmVjdGlvbiB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbE5ldHdvcmtHYXRld2F5MTogR2F0ZXdheVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBsb2NhbCBuZXR3b3JrIGdhdGV3YXlcbiAgICogUmVxdWlyZWQgZm9yIElQc2VjIGNvbm5lY3Rpb25zIG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsTmV0d29ya0dhdGV3YXkyPzogR2F0ZXdheVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBzZWNvbmQgdmlydHVhbCBuZXR3b3JrIGdhdGV3YXlcbiAgICogUmVxdWlyZWQgZm9yIFZuZXQyVm5ldCBjb25uZWN0aW9ucyBvbmx5XG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsTmV0d29ya0dhdGV3YXkyPzogR2F0ZXdheVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBFeHByZXNzUm91dGUgY2lyY3VpdFxuICAgKiBSZXF1aXJlZCBmb3IgRXhwcmVzc1JvdXRlIGNvbm5lY3Rpb25zIG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHBlZXI/OiBQZWVyUmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBTaGFyZWQga2V5IGZvciB0aGUgY29ubmVjdGlvblxuICAgKiBSZXF1aXJlZCBmb3IgSVBzZWMgYW5kIFZuZXQyVm5ldCBjb25uZWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkS2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRob3JpemF0aW9uIGtleSBmb3IgdGhlIEV4cHJlc3NSb3V0ZSBjaXJjdWl0XG4gICAqIE9wdGlvbmFsIC0gZm9yIGNyb3NzLXN1YnNjcmlwdGlvbiBFeHByZXNzUm91dGUgY29ubmVjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcml6YXRpb25LZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbm5lY3Rpb24gcHJvdG9jb2wgdG8gdXNlXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJJS0V2MlwiXG4gICAqL1xuICByZWFkb25seSBjb25uZWN0aW9uUHJvdG9jb2w/OiBcIklLRXYyXCIgfCBcIklLRXYxXCI7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBCR1AgZm9yIHRoZSBjb25uZWN0aW9uXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUJncD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJvdXRpbmcgd2VpZ2h0IGZvciB0aGUgY29ubmVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGluZ1dlaWdodD86IG51bWJlcjtcblxuICAvKipcbiAgICogRFBEIHRpbWVvdXQgaW4gc2Vjb25kc1xuICAgKi9cbiAgcmVhZG9ubHkgZHBkVGltZW91dFNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBJUHNlYyBwb2xpY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaXBzZWNQb2xpY2llcz86IElwc2VjUG9saWN5W107XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBwb2xpY3ktYmFzZWQgdHJhZmZpYyBzZWxlY3RvcnNcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlUG9saWN5QmFzZWRUcmFmZmljU2VsZWN0b3JzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29ubmVjdGlvbiBtb2RlXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJEZWZhdWx0XCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25Nb2RlPzogXCJEZWZhdWx0XCIgfCBcIlJlc3BvbmRlck9ubHlcIiB8IFwiSW5pdGlhdG9yT25seVwiO1xuXG4gIC8qKlxuICAgKiBFZ3Jlc3MgTkFUIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBlZ3Jlc3NOYXRSdWxlcz86IE5hdFJ1bGVSZWZlcmVuY2VbXTtcblxuICAvKipcbiAgICogSW5ncmVzcyBOQVQgcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IGluZ3Jlc3NOYXRSdWxlcz86IE5hdFJ1bGVSZWZlcmVuY2VbXTtcblxuICAvKipcbiAgICogVGhlIGxpZmVjeWNsZSBydWxlcyB0byBpZ25vcmUgY2hhbmdlc1xuICAgKiBAZXhhbXBsZSBbXCJ0YWdzXCJdXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDaGFuZ2VzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQXp1cmUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvbiBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW5nbGUsIHZlcnNpb24tYXdhcmUgaW1wbGVtZW50YXRpb24gdGhhdCByZXBsYWNlc1xuICogdmVyc2lvbi1zcGVjaWZpYyBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBDb25uZWN0aW9uIGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvbnMgZXN0YWJsaXNoIGNvbm5lY3Rpdml0eSBiZXR3ZWVuIFZpcnR1YWwgTmV0d29yayBHYXRld2F5c1xuICogYW5kIG90aGVyIG5ldHdvcmtpbmcgZW5kcG9pbnRzOlxuICogLSBJUHNlYzogU2l0ZS10by1TaXRlIFZQTiBjb25uZWN0aW9ucyB0byBvbi1wcmVtaXNlcyBuZXR3b3Jrc1xuICogLSBWbmV0MlZuZXQ6IFZOZXQtdG8tVk5ldCBjb25uZWN0aW9ucyBiZXR3ZWVuIEF6dXJlIHZpcnR1YWwgbmV0d29ya3NcbiAqIC0gRXhwcmVzc1JvdXRlOiBQcml2YXRlIGNvbm5lY3Rpb25zIHRvIEF6dXJlIHZpYSBFeHByZXNzUm91dGUgY2lyY3VpdHNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSVBzZWMgKFNpdGUtdG8tU2l0ZSBWUE4pIENvbm5lY3Rpb246XG4gKiBjb25zdCBzMnNDb25uZWN0aW9uID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheUNvbm5lY3Rpb24odGhpcywgXCJzMnNDb25uZWN0aW9uXCIsIHtcbiAqICAgbmFtZTogXCJteS1zMnMtY29ubmVjdGlvblwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogICBjb25uZWN0aW9uVHlwZTogXCJJUHNlY1wiLFxuICogICB2aXJ0dWFsTmV0d29ya0dhdGV3YXkxOiB7IGlkOiB2cG5HYXRld2F5LmlkIH0sXG4gKiAgIGxvY2FsTmV0d29ya0dhdGV3YXkyOiB7IGlkOiBsb2NhbEdhdGV3YXkuaWQgfSxcbiAqICAgc2hhcmVkS2V5OiBcIm15U2VjdXJlU2hhcmVkS2V5MTIzIVwiXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVk5ldC10by1WTmV0IENvbm5lY3Rpb246XG4gKiBjb25zdCB2bmV0Q29ubmVjdGlvbiA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXlDb25uZWN0aW9uKHRoaXMsIFwidm5ldENvbm5lY3Rpb25cIiwge1xuICogICBuYW1lOiBcIm15LXZuZXQtY29ubmVjdGlvblwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogICBjb25uZWN0aW9uVHlwZTogXCJWbmV0MlZuZXRcIixcbiAqICAgdmlydHVhbE5ldHdvcmtHYXRld2F5MTogeyBpZDogdnBuR2F0ZXdheTEuaWQgfSxcbiAqICAgdmlydHVhbE5ldHdvcmtHYXRld2F5MjogeyBpZDogdnBuR2F0ZXdheTIuaWQgfSxcbiAqICAgc2hhcmVkS2V5OiBcIm15U2VjdXJlU2hhcmVkS2V5MTIzIVwiLFxuICogICBlbmFibGVCZ3A6IHRydWVcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFeHByZXNzUm91dGUgQ29ubmVjdGlvbjpcbiAqIGNvbnN0IGVyQ29ubmVjdGlvbiA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXlDb25uZWN0aW9uKHRoaXMsIFwiZXJDb25uZWN0aW9uXCIsIHtcbiAqICAgbmFtZTogXCJteS1lci1jb25uZWN0aW9uXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGNvbm5lY3Rpb25UeXBlOiBcIkV4cHJlc3NSb3V0ZVwiLFxuICogICB2aXJ0dWFsTmV0d29ya0dhdGV3YXkxOiB7IGlkOiBlckdhdGV3YXkuaWQgfSxcbiAqICAgcGVlcjogeyBpZDogZXhwcmVzc1JvdXRlQ2lyY3VpdC5pZCB9LFxuICogICBhdXRob3JpemF0aW9uS2V5OiBcIm9wdGlvbmFsLWF1dGgta2V5LWlmLWNyb3NzLXN1YnNjcmlwdGlvblwiXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSVBzZWMgQ29ubmVjdGlvbiB3aXRoIEN1c3RvbSBJUHNlYyBQb2xpY2llczpcbiAqIGNvbnN0IGN1c3RvbUNvbm5lY3Rpb24gPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5Q29ubmVjdGlvbih0aGlzLCBcImN1c3RvbUNvbm5lY3Rpb25cIiwge1xuICogICBuYW1lOiBcIm15LWN1c3RvbS1jb25uZWN0aW9uXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGNvbm5lY3Rpb25UeXBlOiBcIklQc2VjXCIsXG4gKiAgIHZpcnR1YWxOZXR3b3JrR2F0ZXdheTE6IHsgaWQ6IHZwbkdhdGV3YXkuaWQgfSxcbiAqICAgbG9jYWxOZXR3b3JrR2F0ZXdheTI6IHsgaWQ6IGxvY2FsR2F0ZXdheS5pZCB9LFxuICogICBzaGFyZWRLZXk6IFwibXlTZWN1cmVTaGFyZWRLZXkxMjMhXCIsXG4gKiAgIGNvbm5lY3Rpb25Qcm90b2NvbDogXCJJS0V2MlwiLFxuICogICBpcHNlY1BvbGljaWVzOiBbe1xuICogICAgIGRoR3JvdXA6IFwiREhHcm91cDE0XCIsXG4gKiAgICAgaWtlRW5jcnlwdGlvbjogXCJBRVMyNTZcIixcbiAqICAgICBpa2VJbnRlZ3JpdHk6IFwiU0hBMjU2XCIsXG4gKiAgICAgaXBzZWNFbmNyeXB0aW9uOiBcIkFFUzI1NlwiLFxuICogICAgIGlwc2VjSW50ZWdyaXR5OiBcIlNIQTI1NlwiLFxuICogICAgIHBmc0dyb3VwOiBcIlBGUzIwNDhcIixcbiAqICAgICBzYUxpZmVUaW1lU2Vjb25kczogMzYwMCxcbiAqICAgICBzYURhdGFTaXplS2lsb2J5dGVzOiAxMDI0MDAwMDBcbiAqICAgfV0sXG4gKiAgIHVzZVBvbGljeUJhc2VkVHJhZmZpY1NlbGVjdG9yczogdHJ1ZVxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFZpcnR1YWxOZXR3b3JrR2F0ZXdheUNvbm5lY3Rpb24gZXh0ZW5kcyBBemFwaVJlc291cmNlIHtcbiAgc3RhdGljIHtcbiAgICBBemFwaVJlc291cmNlLnJlZ2lzdGVyU2NoZW1hcyhcbiAgICAgIFZJUlRVQUxfTkVUV09SS19HQVRFV0FZX0NPTk5FQ1RJT05fVFlQRSxcbiAgICAgIEFMTF9WSVJUVUFMX05FVFdPUktfR0FURVdBWV9DT05ORUNUSU9OX1ZFUlNJT05TLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoaXMgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvbiBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlDb25uZWN0aW9uUHJvcHM7XG5cbiAgLy8gT3V0cHV0IHByb3BlcnRpZXMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZ1xuICBwdWJsaWMgcmVhZG9ubHkgaWRPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2F0aW9uT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSB0YWdzT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvbiB1c2luZyB0aGUgQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAgICpcbiAgICogVGhlIGNvbnN0cnVjdG9yIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIHJlc29sdXRpb24sIHNjaGVtYSByZWdpc3RyYXRpb24sXG4gICAqIHZhbGlkYXRpb24sIGFuZCByZXNvdXJjZSBjcmVhdGlvbi4gSXQgbWFpbnRhaW5zIGZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgKiB3aXRoIGV4aXN0aW5nIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IENvbm5lY3Rpb24gaW1wbGVtZW50YXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpbnN0YW5jZVxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBDb25uZWN0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheUNvbm5lY3Rpb25Qcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBBZGQgdGltZW91dHMgZm9yIGNvbm5lY3Rpb24gcHJvdmlzaW9uaW5nICh0eXBpY2FsbHkgMzAgbWludXRlcylcbiAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwidGltZW91dHNcIiwge1xuICAgICAgY3JlYXRlOiBcIjMwbVwiLFxuICAgICAgdXBkYXRlOiBcIjMwbVwiLFxuICAgICAgZGVsZXRlOiBcIjMwbVwiLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIFRlcnJhZm9ybSBvdXRwdXRzIGZvciBlYXN5IGFjY2VzcyBhbmQgcmVmZXJlbmNpbmcgZnJvbSBvdGhlciByZXNvdXJjZXNcbiAgICB0aGlzLmlkT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImlkXCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmlkLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIElEIG9mIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBDb25uZWN0aW9uXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvblwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJsb2NhdGlvblwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5sb2NhdGlvbn1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGxvY2F0aW9uIG9mIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBDb25uZWN0aW9uXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnRhZ3NPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwidGFnc1wiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS50YWdzfWAsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJUaGUgdGFncyBhc3NpZ25lZCB0byB0aGUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvblwiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHMgdG8gbWF0Y2ggb3JpZ2luYWwgbmFtaW5nIGNvbnZlbnRpb25cbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9jYXRpb25cIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcblxuICAgIC8vIEFwcGx5IGlnbm9yZSBjaGFuZ2VzIGlmIHNwZWNpZmllZFxuICAgIHRoaXMuX2FwcGx5SWdub3JlQ2hhbmdlcygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVRVUlSRUQgQUJTVFJBQ1QgTUVUSE9EUyBGUk9NIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGVmYXVsdCBBUEkgdmVyc2lvbiB0byB1c2Ugd2hlbiBubyBleHBsaWNpdCB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICAgKiBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBzdGFibGUgdmVyc2lvbiBhcyB0aGUgZGVmYXVsdFxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZmF1bHRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiMjAyNC0wNS0wMVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF6dXJlIHJlc291cmNlIHR5cGUgZm9yIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IENvbm5lY3Rpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFZJUlRVQUxfTkVUV09SS19HQVRFV0FZX0NPTk5FQ1RJT05fVFlQRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBUEkgc2NoZW1hIGZvciB0aGUgcmVzb2x2ZWQgdmVyc2lvblxuICAgKiBVc2VzIHRoZSBmcmFtZXdvcmsncyBzY2hlbWEgcmVzb2x1dGlvbiB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIHNjaGVtYVxuICAgKi9cbiAgcHJvdGVjdGVkIGFwaVNjaGVtYSgpOiBBcGlTY2hlbWEge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTY2hlbWEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBsb2NhdGlvbiBpcyByZXF1aXJlZCBmb3IgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvbnNcbiAgICovXG4gIHByb3RlY3RlZCByZXF1aXJlc0xvY2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHJlc291cmNlIGJvZHkgZm9yIHRoZSBBenVyZSBBUEkgY2FsbFxuICAgKiBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIGludG8gdGhlIEpTT04gZm9ybWF0IGV4cGVjdGVkIGJ5IEF6dXJlIFJFU1QgQVBJXG4gICAqIEhhbmRsZXMgdHlwZS1zcGVjaWZpYyBwcm9wZXJ0aWVzIGJhc2VkIG9uIGNvbm5lY3Rpb25UeXBlXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBWaXJ0dWFsTmV0d29ya0dhdGV3YXlDb25uZWN0aW9uUHJvcHM7XG5cbiAgICAvLyBCdWlsZCB0aGUgcHJvcGVydGllcyBvYmplY3QgYmFzZWQgb24gY29ubmVjdGlvbiB0eXBlXG4gICAgY29uc3QgcHJvcGVydGllczogYW55ID0ge1xuICAgICAgY29ubmVjdGlvblR5cGU6IHR5cGVkUHJvcHMuY29ubmVjdGlvblR5cGUsXG4gICAgICB2aXJ0dWFsTmV0d29ya0dhdGV3YXkxOiB7XG4gICAgICAgIGlkOiB0eXBlZFByb3BzLnZpcnR1YWxOZXR3b3JrR2F0ZXdheTEuaWQsXG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgfSxcbiAgICAgIGNvbm5lY3Rpb25Qcm90b2NvbDogdHlwZWRQcm9wcy5jb25uZWN0aW9uUHJvdG9jb2wgfHwgXCJJS0V2MlwiLFxuICAgICAgZW5hYmxlQmdwOiB0eXBlZFByb3BzLmVuYWJsZUJncCB8fCBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIG9wdGlvbmFsIGNvbW1vbiBwcm9wZXJ0aWVzXG4gICAgaWYgKHR5cGVkUHJvcHMucm91dGluZ1dlaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0aWVzLnJvdXRpbmdXZWlnaHQgPSB0eXBlZFByb3BzLnJvdXRpbmdXZWlnaHQ7XG4gICAgfVxuICAgIGlmICh0eXBlZFByb3BzLmRwZFRpbWVvdXRTZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMuZHBkVGltZW91dFNlY29uZHMgPSB0eXBlZFByb3BzLmRwZFRpbWVvdXRTZWNvbmRzO1xuICAgIH1cbiAgICBpZiAodHlwZWRQcm9wcy5pcHNlY1BvbGljaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMuaXBzZWNQb2xpY2llcyA9IHR5cGVkUHJvcHMuaXBzZWNQb2xpY2llcztcbiAgICB9XG4gICAgaWYgKHR5cGVkUHJvcHMudXNlUG9saWN5QmFzZWRUcmFmZmljU2VsZWN0b3JzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMudXNlUG9saWN5QmFzZWRUcmFmZmljU2VsZWN0b3JzID1cbiAgICAgICAgdHlwZWRQcm9wcy51c2VQb2xpY3lCYXNlZFRyYWZmaWNTZWxlY3RvcnM7XG4gICAgfVxuICAgIGlmICh0eXBlZFByb3BzLmNvbm5lY3Rpb25Nb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMuY29ubmVjdGlvbk1vZGUgPSB0eXBlZFByb3BzLmNvbm5lY3Rpb25Nb2RlO1xuICAgIH1cbiAgICBpZiAodHlwZWRQcm9wcy5lZ3Jlc3NOYXRSdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0aWVzLmVncmVzc05hdFJ1bGVzID0gdHlwZWRQcm9wcy5lZ3Jlc3NOYXRSdWxlcztcbiAgICB9XG4gICAgaWYgKHR5cGVkUHJvcHMuaW5ncmVzc05hdFJ1bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMuaW5ncmVzc05hdFJ1bGVzID0gdHlwZWRQcm9wcy5pbmdyZXNzTmF0UnVsZXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbm5lY3Rpb24gdHlwZS1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgc3dpdGNoICh0eXBlZFByb3BzLmNvbm5lY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIFwiSVBzZWNcIjpcbiAgICAgICAgcHJvcGVydGllcy5sb2NhbE5ldHdvcmtHYXRld2F5MiA9IHtcbiAgICAgICAgICBpZDogdHlwZWRQcm9wcy5sb2NhbE5ldHdvcmtHYXRld2F5MiEuaWQsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH07XG4gICAgICAgIHByb3BlcnRpZXMuc2hhcmVkS2V5ID0gdHlwZWRQcm9wcy5zaGFyZWRLZXk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiVm5ldDJWbmV0XCI6XG4gICAgICAgIHByb3BlcnRpZXMudmlydHVhbE5ldHdvcmtHYXRld2F5MiA9IHtcbiAgICAgICAgICBpZDogdHlwZWRQcm9wcy52aXJ0dWFsTmV0d29ya0dhdGV3YXkyIS5pZCxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvcGVydGllcy5zaGFyZWRLZXkgPSB0eXBlZFByb3BzLnNoYXJlZEtleTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJFeHByZXNzUm91dGVcIjpcbiAgICAgICAgcHJvcGVydGllcy5wZWVyID0gdHlwZWRQcm9wcy5wZWVyO1xuICAgICAgICBpZiAodHlwZWRQcm9wcy5hdXRob3JpemF0aW9uS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzLmF1dGhvcml6YXRpb25LZXkgPSB0eXBlZFByb3BzLmF1dGhvcml6YXRpb25LZXk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2F0aW9uOiB0aGlzLmxvY2F0aW9uLFxuICAgICAgdGFnczogdGhpcy5hbGxUYWdzKCksXG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgVklSVFVBTCBORVRXT1JLIEdBVEVXQVkgQ09OTkVDVElPTiBPUEVSQVRJT05TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3Vic2NyaXB0aW9uIElEIGZyb20gdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IENvbm5lY3Rpb24gSURcbiAgICogRXh0cmFjdHMgdGhlIHN1YnNjcmlwdGlvbiBJRCBmcm9tIHRoZSBBenVyZSByZXNvdXJjZSBJRCBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBnZXQgc3Vic2NyaXB0aW9uSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpZFBhcnRzID0gdGhpcy5pZC5zcGxpdChcIi9cIik7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uSW5kZXggPSBpZFBhcnRzLmluZGV4T2YoXCJzdWJzY3JpcHRpb25zXCIpO1xuICAgIGlmIChzdWJzY3JpcHRpb25JbmRleCAhPT0gLTEgJiYgc3Vic2NyaXB0aW9uSW5kZXggKyAxIDwgaWRQYXJ0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBpZFBhcnRzW3N1YnNjcmlwdGlvbkluZGV4ICsgMV07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvbiBJRFwiLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmdWxsIHJlc291cmNlIGlkZW50aWZpZXIgZm9yIHVzZSBpbiBvdGhlciBBenVyZSByZXNvdXJjZXNcbiAgICogQWxpYXMgZm9yIHRoZSBpZCBwcm9wZXJ0eSB0byBtYXRjaCBvcmlnaW5hbCBpbnRlcmZhY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhZyB0byB0aGUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvblxuICAgKiBOb3RlOiBUaGlzIG1vZGlmaWVzIHRoZSBjb25zdHJ1Y3QgcHJvcHMgYnV0IHJlcXVpcmVzIGEgbmV3IGRlcGxveW1lbnQgdG8gdGFrZSBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBDb25uZWN0aW9uXG4gICAqIE5vdGU6IFRoaXMgbW9kaWZpZXMgdGhlIGNvbnN0cnVjdCBwcm9wcyBidXQgcmVxdWlyZXMgYSBuZXcgZGVwbG95bWVudCB0byB0YWtlIGVmZmVjdFxuICAgKi9cbiAgcHVibGljIHJlbW92ZVRhZyhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRhZ3MgJiYgdGhpcy5wcm9wcy50YWdzW2tleV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb3BzLnRhZ3Nba2V5XTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIEhFTFBFUiBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzIGlmIHNwZWNpZmllZCBpbiBwcm9wc1xuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlJZ25vcmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMgJiYgdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwge1xuICAgICAgICBpZ25vcmVfY2hhbmdlczogdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test for Azure Virtual Network Gateway Connection
|
|
3
|
+
*
|
|
4
|
+
* This test demonstrates basic usage of the VirtualNetworkGatewayConnection construct
|
|
5
|
+
* by creating a VNet-to-VNet connection between two virtual network gateways.
|
|
6
|
+
*
|
|
7
|
+
* Note: Virtual Network Gateways take 30-45 minutes each to provision,
|
|
8
|
+
* so this test has an extended timeout (~120 minutes total).
|
|
9
|
+
*
|
|
10
|
+
* Run with: npm run integration:nostream
|
|
11
|
+
*/
|
|
12
|
+
import "cdktf/lib/testing/adapters/jest";
|
package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Integration test for Azure Virtual Network Gateway Connection
|
|
4
|
+
*
|
|
5
|
+
* This test demonstrates basic usage of the VirtualNetworkGatewayConnection construct
|
|
6
|
+
* by creating a VNet-to-VNet connection between two virtual network gateways.
|
|
7
|
+
*
|
|
8
|
+
* Note: Virtual Network Gateways take 30-45 minutes each to provision,
|
|
9
|
+
* so this test has an extended timeout (~120 minutes total).
|
|
10
|
+
*
|
|
11
|
+
* Run with: npm run integration:nostream
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const cdktf_1 = require("cdktf");
|
|
15
|
+
require("cdktf/lib/testing/adapters/jest");
|
|
16
|
+
const azure_publicipaddress_1 = require("../../azure-publicipaddress");
|
|
17
|
+
const azure_resourcegroup_1 = require("../../azure-resourcegroup");
|
|
18
|
+
const azure_subnet_1 = require("../../azure-subnet");
|
|
19
|
+
const azure_virtualnetwork_1 = require("../../azure-virtualnetwork");
|
|
20
|
+
const azure_virtualnetworkgateway_1 = require("../../azure-virtualnetworkgateway");
|
|
21
|
+
const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
|
|
22
|
+
const testing_1 = require("../../testing");
|
|
23
|
+
const metadata_1 = require("../../testing/lib/metadata");
|
|
24
|
+
const virtual_network_gateway_connection_1 = require("../lib/virtual-network-gateway-connection");
|
|
25
|
+
// Generate unique test run metadata for this test suite
|
|
26
|
+
const testMetadata = new metadata_1.TestRunMetadata("virtual-network-gateway-connection-integration", {
|
|
27
|
+
maxAgeHours: 4,
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Example stack demonstrating Virtual Network Gateway Connection usage
|
|
31
|
+
* Creates two gateways and a VNet-to-VNet connection between them
|
|
32
|
+
*/
|
|
33
|
+
class VirtualNetworkGatewayConnectionExampleStack extends testing_1.BaseTestStack {
|
|
34
|
+
constructor(scope, id) {
|
|
35
|
+
super(scope, id, {
|
|
36
|
+
testRunOptions: {
|
|
37
|
+
maxAgeHours: testMetadata.maxAgeHours,
|
|
38
|
+
autoCleanup: testMetadata.autoCleanup,
|
|
39
|
+
cleanupPolicy: testMetadata.cleanupPolicy,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
// Configure AZAPI provider
|
|
43
|
+
new provider_1.AzapiProvider(this, "azapi", {});
|
|
44
|
+
// Generate unique names
|
|
45
|
+
const rgName = this.generateResourceName("Microsoft.Resources/resourceGroups", "conn");
|
|
46
|
+
// Create resource group
|
|
47
|
+
const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "rg", {
|
|
48
|
+
name: rgName,
|
|
49
|
+
location: "eastus",
|
|
50
|
+
tags: {
|
|
51
|
+
...this.systemTags(),
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
// ===== First Virtual Network and Gateway =====
|
|
55
|
+
const vnet1 = new azure_virtualnetwork_1.VirtualNetwork(this, "vnet1", {
|
|
56
|
+
name: "vnet1-conn-example",
|
|
57
|
+
location: "eastus",
|
|
58
|
+
resourceGroupId: resourceGroup.id,
|
|
59
|
+
addressSpace: {
|
|
60
|
+
addressPrefixes: ["10.1.0.0/16"],
|
|
61
|
+
},
|
|
62
|
+
tags: {
|
|
63
|
+
...this.systemTags(),
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
const gatewaySubnet1 = new azure_subnet_1.Subnet(this, "gateway-subnet1", {
|
|
67
|
+
name: "GatewaySubnet",
|
|
68
|
+
virtualNetworkName: "vnet1-conn-example",
|
|
69
|
+
virtualNetworkId: vnet1.id,
|
|
70
|
+
resourceGroupId: resourceGroup.id,
|
|
71
|
+
addressPrefix: "10.1.1.0/24",
|
|
72
|
+
});
|
|
73
|
+
const publicIp1 = new azure_publicipaddress_1.PublicIPAddress(this, "public-ip1", {
|
|
74
|
+
name: "pip-gateway1-example",
|
|
75
|
+
location: "eastus",
|
|
76
|
+
resourceGroupId: resourceGroup.id,
|
|
77
|
+
sku: {
|
|
78
|
+
name: "Standard",
|
|
79
|
+
tier: "Regional",
|
|
80
|
+
},
|
|
81
|
+
publicIPAllocationMethod: "Static",
|
|
82
|
+
tags: {
|
|
83
|
+
...this.systemTags(),
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
const gateway1 = new azure_virtualnetworkgateway_1.VirtualNetworkGateway(this, "vpn-gateway1", {
|
|
87
|
+
name: "vng1-conn-example",
|
|
88
|
+
location: "eastus",
|
|
89
|
+
resourceGroupId: resourceGroup.id,
|
|
90
|
+
gatewayType: "Vpn",
|
|
91
|
+
vpnType: "RouteBased",
|
|
92
|
+
sku: {
|
|
93
|
+
name: "VpnGw1",
|
|
94
|
+
tier: "VpnGw1",
|
|
95
|
+
},
|
|
96
|
+
ipConfigurations: [
|
|
97
|
+
{
|
|
98
|
+
name: "default",
|
|
99
|
+
subnetId: gatewaySubnet1.id,
|
|
100
|
+
publicIPAddressId: publicIp1.id,
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
tags: {
|
|
104
|
+
...this.systemTags(),
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
// ===== Second Virtual Network and Gateway =====
|
|
108
|
+
const vnet2 = new azure_virtualnetwork_1.VirtualNetwork(this, "vnet2", {
|
|
109
|
+
name: "vnet2-conn-example",
|
|
110
|
+
location: "eastus",
|
|
111
|
+
resourceGroupId: resourceGroup.id,
|
|
112
|
+
addressSpace: {
|
|
113
|
+
addressPrefixes: ["10.2.0.0/16"],
|
|
114
|
+
},
|
|
115
|
+
tags: {
|
|
116
|
+
...this.systemTags(),
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
const gatewaySubnet2 = new azure_subnet_1.Subnet(this, "gateway-subnet2", {
|
|
120
|
+
name: "GatewaySubnet",
|
|
121
|
+
virtualNetworkName: "vnet2-conn-example",
|
|
122
|
+
virtualNetworkId: vnet2.id,
|
|
123
|
+
resourceGroupId: resourceGroup.id,
|
|
124
|
+
addressPrefix: "10.2.1.0/24",
|
|
125
|
+
});
|
|
126
|
+
const publicIp2 = new azure_publicipaddress_1.PublicIPAddress(this, "public-ip2", {
|
|
127
|
+
name: "pip-gateway2-example",
|
|
128
|
+
location: "eastus",
|
|
129
|
+
resourceGroupId: resourceGroup.id,
|
|
130
|
+
sku: {
|
|
131
|
+
name: "Standard",
|
|
132
|
+
tier: "Regional",
|
|
133
|
+
},
|
|
134
|
+
publicIPAllocationMethod: "Static",
|
|
135
|
+
tags: {
|
|
136
|
+
...this.systemTags(),
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
const gateway2 = new azure_virtualnetworkgateway_1.VirtualNetworkGateway(this, "vpn-gateway2", {
|
|
140
|
+
name: "vng2-conn-example",
|
|
141
|
+
location: "eastus",
|
|
142
|
+
resourceGroupId: resourceGroup.id,
|
|
143
|
+
gatewayType: "Vpn",
|
|
144
|
+
vpnType: "RouteBased",
|
|
145
|
+
sku: {
|
|
146
|
+
name: "VpnGw1",
|
|
147
|
+
tier: "VpnGw1",
|
|
148
|
+
},
|
|
149
|
+
ipConfigurations: [
|
|
150
|
+
{
|
|
151
|
+
name: "default",
|
|
152
|
+
subnetId: gatewaySubnet2.id,
|
|
153
|
+
publicIPAddressId: publicIp2.id,
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
tags: {
|
|
157
|
+
...this.systemTags(),
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
// ===== VNet-to-VNet Connections =====
|
|
161
|
+
// Connection from gateway1 to gateway2
|
|
162
|
+
new virtual_network_gateway_connection_1.VirtualNetworkGatewayConnection(this, "vnet-to-vnet-conn1", {
|
|
163
|
+
name: "conn1to2-example",
|
|
164
|
+
location: "eastus",
|
|
165
|
+
resourceGroupId: resourceGroup.id,
|
|
166
|
+
connectionType: "Vnet2Vnet",
|
|
167
|
+
virtualNetworkGateway1: {
|
|
168
|
+
id: gateway1.id,
|
|
169
|
+
},
|
|
170
|
+
virtualNetworkGateway2: {
|
|
171
|
+
id: gateway2.id,
|
|
172
|
+
},
|
|
173
|
+
sharedKey: "SecureSharedKey123!",
|
|
174
|
+
tags: {
|
|
175
|
+
...this.systemTags(),
|
|
176
|
+
example: "vnet-to-vnet",
|
|
177
|
+
direction: "1-to-2",
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
// Connection from gateway2 to gateway1 (bidirectional)
|
|
181
|
+
new virtual_network_gateway_connection_1.VirtualNetworkGatewayConnection(this, "vnet-to-vnet-conn2", {
|
|
182
|
+
name: "conn2to1-example",
|
|
183
|
+
location: "eastus",
|
|
184
|
+
resourceGroupId: resourceGroup.id,
|
|
185
|
+
connectionType: "Vnet2Vnet",
|
|
186
|
+
virtualNetworkGateway1: {
|
|
187
|
+
id: gateway2.id,
|
|
188
|
+
},
|
|
189
|
+
virtualNetworkGateway2: {
|
|
190
|
+
id: gateway1.id,
|
|
191
|
+
},
|
|
192
|
+
sharedKey: "SecureSharedKey123!",
|
|
193
|
+
tags: {
|
|
194
|
+
...this.systemTags(),
|
|
195
|
+
example: "vnet-to-vnet",
|
|
196
|
+
direction: "2-to-1",
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
describe.skip("Virtual Network Gateway Connection Integration Test", () => {
|
|
202
|
+
// NOTE: This test takes 60-90 minutes due to gateway provisioning time (2 gateways).
|
|
203
|
+
// This test provisions two complete VPN gateways and tests VNet-to-VNet connections.
|
|
204
|
+
// SKIPPED BY DEFAULT: Run explicitly with: jest --testNamePattern="Virtual Network Gateway Connection"
|
|
205
|
+
it("should deploy gateways and connections, validate idempotency, and cleanup", () => {
|
|
206
|
+
const app = cdktf_1.Testing.app();
|
|
207
|
+
const stack = new VirtualNetworkGatewayConnectionExampleStack(app, "test-virtual-network-gateway-connection");
|
|
208
|
+
const synthesized = cdktf_1.Testing.fullSynth(stack);
|
|
209
|
+
// This will:
|
|
210
|
+
// 1. Run terraform apply to deploy resources (2 gateways + 2 connections)
|
|
211
|
+
// 2. Run terraform plan to check idempotency (no changes expected)
|
|
212
|
+
// 3. Run terraform destroy to cleanup resources
|
|
213
|
+
(0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
|
|
214
|
+
}, 7200000); // 120 minutes timeout (2 hours) for dual gateway provisioning
|
|
215
|
+
});
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXktY29ubmVjdGlvbi5pbnRlZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya2dhdGV3YXljb25uZWN0aW9uL3Rlc3QvdmlydHVhbC1uZXR3b3JrLWdhdGV3YXktY29ubmVjdGlvbi5pbnRlZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRzs7QUFFSCxpQ0FBZ0M7QUFFaEMsMkNBQXlDO0FBQ3pDLHVFQUE4RDtBQUM5RCxtRUFBMEQ7QUFDMUQscURBQTRDO0FBQzVDLHFFQUE0RDtBQUM1RCxtRkFBMEU7QUFDMUUsa0ZBQW9GO0FBQ3BGLDJDQUE2RTtBQUM3RSx5REFBNkQ7QUFDN0Qsa0dBQTRGO0FBRTVGLHdEQUF3RDtBQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFlLENBQ3RDLGdEQUFnRCxFQUNoRDtJQUNFLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FDRixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSwyQ0FBNEMsU0FBUSx1QkFBYTtJQUNyRSxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGNBQWMsRUFBRTtnQkFDZCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMkJBQTJCO1FBQzNCLElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLHdCQUF3QjtRQUN4QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ3RDLG9DQUFvQyxFQUNwQyxNQUFNLENBQ1AsQ0FBQztRQUVGLHdCQUF3QjtRQUN4QixNQUFNLGFBQWEsR0FB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U0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLGFBQWE7UUFDYiwwRUFBMEU7UUFDMUUsbUVBQW1FO1FBQ25FLGdEQUFnRDtRQUNoRCxJQUFBLHVDQUE2QixFQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLDhEQUE4RDtBQUM3RSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvblxuICpcbiAqIFRoaXMgdGVzdCBkZW1vbnN0cmF0ZXMgYmFzaWMgdXNhZ2Ugb2YgdGhlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheUNvbm5lY3Rpb24gY29uc3RydWN0XG4gKiBieSBjcmVhdGluZyBhIFZOZXQtdG8tVk5ldCBjb25uZWN0aW9uIGJldHdlZW4gdHdvIHZpcnR1YWwgbmV0d29yayBnYXRld2F5cy5cbiAqXG4gKiBOb3RlOiBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheXMgdGFrZSAzMC00NSBtaW51dGVzIGVhY2ggdG8gcHJvdmlzaW9uLFxuICogc28gdGhpcyB0ZXN0IGhhcyBhbiBleHRlbmRlZCB0aW1lb3V0ICh+MTIwIG1pbnV0ZXMgdG90YWwpLlxuICpcbiAqIFJ1biB3aXRoOiBucG0gcnVuIGludGVncmF0aW9uOm5vc3RyZWFtXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCBcImNka3RmL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IFB1YmxpY0lQQWRkcmVzcyB9IGZyb20gXCIuLi8uLi9henVyZS1wdWJsaWNpcGFkZHJlc3NcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiLi4vLi4vYXp1cmUtcmVzb3VyY2Vncm91cFwiO1xuaW1wb3J0IHsgU3VibmV0IH0gZnJvbSBcIi4uLy4uL2F6dXJlLXN1Ym5ldFwiO1xuaW1wb3J0IHsgVmlydHVhbE5ldHdvcmsgfSBmcm9tIFwiLi4vLi4vYXp1cmUtdmlydHVhbG5ldHdvcmtcIjtcbmltcG9ydCB7IFZpcnR1YWxOZXR3b3JrR2F0ZXdheSB9IGZyb20gXCIuLi8uLi9henVyZS12aXJ0dWFsbmV0d29ya2dhdGV3YXlcIjtcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBCYXNlVGVzdFN0YWNrLCBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5pbXBvcnQgeyBUZXN0UnVuTWV0YWRhdGEgfSBmcm9tIFwiLi4vLi4vdGVzdGluZy9saWIvbWV0YWRhdGFcIjtcbmltcG9ydCB7IFZpcnR1YWxOZXR3b3JrR2F0ZXdheUNvbm5lY3Rpb24gfSBmcm9tIFwiLi4vbGliL3ZpcnR1YWwtbmV0d29yay1nYXRld2F5LWNvbm5lY3Rpb25cIjtcblxuLy8gR2VuZXJhdGUgdW5pcXVlIHRlc3QgcnVuIG1ldGFkYXRhIGZvciB0aGlzIHRlc3Qgc3VpdGVcbmNvbnN0IHRlc3RNZXRhZGF0YSA9IG5ldyBUZXN0UnVuTWV0YWRhdGEoXG4gIFwidmlydHVhbC1uZXR3b3JrLWdhdGV3YXktY29ubmVjdGlvbi1pbnRlZ3JhdGlvblwiLFxuICB7XG4gICAgbWF4QWdlSG91cnM6IDQsXG4gIH0sXG4pO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBDb25uZWN0aW9uIHVzYWdlXG4gKiBDcmVhdGVzIHR3byBnYXRld2F5cyBhbmQgYSBWTmV0LXRvLVZOZXQgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZW1cbiAqL1xuY2xhc3MgVmlydHVhbE5ldHdvcmtHYXRld2F5Q29ubmVjdGlvbkV4YW1wbGVTdGFjayBleHRlbmRzIEJhc2VUZXN0U3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXN0UnVuT3B0aW9uczoge1xuICAgICAgICBtYXhBZ2VIb3VyczogdGVzdE1ldGFkYXRhLm1heEFnZUhvdXJzLFxuICAgICAgICBhdXRvQ2xlYW51cDogdGVzdE1ldGFkYXRhLmF1dG9DbGVhbnVwLFxuICAgICAgICBjbGVhbnVwUG9saWN5OiB0ZXN0TWV0YWRhdGEuY2xlYW51cFBvbGljeSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBDb25maWd1cmUgQVpBUEkgcHJvdmlkZXJcbiAgICBuZXcgQXphcGlQcm92aWRlcih0aGlzLCBcImF6YXBpXCIsIHt9KTtcblxuICAgIC8vIEdlbmVyYXRlIHVuaXF1ZSBuYW1lc1xuICAgIGNvbnN0IHJnTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHNcIixcbiAgICAgIFwiY29ublwiLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgcmVzb3VyY2UgZ3JvdXBcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJyZ1wiLCB7XG4gICAgICBuYW1lOiByZ05hbWUsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT0gRmlyc3QgVmlydHVhbCBOZXR3b3JrIGFuZCBHYXRld2F5ID09PT09XG4gICAgY29uc3Qgdm5ldDEgPSBuZXcgVmlydHVhbE5ldHdvcmsodGhpcywgXCJ2bmV0MVwiLCB7XG4gICAgICBuYW1lOiBcInZuZXQxLWNvbm4tZXhhbXBsZVwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBhZGRyZXNzU3BhY2U6IHtcbiAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiBbXCIxMC4xLjAuMC8xNlwiXSxcbiAgICAgIH0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdhdGV3YXlTdWJuZXQxID0gbmV3IFN1Ym5ldCh0aGlzLCBcImdhdGV3YXktc3VibmV0MVwiLCB7XG4gICAgICBuYW1lOiBcIkdhdGV3YXlTdWJuZXRcIixcbiAgICAgIHZpcnR1YWxOZXR3b3JrTmFtZTogXCJ2bmV0MS1jb25uLWV4YW1wbGVcIixcbiAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IHZuZXQxLmlkLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgYWRkcmVzc1ByZWZpeDogXCIxMC4xLjEuMC8yNFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljSXAxID0gbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInB1YmxpYy1pcDFcIiwge1xuICAgICAgbmFtZTogXCJwaXAtZ2F0ZXdheTEtZXhhbXBsZVwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBza3U6IHtcbiAgICAgICAgbmFtZTogXCJTdGFuZGFyZFwiLFxuICAgICAgICB0aWVyOiBcIlJlZ2lvbmFsXCIsXG4gICAgICB9LFxuICAgICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBnYXRld2F5MSA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkodGhpcywgXCJ2cG4tZ2F0ZXdheTFcIiwge1xuICAgICAgbmFtZTogXCJ2bmcxLWNvbm4tZXhhbXBsZVwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgIHZwblR5cGU6IFwiUm91dGVCYXNlZFwiLFxuICAgICAgc2t1OiB7XG4gICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICB9LFxuICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgc3VibmV0SWQ6IGdhdGV3YXlTdWJuZXQxLmlkLFxuICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOiBwdWJsaWNJcDEuaWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PSBTZWNvbmQgVmlydHVhbCBOZXR3b3JrIGFuZCBHYXRld2F5ID09PT09XG4gICAgY29uc3Qgdm5ldDIgPSBuZXcgVmlydHVhbE5ldHdvcmsodGhpcywgXCJ2bmV0MlwiLCB7XG4gICAgICBuYW1lOiBcInZuZXQyLWNvbm4tZXhhbXBsZVwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBhZGRyZXNzU3BhY2U6IHtcbiAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiBbXCIxMC4yLjAuMC8xNlwiXSxcbiAgICAgIH0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdhdGV3YXlTdWJuZXQyID0gbmV3IFN1Ym5ldCh0aGlzLCBcImdhdGV3YXktc3VibmV0MlwiLCB7XG4gICAgICBuYW1lOiBcIkdhdGV3YXlTdWJuZXRcIixcbiAgICAgIHZpcnR1YWxOZXR3b3JrTmFtZTogXCJ2bmV0Mi1jb25uLWV4YW1wbGVcIixcbiAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IHZuZXQyLmlkLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgYWRkcmVzc1ByZWZpeDogXCIxMC4yLjEuMC8yNFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljSXAyID0gbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInB1YmxpYy1pcDJcIiwge1xuICAgICAgbmFtZTogXCJwaXAtZ2F0ZXdheTItZXhhbXBsZVwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBza3U6IHtcbiAgICAgICAgbmFtZTogXCJTdGFuZGFyZFwiLFxuICAgICAgICB0aWVyOiBcIlJlZ2lvbmFsXCIsXG4gICAgICB9LFxuICAgICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBnYXRld2F5MiA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkodGhpcywgXCJ2cG4tZ2F0ZXdheTJcIiwge1xuICAgICAgbmFtZTogXCJ2bmcyLWNvbm4tZXhhbXBsZVwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgIHZwblR5cGU6IFwiUm91dGVCYXNlZFwiLFxuICAgICAgc2t1OiB7XG4gICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICB9LFxuICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgc3VibmV0SWQ6IGdhdGV3YXlTdWJuZXQyLmlkLFxuICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOiBwdWJsaWNJcDIuaWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PSBWTmV0LXRvLVZOZXQgQ29ubmVjdGlvbnMgPT09PT1cbiAgICAvLyBDb25uZWN0aW9uIGZyb20gZ2F0ZXdheTEgdG8gZ2F0ZXdheTJcbiAgICBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5Q29ubmVjdGlvbih0aGlzLCBcInZuZXQtdG8tdm5ldC1jb25uMVwiLCB7XG4gICAgICBuYW1lOiBcImNvbm4xdG8yLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgY29ubmVjdGlvblR5cGU6IFwiVm5ldDJWbmV0XCIsXG4gICAgICB2aXJ0dWFsTmV0d29ya0dhdGV3YXkxOiB7XG4gICAgICAgIGlkOiBnYXRld2F5MS5pZCxcbiAgICAgIH0sXG4gICAgICB2aXJ0dWFsTmV0d29ya0dhdGV3YXkyOiB7XG4gICAgICAgIGlkOiBnYXRld2F5Mi5pZCxcbiAgICAgIH0sXG4gICAgICBzaGFyZWRLZXk6IFwiU2VjdXJlU2hhcmVkS2V5MTIzIVwiLFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgICAgZXhhbXBsZTogXCJ2bmV0LXRvLXZuZXRcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIjEtdG8tMlwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENvbm5lY3Rpb24gZnJvbSBnYXRld2F5MiB0byBnYXRld2F5MSAoYmlkaXJlY3Rpb25hbClcbiAgICBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5Q29ubmVjdGlvbih0aGlzLCBcInZuZXQtdG8tdm5ldC1jb25uMlwiLCB7XG4gICAgICBuYW1lOiBcImNvbm4ydG8xLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgY29ubmVjdGlvblR5cGU6IFwiVm5ldDJWbmV0XCIsXG4gICAgICB2aXJ0dWFsTmV0d29ya0dhdGV3YXkxOiB7XG4gICAgICAgIGlkOiBnYXRld2F5Mi5pZCxcbiAgICAgIH0sXG4gICAgICB2aXJ0dWFsTmV0d29ya0dhdGV3YXkyOiB7XG4gICAgICAgIGlkOiBnYXRld2F5MS5pZCxcbiAgICAgIH0sXG4gICAgICBzaGFyZWRLZXk6IFwiU2VjdXJlU2hhcmVkS2V5MTIzIVwiLFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgICAgZXhhbXBsZTogXCJ2bmV0LXRvLXZuZXRcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIjItdG8tMVwiLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5kZXNjcmliZS5za2lwKFwiVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgQ29ubmVjdGlvbiBJbnRlZ3JhdGlvbiBUZXN0XCIsICgpID0+IHtcbiAgLy8gTk9URTogVGhpcyB0ZXN0IHRha2VzIDYwLTkwIG1pbnV0ZXMgZHVlIHRvIGdhdGV3YXkgcHJvdmlzaW9uaW5nIHRpbWUgKDIgZ2F0ZXdheXMpLlxuICAvLyBUaGlzIHRlc3QgcHJvdmlzaW9ucyB0d28gY29tcGxldGUgVlBOIGdhdGV3YXlzIGFuZCB0ZXN0cyBWTmV0LXRvLVZOZXQgY29ubmVjdGlvbnMuXG4gIC8vIFNLSVBQRUQgQlkgREVGQVVMVDogUnVuIGV4cGxpY2l0bHkgd2l0aDogamVzdCAtLXRlc3ROYW1lUGF0dGVybj1cIlZpcnR1YWwgTmV0d29yayBHYXRld2F5IENvbm5lY3Rpb25cIlxuICBpdChcInNob3VsZCBkZXBsb3kgZ2F0ZXdheXMgYW5kIGNvbm5lY3Rpb25zLCB2YWxpZGF0ZSBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXBcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5Q29ubmVjdGlvbkV4YW1wbGVTdGFjayhcbiAgICAgIGFwcCxcbiAgICAgIFwidGVzdC12aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS1jb25uZWN0aW9uXCIsXG4gICAgKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXMgKDIgZ2F0ZXdheXMgKyAyIGNvbm5lY3Rpb25zKVxuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXNcbiAgICBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveShzeW50aGVzaXplZCwgeyB2ZXJpZnlDbGVhbnVwOiB0cnVlIH0pO1xuICB9LCA3MjAwMDAwKTsgLy8gMTIwIG1pbnV0ZXMgdGltZW91dCAoMiBob3VycykgZm9yIGR1YWwgZ2F0ZXdheSBwcm92aXNpb25pbmdcbn0pO1xuIl19
|
package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive tests for the Virtual Network Gateway Connection implementation
|
|
3
|
+
*
|
|
4
|
+
* This test suite validates the VirtualNetworkGatewayConnection class using the AzapiResource framework.
|
|
5
|
+
* Tests cover automatic version resolution, explicit version pinning, schema validation,
|
|
6
|
+
* property transformation, and resource creation for all connection types.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|