@microsoft/terraform-cdk-constructs 0.0.3-pre.10 → 0.0.3-pre.12
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 +858 -681
- package/API.md +499 -405
- package/README.md +4 -5
- package/docs/testing.md +39 -137
- package/lib/azure-actiongroup/lib/actiongroup.d.ts +1 -1
- package/lib/azure-actiongroup/lib/actiongroup.js +4 -4
- package/lib/azure-actiongroup/model/action-group-props.d.ts +3 -2
- package/lib/azure-actiongroup/model/action-group-props.js +1 -1
- package/lib/azure-actiongroup/test/AzureActionGroup.integ.js +66 -0
- package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +5 -33
- package/lib/azure-applicationgateway/lib/gateway.d.ts +5 -3
- package/lib/azure-applicationgateway/lib/gateway.js +14 -7
- package/lib/azure-applicationgateway/test/AzureApplicationGateway.integ.d.ts +1 -0
- package/lib/azure-applicationgateway/test/AzureApplicationGateway.integ.js +272 -0
- package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +3 -35
- package/lib/azure-applicationinsights/lib/appinsights.d.ts +4 -3
- package/lib/azure-applicationinsights/lib/appinsights.js +6 -6
- package/lib/azure-applicationinsights/test/AzureAppInsights.integ.d.ts +1 -0
- package/lib/azure-applicationinsights/test/AzureAppInsights.integ.js +101 -0
- package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +4 -27
- package/lib/azure-containerregistry/lib/registry.d.ts +4 -3
- package/lib/azure-containerregistry/lib/registry.js +5 -5
- package/lib/azure-containerregistry/test/AzureContainerRegistry.integ.d.ts +1 -0
- package/lib/azure-containerregistry/test/AzureContainerRegistry.integ.js +68 -0
- package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +4 -23
- package/lib/azure-datalake/lib/datalake.d.ts +1 -0
- package/lib/azure-datalake/lib/datalake.js +2 -1
- package/lib/azure-datalake/test/AzureDatalake.spec.d.ts +1 -0
- package/lib/azure-datalake/test/AzureDatalake.spec.js +32 -0
- package/lib/azure-datalake/test/AzureStorageAccount.integ.d.ts +1 -0
- package/lib/azure-datalake/test/AzureStorageAccount.integ.js +60 -0
- package/lib/azure-eventhub/lib/authorization.js +1 -1
- package/lib/azure-eventhub/lib/consumer.js +1 -1
- package/lib/azure-eventhub/lib/{cluster.d.ts → eventhubcluster.d.ts} +11 -7
- package/lib/azure-eventhub/lib/eventhubcluster.js +64 -0
- package/lib/azure-eventhub/lib/index.d.ts +1 -1
- package/lib/azure-eventhub/lib/index.js +2 -2
- package/lib/azure-eventhub/lib/instance.d.ts +1 -0
- package/lib/azure-eventhub/lib/instance.js +5 -4
- package/lib/azure-eventhub/lib/kusto-connection.js +1 -1
- package/lib/azure-eventhub/lib/namespace.d.ts +7 -6
- package/lib/azure-eventhub/lib/namespace.js +24 -26
- package/lib/azure-eventhub/test/AzureEventhub.integ.d.ts +1 -0
- package/lib/azure-eventhub/test/AzureEventhub.integ.js +72 -0
- package/lib/azure-eventhub/test/AzureEventhub.spec.js +4 -27
- package/lib/azure-functionapp/lib/functionapplinux.js +1 -1
- package/lib/azure-functionapp/test/AzureLinuxFunctionApp.integ.d.ts +1 -0
- package/lib/azure-functionapp/test/AzureLinuxFunctionApp.integ.js +117 -0
- package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +4 -21
- package/lib/azure-keyvault/lib/certificate.js +2 -2
- package/lib/azure-keyvault/lib/key.js +1 -1
- package/lib/azure-keyvault/lib/policy.js +1 -1
- package/lib/azure-keyvault/lib/secret.js +1 -1
- package/lib/azure-keyvault/lib/vault.d.ts +3 -2
- package/lib/azure-keyvault/lib/vault.js +4 -4
- package/lib/azure-keyvault/test/AzureKeyVault.integ.d.ts +1 -0
- package/lib/azure-keyvault/test/AzureKeyVault.integ.js +119 -0
- package/lib/azure-keyvault/test/AzureKeyVault.spec.js +4 -35
- package/lib/azure-kubernetes/lib/cluster.js +1 -1
- package/lib/azure-kubernetes/test/AzureKubernetesCluster.integ.d.ts +1 -0
- package/lib/azure-kubernetes/test/AzureKubernetesCluster.integ.js +75 -0
- package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +4 -21
- package/lib/azure-kusto/lib/cluster.d.ts +9 -5
- package/lib/azure-kusto/lib/cluster.js +66 -42
- package/lib/azure-kusto/lib/compute-specification.js +1 -1
- package/lib/azure-kusto/lib/database.d.ts +7 -8
- package/lib/azure-kusto/lib/database.js +23 -25
- package/lib/azure-kusto/test/AzureKusto.integ.d.ts +1 -0
- package/lib/azure-kusto/test/AzureKusto.integ.js +74 -0
- package/lib/azure-kusto/test/AzureKusto.spec.js +3 -22
- package/lib/azure-loganalytics/lib/workspace.d.ts +6 -3
- package/lib/azure-loganalytics/lib/workspace.js +7 -6
- package/lib/azure-loganalytics/test/AzureLogAnalytics.integ.d.ts +1 -0
- package/lib/azure-loganalytics/test/AzureLogAnalytics.integ.js +117 -0
- package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +4 -23
- package/lib/azure-metricalert/lib/metric-alert.js +1 -1
- package/lib/azure-metricalert/test/AzureMetricAlert.integ.d.ts +1 -0
- package/lib/azure-metricalert/test/AzureMetricAlert.integ.js +85 -0
- package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +4 -21
- package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +1 -1
- package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +4 -3
- package/lib/azure-networksecuritygroup/lib/securitygroup.js +7 -7
- package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.integ.d.ts +1 -0
- package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.integ.js +85 -0
- package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +4 -23
- package/lib/azure-queryrulealert/lib/query-rule-alert.js +1 -1
- package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.integ.d.ts +1 -0
- package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.integ.js +63 -0
- package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +4 -21
- package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
- package/lib/azure-resourcegroup/test/AzureResourceGroup.integ.d.ts +1 -0
- package/lib/azure-resourcegroup/test/AzureResourceGroup.integ.js +41 -0
- package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +4 -17
- package/lib/azure-storageaccount/lib/account.d.ts +5 -0
- package/lib/azure-storageaccount/lib/account.js +3 -2
- package/lib/azure-storageaccount/lib/container.js +2 -2
- package/lib/azure-storageaccount/lib/fileshare.js +2 -2
- package/lib/azure-storageaccount/lib/queue.js +1 -1
- package/lib/azure-storageaccount/lib/table.js +1 -1
- package/lib/azure-storageaccount/test/AzureStorageAccount.integ.d.ts +1 -0
- package/lib/azure-storageaccount/test/AzureStorageAccount.integ.js +84 -0
- package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +4 -17
- package/lib/azure-virtualmachine/lib/image-references.js +2 -2
- package/lib/azure-virtualmachine/lib/vm.d.ts +29 -6
- package/lib/azure-virtualmachine/lib/vm.js +17 -15
- package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.integ.d.ts +1 -0
- package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.integ.js +109 -0
- package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +5 -25
- package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.integ.d.ts +1 -0
- package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.integ.js +105 -0
- package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +4 -23
- package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +28 -6
- package/lib/azure-virtualmachinescaleset/lib/cluster.js +13 -11
- package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.integ.d.ts +1 -0
- package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.integ.js +113 -0
- package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +5 -25
- package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.integ.d.ts +1 -0
- package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.integ.js +109 -0
- package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +4 -23
- package/lib/azure-virtualnetwork/lib/network.d.ts +4 -3
- package/lib/azure-virtualnetwork/lib/network.js +7 -6
- package/lib/azure-virtualnetwork/lib/peering.js +1 -1
- package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.integ.d.ts +1 -0
- package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.integ.js +92 -0
- package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +5 -25
- package/lib/core-azure/lib/diagsettings.d.ts +3 -2
- package/lib/core-azure/lib/diagsettings.js +15 -21
- package/lib/core-azure/lib/rbac.js +1 -1
- package/lib/core-azure/lib/resource.js +6 -4
- package/lib/core-azure/test/AzureResource.integ.d.ts +1 -0
- package/lib/core-azure/test/AzureResource.integ.js +75 -0
- package/lib/testing/index.d.ts +34 -0
- package/lib/testing/index.js +235 -2
- package/package.json +32 -11
- package/cdktf.out/manifest.json +0 -13
- package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +0 -111
- package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +0 -588
- package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +0 -245
- package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +0 -179
- package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +0 -236
- package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +0 -436
- package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +0 -152
- package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +0 -209
- package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +0 -439
- package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +0 -283
- package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +0 -261
- package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +0 -309
- package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +0 -161
- package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +0 -271
- package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +0 -122
- package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +0 -88
- package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +0 -339
- package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +0 -264
- package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +0 -261
- package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +0 -280
- package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +0 -167
- package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +0 -5
- package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +0 -66
- package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +0 -5
- package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +0 -267
- package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +0 -5
- package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +0 -87
- package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +0 -5
- package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +0 -57
- package/lib/azure-eventhub/lib/cluster.js +0 -64
- package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +0 -5
- package/lib/azure-eventhub/test/ExampleAzureEventhub.js +0 -72
- package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +0 -5
- package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +0 -123
- package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +0 -5
- package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +0 -112
- package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +0 -5
- package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +0 -65
- package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +0 -5
- package/lib/azure-kusto/test/ExampleAzureKusto.js +0 -71
- package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +0 -5
- package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +0 -115
- package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +0 -5
- package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +0 -81
- package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +0 -5
- package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +0 -97
- package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +0 -5
- package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +0 -67
- package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +0 -5
- package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +0 -29
- package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +0 -5
- package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +0 -102
- package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +0 -5
- package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +0 -106
- package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +0 -5
- package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +0 -102
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +0 -5
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +0 -107
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +0 -5
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +0 -103
- package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +0 -5
- package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +0 -88
- package/lib/core-azure/test/AzureResource.spec.js +0 -19
- package/lib/core-azure/test/ExampleAzureResource.d.ts +0 -5
- package/lib/core-azure/test/ExampleAzureResource.js +0 -67
- package/tfsec.json +0 -4
- /package/lib/{core-azure/test/AzureResource.spec.d.ts → azure-actiongroup/test/AzureActionGroup.integ.d.ts} +0 -0
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"//": {
|
|
3
|
-
"metadata": {
|
|
4
|
-
"backend": "local",
|
|
5
|
-
"overrides": {
|
|
6
|
-
"azurerm_monitor_diagnostic_setting": [
|
|
7
|
-
"dynamic"
|
|
8
|
-
]
|
|
9
|
-
},
|
|
10
|
-
"stackName": "testExampleAzureResource",
|
|
11
|
-
"version": "0.17.3"
|
|
12
|
-
},
|
|
13
|
-
"outputs": {
|
|
14
|
-
"testExampleAzureResource": {
|
|
15
|
-
"diag_settings_name": "diag_settings_name",
|
|
16
|
-
"storage_account_id": "storage_account_id"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
"data": {
|
|
21
|
-
"azurerm_client_config": {
|
|
22
|
-
"CurrentClientConfig": {
|
|
23
|
-
"//": {
|
|
24
|
-
"metadata": {
|
|
25
|
-
"path": "testExampleAzureResource/CurrentClientConfig",
|
|
26
|
-
"uniqueId": "CurrentClientConfig"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
"azurerm_monitor_diagnostic_categories": {
|
|
32
|
-
"TfTokenTOKEN0_diagsettings_diagcategories_F03F51DC": {
|
|
33
|
-
"//": {
|
|
34
|
-
"metadata": {
|
|
35
|
-
"path": "testExampleAzureResource/${var.name}/diagsettings/diagcategories",
|
|
36
|
-
"uniqueId": "TfTokenTOKEN0_diagsettings_diagcategories_F03F51DC"
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
"resource_id": "${azurerm_storage_account.TfTokenTOKEN0_storage_36989BFF.id}"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
"output": {
|
|
44
|
-
"diag_settings_name": {
|
|
45
|
-
"value": "diagsettings"
|
|
46
|
-
},
|
|
47
|
-
"storage_account_id": {
|
|
48
|
-
"value": "${azurerm_storage_account.TfTokenTOKEN0_storage_36989BFF.id}"
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"provider": {
|
|
52
|
-
"azurerm": [
|
|
53
|
-
{
|
|
54
|
-
"features": {
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
]
|
|
58
|
-
},
|
|
59
|
-
"resource": {
|
|
60
|
-
"azurerm_monitor_diagnostic_setting": {
|
|
61
|
-
"TfTokenTOKEN0_diagsettings_9ABC15DD": {
|
|
62
|
-
"//": {
|
|
63
|
-
"metadata": {
|
|
64
|
-
"path": "testExampleAzureResource/${var.name}/diagsettings/diagsettings",
|
|
65
|
-
"uniqueId": "TfTokenTOKEN0_diagsettings_9ABC15DD"
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"dynamic": {
|
|
69
|
-
"enabled_log": {
|
|
70
|
-
"content": {
|
|
71
|
-
"category": "${enabled_log.value}"
|
|
72
|
-
},
|
|
73
|
-
"for_each": "${tolist(data.azurerm_monitor_diagnostic_categories.TfTokenTOKEN0_diagsettings_diagcategories_F03F51DC.log_category_types)}"
|
|
74
|
-
},
|
|
75
|
-
"metric": {
|
|
76
|
-
"content": {
|
|
77
|
-
"category": "${metric.value}"
|
|
78
|
-
},
|
|
79
|
-
"for_each": "${tolist(data.azurerm_monitor_diagnostic_categories.TfTokenTOKEN0_diagsettings_diagcategories_F03F51DC.metrics)}"
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
"name": "diagsettings",
|
|
83
|
-
"storage_account_id": "${azurerm_storage_account.TfTokenTOKEN0_storage_36989BFF.id}",
|
|
84
|
-
"target_resource_id": "${azurerm_storage_account.TfTokenTOKEN0_storage_36989BFF.id}"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
"azurerm_resource_group": {
|
|
88
|
-
"rg": {
|
|
89
|
-
"//": {
|
|
90
|
-
"metadata": {
|
|
91
|
-
"path": "testExampleAzureResource/rg",
|
|
92
|
-
"uniqueId": "rg"
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
"location": "eastus",
|
|
96
|
-
"name": "rg-${var.name}"
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
"azurerm_role_assignment": {
|
|
100
|
-
"TfTokenTOKEN0_TfTokenTOKEN4Contributor_role_E485501F": {
|
|
101
|
-
"//": {
|
|
102
|
-
"metadata": {
|
|
103
|
-
"path": "testExampleAzureResource/${var.name}/${data.azurerm_client_config.CurrentClientConfig.object_id}Contributor/role",
|
|
104
|
-
"uniqueId": "TfTokenTOKEN0_TfTokenTOKEN4Contributor_role_E485501F"
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
"principal_id": "${data.azurerm_client_config.CurrentClientConfig.object_id}",
|
|
108
|
-
"role_definition_name": "Contributor",
|
|
109
|
-
"scope": "${azurerm_storage_account.TfTokenTOKEN0_storage_36989BFF.id}"
|
|
110
|
-
},
|
|
111
|
-
"TfTokenTOKEN0_TfTokenTOKEN5MonitoringReader_role_AF40768F": {
|
|
112
|
-
"//": {
|
|
113
|
-
"metadata": {
|
|
114
|
-
"path": "testExampleAzureResource/${var.name}/${data.azurerm_client_config.CurrentClientConfig.object_id}Monitoring Reader/role",
|
|
115
|
-
"uniqueId": "TfTokenTOKEN0_TfTokenTOKEN5MonitoringReader_role_AF40768F"
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
"principal_id": "${data.azurerm_client_config.CurrentClientConfig.object_id}",
|
|
119
|
-
"role_definition_name": "Monitoring Reader",
|
|
120
|
-
"scope": "${azurerm_storage_account.TfTokenTOKEN0_storage_36989BFF.id}"
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
"azurerm_storage_account": {
|
|
124
|
-
"TfTokenTOKEN0_storage_36989BFF": {
|
|
125
|
-
"//": {
|
|
126
|
-
"metadata": {
|
|
127
|
-
"path": "testExampleAzureResource/${var.name}/storage",
|
|
128
|
-
"uniqueId": "TfTokenTOKEN0_storage_36989BFF"
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
"account_replication_type": "LRS",
|
|
132
|
-
"account_tier": "Standard",
|
|
133
|
-
"location": "${azurerm_resource_group.rg.location}",
|
|
134
|
-
"min_tls_version": "TLS1_2",
|
|
135
|
-
"name": "sta${var.name}96m98",
|
|
136
|
-
"network_rules": {
|
|
137
|
-
"bypass": [
|
|
138
|
-
"AzureServices"
|
|
139
|
-
],
|
|
140
|
-
"default_action": "Deny"
|
|
141
|
-
},
|
|
142
|
-
"public_network_access_enabled": false,
|
|
143
|
-
"resource_group_name": "${azurerm_resource_group.rg.name}"
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
"terraform": {
|
|
148
|
-
"backend": {
|
|
149
|
-
"local": {
|
|
150
|
-
"path": "/home/runner/work/terraform-cdk-constructs/terraform-cdk-constructs/terraform.testExampleAzureResource.tfstate"
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
"required_providers": {
|
|
154
|
-
"azurerm": {
|
|
155
|
-
"source": "azurerm",
|
|
156
|
-
"version": "3.70.0"
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
"variable": {
|
|
161
|
-
"name": {
|
|
162
|
-
"default": "test",
|
|
163
|
-
"description": "System name used to randomize the resources",
|
|
164
|
-
"type": "string"
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.exampleAzureActionGroup = void 0;
|
|
4
|
-
const provider_1 = require("@cdktf/provider-azurerm/lib/provider");
|
|
5
|
-
const resource_group_1 = require("@cdktf/provider-azurerm/lib/resource-group");
|
|
6
|
-
const cdktf_1 = require("cdktf");
|
|
7
|
-
const cdktf = require("cdktf");
|
|
8
|
-
const ag = require("..");
|
|
9
|
-
const testing_1 = require("../../testing");
|
|
10
|
-
const app = new cdktf_1.App();
|
|
11
|
-
class exampleAzureActionGroup extends testing_1.BaseTestStack {
|
|
12
|
-
constructor(scope, id) {
|
|
13
|
-
super(scope, id);
|
|
14
|
-
new provider_1.AzurermProvider(this, "azureFeature", {
|
|
15
|
-
features: {
|
|
16
|
-
resourceGroup: {
|
|
17
|
-
preventDeletionIfContainsResources: false,
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
const resourceGroup = new resource_group_1.ResourceGroup(this, "rg", {
|
|
22
|
-
location: "eastus",
|
|
23
|
-
name: `rg-${this.name}`,
|
|
24
|
-
tags: {
|
|
25
|
-
test: "test",
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
const actiongroup = new ag.ActionGroup(this, "testAzureActionGroup", {
|
|
29
|
-
name: "testactiongroup",
|
|
30
|
-
location: "global",
|
|
31
|
-
resourceGroup: resourceGroup,
|
|
32
|
-
shortName: "testshortn",
|
|
33
|
-
emailReceivers: [
|
|
34
|
-
{
|
|
35
|
-
name: "testemail1",
|
|
36
|
-
emailAddress: "test1@email.com",
|
|
37
|
-
useCommonAlertSchema: true,
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: "testemail2",
|
|
41
|
-
emailAddress: "test2@email.com",
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
webhookReceivers: [
|
|
45
|
-
{
|
|
46
|
-
name: "testwebhook1",
|
|
47
|
-
serviceUri: "https://www.example1.com",
|
|
48
|
-
useCommonAlertSchema: true,
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
name: "testwebhook2",
|
|
52
|
-
serviceUri: "https://www.example2.com",
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
});
|
|
56
|
-
// Outputs to use for End to End Test
|
|
57
|
-
const cdktfTerraformOutputActionGroupId = new cdktf.TerraformOutput(this, "id", {
|
|
58
|
-
value: actiongroup.id,
|
|
59
|
-
});
|
|
60
|
-
cdktfTerraformOutputActionGroupId.overrideLogicalId("id");
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.exampleAzureActionGroup = exampleAzureActionGroup;
|
|
64
|
-
new exampleAzureActionGroup(app, "testAzureActionGroup");
|
|
65
|
-
app.synth();
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhhbXBsZUF6dXJlQWN0aW9uR3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtYWN0aW9uZ3JvdXAvdGVzdC9FeGFtcGxlQXp1cmVBY3Rpb25Hcm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBdUU7QUFDdkUsK0VBQTJFO0FBQzNFLGlDQUE0QjtBQUM1QiwrQkFBK0I7QUFFL0IseUJBQXlCO0FBQ3pCLDJDQUE4QztBQUU5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQUcsRUFBRSxDQUFDO0FBRXRCLE1BQWEsdUJBQXdCLFNBQVEsdUJBQWE7SUFDeEQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDBCQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN4QyxRQUFRLEVBQUU7Z0JBQ1IsYUFBYSxFQUFFO29CQUNiLGtDQUFrQyxFQUFFLEtBQUs7aUJBQzFDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FBRyxJQUFJLDhCQUFhLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtZQUNsRCxRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsTUFBTTthQUNiO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUNuRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGFBQWEsRUFBRSxhQUFhO1lBQzVCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGNBQWMsRUFBRTtnQkFDZDtvQkFDRSxJQUFJLEVBQUUsWUFBWTtvQkFDbEIsWUFBWSxFQUFFLGlCQUFpQjtvQkFDL0Isb0JBQW9CLEVBQUUsSUFBSTtpQkFDM0I7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFlBQVksRUFBRSxpQkFBaUI7aUJBQ2hDO2FBQ0Y7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEI7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLFVBQVUsRUFBRSwwQkFBMEI7b0JBQ3RDLG9CQUFvQixFQUFFLElBQUk7aUJBQzNCO2dCQUNEO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsMEJBQTBCO2lCQUN2QzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgscUNBQXFDO1FBQ3JDLE1BQU0saUNBQWlDLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUNqRSxJQUFJLEVBQ0osSUFBSSxFQUNKO1lBQ0UsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFO1NBQ3RCLENBQ0YsQ0FBQztRQUVGLGlDQUFpQyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQTVERCwwREE0REM7QUFFRCxJQUFJLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBRXpELEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF6dXJlcm1Qcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcHJvdmlkZXJcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGFnIGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgQmFzZVRlc3RTdGFjayB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxuZXhwb3J0IGNsYXNzIGV4YW1wbGVBenVyZUFjdGlvbkdyb3VwIGV4dGVuZHMgQmFzZVRlc3RTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IEF6dXJlcm1Qcm92aWRlcih0aGlzLCBcImF6dXJlRmVhdHVyZVwiLCB7XG4gICAgICBmZWF0dXJlczoge1xuICAgICAgICByZXNvdXJjZUdyb3VwOiB7XG4gICAgICAgICAgcHJldmVudERlbGV0aW9uSWZDb250YWluc1Jlc291cmNlczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsIFwicmdcIiwge1xuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICBuYW1lOiBgcmctJHt0aGlzLm5hbWV9YCxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgdGVzdDogXCJ0ZXN0XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWN0aW9uZ3JvdXAgPSBuZXcgYWcuQWN0aW9uR3JvdXAodGhpcywgXCJ0ZXN0QXp1cmVBY3Rpb25Hcm91cFwiLCB7XG4gICAgICBuYW1lOiBcInRlc3RhY3Rpb25ncm91cFwiLFxuICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICByZXNvdXJjZUdyb3VwOiByZXNvdXJjZUdyb3VwLFxuICAgICAgc2hvcnROYW1lOiBcInRlc3RzaG9ydG5cIixcbiAgICAgIGVtYWlsUmVjZWl2ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3RlbWFpbDFcIixcbiAgICAgICAgICBlbWFpbEFkZHJlc3M6IFwidGVzdDFAZW1haWwuY29tXCIsXG4gICAgICAgICAgdXNlQ29tbW9uQWxlcnRTY2hlbWE6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3RlbWFpbDJcIixcbiAgICAgICAgICBlbWFpbEFkZHJlc3M6IFwidGVzdDJAZW1haWwuY29tXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgd2ViaG9va1JlY2VpdmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJ0ZXN0d2ViaG9vazFcIixcbiAgICAgICAgICBzZXJ2aWNlVXJpOiBcImh0dHBzOi8vd3d3LmV4YW1wbGUxLmNvbVwiLFxuICAgICAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJ0ZXN0d2ViaG9vazJcIixcbiAgICAgICAgICBzZXJ2aWNlVXJpOiBcImh0dHBzOi8vd3d3LmV4YW1wbGUyLmNvbVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIE91dHB1dHMgdG8gdXNlIGZvciBFbmQgdG8gRW5kIFRlc3RcbiAgICBjb25zdCBjZGt0ZlRlcnJhZm9ybU91dHB1dEFjdGlvbkdyb3VwSWQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiaWRcIixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGFjdGlvbmdyb3VwLmlkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY2RrdGZUZXJyYWZvcm1PdXRwdXRBY3Rpb25Hcm91cElkLm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gIH1cbn1cblxubmV3IGV4YW1wbGVBenVyZUFjdGlvbkdyb3VwKGFwcCwgXCJ0ZXN0QXp1cmVBY3Rpb25Hcm91cFwiKTtcblxuYXBwLnN5bnRoKCk7XG4iXX0=
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.exampleAzureApplicationGateway = void 0;
|
|
4
|
-
const data_azurerm_client_config_1 = require("@cdktf/provider-azurerm/lib/data-azurerm-client-config");
|
|
5
|
-
const log_analytics_workspace_1 = require("@cdktf/provider-azurerm/lib/log-analytics-workspace");
|
|
6
|
-
const provider_1 = require("@cdktf/provider-azurerm/lib/provider");
|
|
7
|
-
const public_ip_1 = require("@cdktf/provider-azurerm/lib/public-ip");
|
|
8
|
-
const resource_group_1 = require("@cdktf/provider-azurerm/lib/resource-group");
|
|
9
|
-
const subnet_1 = require("@cdktf/provider-azurerm/lib/subnet");
|
|
10
|
-
const virtual_network_1 = require("@cdktf/provider-azurerm/lib/virtual-network");
|
|
11
|
-
const cdktf = require("cdktf");
|
|
12
|
-
const cdktf_1 = require("cdktf");
|
|
13
|
-
const kv = require("../../azure-keyvault");
|
|
14
|
-
const testing_1 = require("../../testing");
|
|
15
|
-
const util = require("../../util/azureTenantIdHelpers");
|
|
16
|
-
const apgw = require("../lib");
|
|
17
|
-
const app = new cdktf_1.App();
|
|
18
|
-
class exampleAzureApplicationGateway extends testing_1.BaseTestStack {
|
|
19
|
-
constructor(scope, id) {
|
|
20
|
-
super(scope, id);
|
|
21
|
-
const clientConfig = new data_azurerm_client_config_1.DataAzurermClientConfig(this, "CurrentClientConfig", {});
|
|
22
|
-
new provider_1.AzurermProvider(this, "azureFeature", {
|
|
23
|
-
features: {
|
|
24
|
-
resourceGroup: {
|
|
25
|
-
preventDeletionIfContainsResources: false,
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
const resourceGroup = new resource_group_1.ResourceGroup(this, "rg", {
|
|
30
|
-
location: "eastus",
|
|
31
|
-
name: `rg-${this.name}`,
|
|
32
|
-
lifecycle: {
|
|
33
|
-
ignoreChanges: ["tags"],
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
const logAnalyticsWorkspace = new log_analytics_workspace_1.LogAnalyticsWorkspace(this, "log_analytics", {
|
|
37
|
-
location: "eastus",
|
|
38
|
-
name: `la-${this.name}`,
|
|
39
|
-
resourceGroupName: resourceGroup.name,
|
|
40
|
-
});
|
|
41
|
-
const vnet = new virtual_network_1.VirtualNetwork(this, "vnet", {
|
|
42
|
-
name: `vnet-${this.name}`,
|
|
43
|
-
location: "eastus",
|
|
44
|
-
resourceGroupName: resourceGroup.name,
|
|
45
|
-
addressSpace: ["10.0.0.0/24"],
|
|
46
|
-
});
|
|
47
|
-
const subnet = new subnet_1.Subnet(this, "subnet", {
|
|
48
|
-
name: `subnet-${this.name}`,
|
|
49
|
-
resourceGroupName: resourceGroup.name,
|
|
50
|
-
virtualNetworkName: vnet.name,
|
|
51
|
-
addressPrefixes: ["10.0.0.0/24"],
|
|
52
|
-
});
|
|
53
|
-
const publicIp = new public_ip_1.PublicIp(this, "publicIp", {
|
|
54
|
-
name: "testip",
|
|
55
|
-
location: "eastus",
|
|
56
|
-
resourceGroupName: resourceGroup.name,
|
|
57
|
-
allocationMethod: "Static",
|
|
58
|
-
sku: "Standard",
|
|
59
|
-
});
|
|
60
|
-
const publicIpwaf = new public_ip_1.PublicIp(this, "publicIpwaf", {
|
|
61
|
-
name: "testipwaf",
|
|
62
|
-
location: "eastus",
|
|
63
|
-
resourceGroupName: resourceGroup.name,
|
|
64
|
-
allocationMethod: "Static",
|
|
65
|
-
sku: "Standard",
|
|
66
|
-
});
|
|
67
|
-
const azureKeyVault = new kv.Vault(this, "keyvault", {
|
|
68
|
-
name: `kv-${this.name}`,
|
|
69
|
-
resourceGroup: resourceGroup,
|
|
70
|
-
location: "eastus",
|
|
71
|
-
tenantId: util.getAzureTenantId(),
|
|
72
|
-
});
|
|
73
|
-
azureKeyVault.grantCustomAccess(clientConfig.objectId, {
|
|
74
|
-
secretPermissions: ["Get", "List", "Set", "Delete"],
|
|
75
|
-
keyPermissions: [
|
|
76
|
-
"Backup",
|
|
77
|
-
"Create",
|
|
78
|
-
"Decrypt",
|
|
79
|
-
"Delete",
|
|
80
|
-
"Encrypt",
|
|
81
|
-
"Get",
|
|
82
|
-
"Import",
|
|
83
|
-
"List",
|
|
84
|
-
"Purge",
|
|
85
|
-
"Recover",
|
|
86
|
-
"Restore",
|
|
87
|
-
"Sign",
|
|
88
|
-
"UnwrapKey",
|
|
89
|
-
"Update",
|
|
90
|
-
"Verify",
|
|
91
|
-
"WrapKey",
|
|
92
|
-
"Release",
|
|
93
|
-
"Rotate",
|
|
94
|
-
"GetRotationPolicy",
|
|
95
|
-
"SetRotationPolicy",
|
|
96
|
-
],
|
|
97
|
-
certificatePermissions: [
|
|
98
|
-
"Get",
|
|
99
|
-
"List",
|
|
100
|
-
"Create",
|
|
101
|
-
"Delete",
|
|
102
|
-
"GetIssuers",
|
|
103
|
-
"ManageIssuers",
|
|
104
|
-
],
|
|
105
|
-
});
|
|
106
|
-
const cert = azureKeyVault.addSelfSignedCert("ssl-cert", "CN=contoso.com", [
|
|
107
|
-
"internal.contoso.com",
|
|
108
|
-
]);
|
|
109
|
-
const applicationGateway = new apgw.Gateway(this, "appgw", {
|
|
110
|
-
name: `apgw-${this.name}`,
|
|
111
|
-
resourceGroup: resourceGroup,
|
|
112
|
-
location: "eastus",
|
|
113
|
-
skuTier: "Standard_v2",
|
|
114
|
-
skuSize: "Standard_v2",
|
|
115
|
-
capacity: 2,
|
|
116
|
-
publicIpAddress: publicIp,
|
|
117
|
-
subnet: subnet,
|
|
118
|
-
backendAddressPools: [
|
|
119
|
-
{ name: "backend-address-pool-1" },
|
|
120
|
-
{
|
|
121
|
-
name: "backend-address-pool-2",
|
|
122
|
-
ipAddresses: ["10.1.0.4", "10.1.0.5", "10.1.0.6"],
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
httpListeners: [
|
|
126
|
-
{
|
|
127
|
-
name: "http-listener",
|
|
128
|
-
frontendPortName: "80",
|
|
129
|
-
frontendIpConfigurationName: "Public-frontend-ip-configuration",
|
|
130
|
-
protocol: "Http",
|
|
131
|
-
},
|
|
132
|
-
],
|
|
133
|
-
backendHttpSettings: [
|
|
134
|
-
{
|
|
135
|
-
name: "backend-http-setting",
|
|
136
|
-
port: 80,
|
|
137
|
-
protocol: "Http",
|
|
138
|
-
requestTimeout: 20,
|
|
139
|
-
cookieBasedAffinity: "Disabled",
|
|
140
|
-
},
|
|
141
|
-
],
|
|
142
|
-
requestRoutingRules: [
|
|
143
|
-
{
|
|
144
|
-
name: "request-routing-rule-1",
|
|
145
|
-
httpListenerName: "http-listener",
|
|
146
|
-
priority: 1,
|
|
147
|
-
backendAddressPoolName: "backend-address-pool-1",
|
|
148
|
-
backendHttpSettingsName: "backend-http-setting",
|
|
149
|
-
ruleType: "Basic",
|
|
150
|
-
},
|
|
151
|
-
],
|
|
152
|
-
});
|
|
153
|
-
new apgw.Gateway(this, "appgw_waf", {
|
|
154
|
-
name: `apgw-${this.name}waf`,
|
|
155
|
-
resourceGroup: resourceGroup,
|
|
156
|
-
location: "eastus",
|
|
157
|
-
skuTier: "WAF_v2",
|
|
158
|
-
skuSize: "WAF_v2",
|
|
159
|
-
capacity: 2,
|
|
160
|
-
publicIpAddress: publicIpwaf,
|
|
161
|
-
tenantId: util.getAzureTenantId(),
|
|
162
|
-
subnet: subnet,
|
|
163
|
-
keyVault: azureKeyVault.keyVault,
|
|
164
|
-
backendAddressPools: [
|
|
165
|
-
{ name: "backend-address-pool-1" },
|
|
166
|
-
{
|
|
167
|
-
name: "backend-address-pool-2",
|
|
168
|
-
ipAddresses: ["10.1.0.4", "10.1.0.5", "10.1.0.6"],
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
httpListeners: [
|
|
172
|
-
{
|
|
173
|
-
name: "http-listener",
|
|
174
|
-
frontendPortName: "443",
|
|
175
|
-
frontendIpConfigurationName: "Public-frontend-ip-configuration",
|
|
176
|
-
protocol: "Https",
|
|
177
|
-
sslCertificateName: "internal.contoso.com",
|
|
178
|
-
},
|
|
179
|
-
],
|
|
180
|
-
backendHttpSettings: [
|
|
181
|
-
{
|
|
182
|
-
name: "backend-http-setting",
|
|
183
|
-
port: 80,
|
|
184
|
-
protocol: "Http",
|
|
185
|
-
requestTimeout: 20,
|
|
186
|
-
cookieBasedAffinity: "Disabled",
|
|
187
|
-
},
|
|
188
|
-
],
|
|
189
|
-
requestRoutingRules: [
|
|
190
|
-
{
|
|
191
|
-
name: "request-routing-rule-1",
|
|
192
|
-
httpListenerName: "http-listener",
|
|
193
|
-
priority: 1,
|
|
194
|
-
backendAddressPoolName: "backend-address-pool-1",
|
|
195
|
-
backendHttpSettingsName: "backend-http-setting",
|
|
196
|
-
ruleType: "Basic",
|
|
197
|
-
},
|
|
198
|
-
],
|
|
199
|
-
wafConfiguration: {
|
|
200
|
-
enabled: true,
|
|
201
|
-
firewallMode: "Detection",
|
|
202
|
-
ruleSetType: "OWASP",
|
|
203
|
-
ruleSetVersion: "3.0",
|
|
204
|
-
disabledRuleGroup: [],
|
|
205
|
-
fileUploadLimitMb: 100,
|
|
206
|
-
requestBodyCheck: false,
|
|
207
|
-
maxRequestBodySizeKb: 32,
|
|
208
|
-
},
|
|
209
|
-
probe: [
|
|
210
|
-
{
|
|
211
|
-
name: "probe-8080",
|
|
212
|
-
interval: 3,
|
|
213
|
-
protocol: "Http",
|
|
214
|
-
path: "/status",
|
|
215
|
-
timeout: 15,
|
|
216
|
-
unhealthyThreshold: 3,
|
|
217
|
-
port: 8080,
|
|
218
|
-
host: "test",
|
|
219
|
-
},
|
|
220
|
-
],
|
|
221
|
-
redirectConfiguration: [
|
|
222
|
-
{
|
|
223
|
-
name: "http-redirect",
|
|
224
|
-
redirectType: "Permanent",
|
|
225
|
-
targetListenerName: "http-listener",
|
|
226
|
-
includePath: true,
|
|
227
|
-
includeQueryString: true,
|
|
228
|
-
},
|
|
229
|
-
],
|
|
230
|
-
urlPathMap: [
|
|
231
|
-
{
|
|
232
|
-
name: "url-path-map",
|
|
233
|
-
defaultRedirectConfigurationName: "http-redirect",
|
|
234
|
-
pathRule: [
|
|
235
|
-
{
|
|
236
|
-
name: "path-rule-01",
|
|
237
|
-
redirectConfigurationName: "http-redirect",
|
|
238
|
-
paths: ["/helloworld"],
|
|
239
|
-
},
|
|
240
|
-
],
|
|
241
|
-
},
|
|
242
|
-
],
|
|
243
|
-
sslCertificate: [
|
|
244
|
-
{
|
|
245
|
-
name: "internal.contoso.com",
|
|
246
|
-
keyVaultSecretId: cert.secretId,
|
|
247
|
-
},
|
|
248
|
-
],
|
|
249
|
-
});
|
|
250
|
-
//Diag Settings
|
|
251
|
-
applicationGateway.addDiagSettings({
|
|
252
|
-
name: "diagsettings",
|
|
253
|
-
logAnalyticsWorkspaceId: logAnalyticsWorkspace.id,
|
|
254
|
-
});
|
|
255
|
-
//RBAC
|
|
256
|
-
applicationGateway.addAccess(clientConfig.objectId, "Contributor");
|
|
257
|
-
// Outputs to use for End to End Test
|
|
258
|
-
const cdktfTerraformOutputKVName = new cdktf.TerraformOutput(this, "resource_group_name", {
|
|
259
|
-
value: resourceGroup.name,
|
|
260
|
-
});
|
|
261
|
-
cdktfTerraformOutputKVName.overrideLogicalId("resource_group_name");
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
exports.exampleAzureApplicationGateway = exampleAzureApplicationGateway;
|
|
265
|
-
new exampleAzureApplicationGateway(app, "testAzureApplicationGateway");
|
|
266
|
-
app.synth();
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhhbXBsZUF6dXJlQXBwbGljYXRpb25HYXRld2F5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWFwcGxpY2F0aW9uZ2F0ZXdheS90ZXN0L0V4YW1wbGVBenVyZUFwcGxpY2F0aW9uR2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1R0FBaUc7QUFDakcsaUdBQTRGO0FBQzVGLG1FQUF1RTtBQUN2RSxxRUFBaUU7QUFDakUsK0VBQTJFO0FBQzNFLCtEQUE0RDtBQUM1RCxpRkFBNkU7QUFDN0UsK0JBQStCO0FBQy9CLGlDQUE0QjtBQUU1QiwyQ0FBMkM7QUFDM0MsMkNBQThDO0FBQzlDLHdEQUF3RDtBQUN4RCwrQkFBK0I7QUFFL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFHLEVBQUUsQ0FBQztBQUV0QixNQUFhLDhCQUErQixTQUFRLHVCQUFhO0lBQy9ELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxZQUFZLEdBQUcsSUFBSSxvREFBdUIsQ0FDOUMsSUFBSSxFQUNKLHFCQUFxQixFQUNyQixFQUFFLENBQ0gsQ0FBQztRQUVGLElBQUksMEJBQWUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3hDLFFBQVEsRUFBRTtnQkFDUixhQUFhLEVBQUU7b0JBQ2Isa0NBQWtDLEVBQUUsS0FBSztpQkFDMUM7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUFHLElBQUksOEJBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2xELFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDdkIsU0FBUyxFQUFFO2dCQUNULGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUN4QjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0scUJBQXFCLEdB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QyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFbkUscUNBQXFDO1FBQ3JDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUMxRCxJQUFJLEVBQ0oscUJBQXFCLEVBQ3JCO1lBQ0UsS0FBSyxFQUFFLGFBQWEsQ0FBQyxJQUFJO1NBQzFCLENBQ0YsQ0FBQztRQUVGLDBCQUEwQixDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNGO0FBalJELHdFQWlSQztBQUVELElBQUksOEJBQThCLENBQUMsR0FBRyxFQUFFLDZCQUE2QixDQUFDLENBQUM7QUFFdkUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YUF6dXJlcm1DbGllbnRDb25maWcgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2RhdGEtYXp1cmVybS1jbGllbnQtY29uZmlnXCI7XG5pbXBvcnQgeyBMb2dBbmFseXRpY3NXb3Jrc3BhY2UgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2xvZy1hbmFseXRpY3Mtd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBBenVyZXJtUHJvdmlkZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBQdWJsaWNJcCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcHVibGljLWlwXCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yZXNvdXJjZS1ncm91cFwiO1xuaW1wb3J0IHsgU3VibmV0IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9zdWJuZXRcIjtcbmltcG9ydCB7IFZpcnR1YWxOZXR3b3JrIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi92aXJ0dWFsLW5ldHdvcmtcIjtcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMga3YgZnJvbSBcIi4uLy4uL2F6dXJlLWtleXZhdWx0XCI7XG5pbXBvcnQgeyBCYXNlVGVzdFN0YWNrIH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmdcIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uLy4uL3V0aWwvYXp1cmVUZW5hbnRJZEhlbHBlcnNcIjtcbmltcG9ydCAqIGFzIGFwZ3cgZnJvbSBcIi4uL2xpYlwiO1xuXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5cbmV4cG9ydCBjbGFzcyBleGFtcGxlQXp1cmVBcHBsaWNhdGlvbkdhdGV3YXkgZXh0ZW5kcyBCYXNlVGVzdFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjbGllbnRDb25maWcgPSBuZXcgRGF0YUF6dXJlcm1DbGllbnRDb25maWcoXG4gICAgICB0aGlzLFxuICAgICAgXCJDdXJyZW50Q2xpZW50Q29uZmlnXCIsXG4gICAgICB7fSxcbiAgICApO1xuXG4gICAgbmV3IEF6dXJlcm1Qcm92aWRlcih0aGlzLCBcImF6dXJlRmVhdHVyZVwiLCB7XG4gICAgICBmZWF0dXJlczoge1xuICAgICAgICByZXNvdXJjZUdyb3VwOiB7XG4gICAgICAgICAgcHJldmVudERlbGV0aW9uSWZDb250YWluc1Jlc291cmNlczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsIFwicmdcIiwge1xuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICBuYW1lOiBgcmctJHt0aGlzLm5hbWV9YCxcbiAgICAgIGxpZmVjeWNsZToge1xuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvZ0FuYWx5dGljc1dvcmtzcGFjZSA9IG5ldyBMb2dBbmFseXRpY3NXb3Jrc3BhY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJsb2dfYW5hbHl0aWNzXCIsXG4gICAgICB7XG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBuYW1lOiBgbGEtJHt0aGlzLm5hbWV9YCxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IHZuZXQgPSBuZXcgVmlydHVhbE5ldHdvcmsodGhpcywgXCJ2bmV0XCIsIHtcbiAgICAgIG5hbWU6IGB2bmV0LSR7dGhpcy5uYW1lfWAsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICBhZGRyZXNzU3BhY2U6IFtcIjEwLjAuMC4wLzI0XCJdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3VibmV0ID0gbmV3IFN1Ym5ldCh0aGlzLCBcInN1Ym5ldFwiLCB7XG4gICAgICBuYW1lOiBgc3VibmV0LSR7dGhpcy5uYW1lfWAsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgdmlydHVhbE5ldHdvcmtOYW1lOiB2bmV0Lm5hbWUsXG4gICAgICBhZGRyZXNzUHJlZml4ZXM6IFtcIjEwLjAuMC4wLzI0XCJdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljSXAgPSBuZXcgUHVibGljSXAodGhpcywgXCJwdWJsaWNJcFwiLCB7XG4gICAgICBuYW1lOiBcInRlc3RpcFwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgYWxsb2NhdGlvbk1ldGhvZDogXCJTdGF0aWNcIixcbiAgICAgIHNrdTogXCJTdGFuZGFyZFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljSXB3YWYgPSBuZXcgUHVibGljSXAodGhpcywgXCJwdWJsaWNJcHdhZlwiLCB7XG4gICAgICBuYW1lOiBcInRlc3RpcHdhZlwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgYWxsb2NhdGlvbk1ldGhvZDogXCJTdGF0aWNcIixcbiAgICAgIHNrdTogXCJTdGFuZGFyZFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYXp1cmVLZXlWYXVsdCA9IG5ldyBrdi5WYXVsdCh0aGlzLCBcImtleXZhdWx0XCIsIHtcbiAgICAgIG5hbWU6IGBrdi0ke3RoaXMubmFtZX1gLFxuICAgICAgcmVzb3VyY2VHcm91cDogcmVzb3VyY2VHcm91cCxcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgdGVuYW50SWQ6IHV0aWwuZ2V0QXp1cmVUZW5hbnRJZCgpLFxuICAgIH0pO1xuICAgIGF6dXJlS2V5VmF1bHQuZ3JhbnRDdXN0b21BY2Nlc3MoY2xpZW50Q29uZmlnLm9iamVjdElkLCB7XG4gICAgICBzZWNyZXRQZXJtaXNzaW9uczogW1wiR2V0XCIsIFwiTGlzdFwiLCBcIlNldFwiLCBcIkRlbGV0ZVwiXSxcbiAgICAgIGtleVBlcm1pc3Npb25zOiBbXG4gICAgICAgIFwiQmFja3VwXCIsXG4gICAgICAgIFwiQ3JlYXRlXCIsXG4gICAgICAgIFwiRGVjcnlwdFwiLFxuICAgICAgICBcIkRlbGV0ZVwiLFxuICAgICAgICBcIkVuY3J5cHRcIixcbiAgICAgICAgXCJHZXRcIixcbiAgICAgICAgXCJJbXBvcnRcIixcbiAgICAgICAgXCJMaXN0XCIsXG4gICAgICAgIFwiUHVyZ2VcIixcbiAgICAgICAgXCJSZWNvdmVyXCIsXG4gICAgICAgIFwiUmVzdG9yZVwiLFxuICAgICAgICBcIlNpZ25cIixcbiAgICAgICAgXCJVbndyYXBLZXlcIixcbiAgICAgICAgXCJVcGRhdGVcIixcbiAgICAgICAgXCJWZXJpZnlcIixcbiAgICAgICAgXCJXcmFwS2V5XCIsXG4gICAgICAgIFwiUmVsZWFzZVwiLFxuICAgICAgICBcIlJvdGF0ZVwiLFxuICAgICAgICBcIkdldFJvdGF0aW9uUG9saWN5XCIsXG4gICAgICAgIFwiU2V0Um90YXRpb25Qb2xpY3lcIixcbiAgICAgIF0sXG4gICAgICBjZXJ0aWZpY2F0ZVBlcm1pc3Npb25zOiBbXG4gICAgICAgIFwiR2V0XCIsXG4gICAgICAgIFwiTGlzdFwiLFxuICAgICAgICBcIkNyZWF0ZVwiLFxuICAgICAgICBcIkRlbGV0ZVwiLFxuICAgICAgICBcIkdldElzc3VlcnNcIixcbiAgICAgICAgXCJNYW5hZ2VJc3N1ZXJzXCIsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2VydCA9IGF6dXJlS2V5VmF1bHQuYWRkU2VsZlNpZ25lZENlcnQoXCJzc2wtY2VydFwiLCBcIkNOPWNvbnRvc28uY29tXCIsIFtcbiAgICAgIFwiaW50ZXJuYWwuY29udG9zby5jb21cIixcbiAgICBdKTtcblxuICAgIGNvbnN0IGFwcGxpY2F0aW9uR2F0ZXdheSA9IG5ldyBhcGd3LkdhdGV3YXkodGhpcywgXCJhcHBnd1wiLCB7XG4gICAgICBuYW1lOiBgYXBndy0ke3RoaXMubmFtZX1gLFxuICAgICAgcmVzb3VyY2VHcm91cDogcmVzb3VyY2VHcm91cCxcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgc2t1VGllcjogXCJTdGFuZGFyZF92MlwiLFxuICAgICAgc2t1U2l6ZTogXCJTdGFuZGFyZF92MlwiLFxuICAgICAgY2FwYWNpdHk6IDIsXG4gICAgICBwdWJsaWNJcEFkZHJlc3M6IHB1YmxpY0lwLFxuICAgICAgc3VibmV0OiBzdWJuZXQsXG4gICAgICBiYWNrZW5kQWRkcmVzc1Bvb2xzOiBbXG4gICAgICAgIHsgbmFtZTogXCJiYWNrZW5kLWFkZHJlc3MtcG9vbC0xXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiYmFja2VuZC1hZGRyZXNzLXBvb2wtMlwiLFxuICAgICAgICAgIGlwQWRkcmVzc2VzOiBbXCIxMC4xLjAuNFwiLCBcIjEwLjEuMC41XCIsIFwiMTAuMS4wLjZcIl0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgaHR0cExpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJodHRwLWxpc3RlbmVyXCIsXG4gICAgICAgICAgZnJvbnRlbmRQb3J0TmFtZTogXCI4MFwiLFxuICAgICAgICAgIGZyb250ZW5kSXBDb25maWd1cmF0aW9uTmFtZTogXCJQdWJsaWMtZnJvbnRlbmQtaXAtY29uZmlndXJhdGlvblwiLFxuICAgICAgICAgIHByb3RvY29sOiBcIkh0dHBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBiYWNrZW5kSHR0cFNldHRpbmdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImJhY2tlbmQtaHR0cC1zZXR0aW5nXCIsXG4gICAgICAgICAgcG9ydDogODAsXG4gICAgICAgICAgcHJvdG9jb2w6IFwiSHR0cFwiLFxuICAgICAgICAgIHJlcXVlc3RUaW1lb3V0OiAyMCxcbiAgICAgICAgICBjb29raWVCYXNlZEFmZmluaXR5OiBcIkRpc2FibGVkXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcmVxdWVzdFJvdXRpbmdSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyZXF1ZXN0LXJvdXRpbmctcnVsZS0xXCIsXG4gICAgICAgICAgaHR0cExpc3RlbmVyTmFtZTogXCJodHRwLWxpc3RlbmVyXCIsXG4gICAgICAgICAgcHJpb3JpdHk6IDEsXG4gICAgICAgICAgYmFja2VuZEFkZHJlc3NQb29sTmFtZTogXCJiYWNrZW5kLWFkZHJlc3MtcG9vbC0xXCIsXG4gICAgICAgICAgYmFja2VuZEh0dHBTZXR0aW5nc05hbWU6IFwiYmFja2VuZC1odHRwLXNldHRpbmdcIixcbiAgICAgICAgICBydWxlVHlwZTogXCJCYXNpY1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIG5ldyBhcGd3LkdhdGV3YXkodGhpcywgXCJhcHBnd193YWZcIiwge1xuICAgICAgbmFtZTogYGFwZ3ctJHt0aGlzLm5hbWV9d2FmYCxcbiAgICAgIHJlc291cmNlR3JvdXA6IHJlc291cmNlR3JvdXAsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHNrdVRpZXI6IFwiV0FGX3YyXCIsXG4gICAgICBza3VTaXplOiBcIldBRl92MlwiLFxuICAgICAgY2FwYWNpdHk6IDIsXG4gICAgICBwdWJsaWNJcEFkZHJlc3M6IHB1YmxpY0lwd2FmLFxuICAgICAgdGVuYW50SWQ6IHV0aWwuZ2V0QXp1cmVUZW5hbnRJZCgpLFxuICAgICAgc3VibmV0OiBzdWJuZXQsXG4gICAgICBrZXlWYXVsdDogYXp1cmVLZXlWYXVsdC5rZXlWYXVsdCxcbiAgICAgIGJhY2tlbmRBZGRyZXNzUG9vbHM6IFtcbiAgICAgICAgeyBuYW1lOiBcImJhY2tlbmQtYWRkcmVzcy1wb29sLTFcIiB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJiYWNrZW5kLWFkZHJlc3MtcG9vbC0yXCIsXG4gICAgICAgICAgaXBBZGRyZXNzZXM6IFtcIjEwLjEuMC40XCIsIFwiMTAuMS4wLjVcIiwgXCIxMC4xLjAuNlwiXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBodHRwTGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImh0dHAtbGlzdGVuZXJcIixcbiAgICAgICAgICBmcm9udGVuZFBvcnROYW1lOiBcIjQ0M1wiLFxuICAgICAgICAgIGZyb250ZW5kSXBDb25maWd1cmF0aW9uTmFtZTogXCJQdWJsaWMtZnJvbnRlbmQtaXAtY29uZmlndXJhdGlvblwiLFxuICAgICAgICAgIHByb3RvY29sOiBcIkh0dHBzXCIsXG4gICAgICAgICAgc3NsQ2VydGlmaWNhdGVOYW1lOiBcImludGVybmFsLmNvbnRvc28uY29tXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYmFja2VuZEh0dHBTZXR0aW5nczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJiYWNrZW5kLWh0dHAtc2V0dGluZ1wiLFxuICAgICAgICAgIHBvcnQ6IDgwLFxuICAgICAgICAgIHByb3RvY29sOiBcIkh0dHBcIixcbiAgICAgICAgICByZXF1ZXN0VGltZW91dDogMjAsXG4gICAgICAgICAgY29va2llQmFzZWRBZmZpbml0eTogXCJEaXNhYmxlZFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJlcXVlc3RSb3V0aW5nUnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicmVxdWVzdC1yb3V0aW5nLXJ1bGUtMVwiLFxuICAgICAgICAgIGh0dHBMaXN0ZW5lck5hbWU6IFwiaHR0cC1saXN0ZW5lclwiLFxuICAgICAgICAgIHByaW9yaXR5OiAxLFxuICAgICAgICAgIGJhY2tlbmRBZGRyZXNzUG9vbE5hbWU6IFwiYmFja2VuZC1hZGRyZXNzLXBvb2wtMVwiLFxuICAgICAgICAgIGJhY2tlbmRIdHRwU2V0dGluZ3NOYW1lOiBcImJhY2tlbmQtaHR0cC1zZXR0aW5nXCIsXG4gICAgICAgICAgcnVsZVR5cGU6IFwiQmFzaWNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB3YWZDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGZpcmV3YWxsTW9kZTogXCJEZXRlY3Rpb25cIixcbiAgICAgICAgcnVsZVNldFR5cGU6IFwiT1dBU1BcIixcbiAgICAgICAgcnVsZVNldFZlcnNpb246IFwiMy4wXCIsXG4gICAgICAgIGRpc2FibGVkUnVsZUdyb3VwOiBbXSxcbiAgICAgICAgZmlsZVVwbG9hZExpbWl0TWI6IDEwMCxcbiAgICAgICAgcmVxdWVzdEJvZHlDaGVjazogZmFsc2UsXG4gICAgICAgIG1heFJlcXVlc3RCb2R5U2l6ZUtiOiAzMixcbiAgICAgIH0sXG4gICAgICBwcm9iZTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJwcm9iZS04MDgwXCIsXG4gICAgICAgICAgaW50ZXJ2YWw6IDMsXG4gICAgICAgICAgcHJvdG9jb2w6IFwiSHR0cFwiLFxuICAgICAgICAgIHBhdGg6IFwiL3N0YXR1c1wiLFxuICAgICAgICAgIHRpbWVvdXQ6IDE1LFxuICAgICAgICAgIHVuaGVhbHRoeVRocmVzaG9sZDogMyxcbiAgICAgICAgICBwb3J0OiA4MDgwLFxuICAgICAgICAgIGhvc3Q6IFwidGVzdFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJlZGlyZWN0Q29uZmlndXJhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJodHRwLXJlZGlyZWN0XCIsXG4gICAgICAgICAgcmVkaXJlY3RUeXBlOiBcIlBlcm1hbmVudFwiLFxuICAgICAgICAgIHRhcmdldExpc3RlbmVyTmFtZTogXCJodHRwLWxpc3RlbmVyXCIsXG4gICAgICAgICAgaW5jbHVkZVBhdGg6IHRydWUsXG4gICAgICAgICAgaW5jbHVkZVF1ZXJ5U3RyaW5nOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHVybFBhdGhNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwidXJsLXBhdGgtbWFwXCIsXG4gICAgICAgICAgZGVmYXVsdFJlZGlyZWN0Q29uZmlndXJhdGlvbk5hbWU6IFwiaHR0cC1yZWRpcmVjdFwiLFxuICAgICAgICAgIHBhdGhSdWxlOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwicGF0aC1ydWxlLTAxXCIsXG4gICAgICAgICAgICAgIHJlZGlyZWN0Q29uZmlndXJhdGlvbk5hbWU6IFwiaHR0cC1yZWRpcmVjdFwiLFxuICAgICAgICAgICAgICBwYXRoczogW1wiL2hlbGxvd29ybGRcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc3NsQ2VydGlmaWNhdGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaW50ZXJuYWwuY29udG9zby5jb21cIixcbiAgICAgICAgICBrZXlWYXVsdFNlY3JldElkOiBjZXJ0LnNlY3JldElkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vRGlhZyBTZXR0aW5nc1xuICAgIGFwcGxpY2F0aW9uR2F0ZXdheS5hZGREaWFnU2V0dGluZ3Moe1xuICAgICAgbmFtZTogXCJkaWFnc2V0dGluZ3NcIixcbiAgICAgIGxvZ0FuYWx5dGljc1dvcmtzcGFjZUlkOiBsb2dBbmFseXRpY3NXb3Jrc3BhY2UuaWQsXG4gICAgfSk7XG5cbiAgICAvL1JCQUNcbiAgICBhcHBsaWNhdGlvbkdhdGV3YXkuYWRkQWNjZXNzKGNsaWVudENvbmZpZy5vYmplY3RJZCwgXCJDb250cmlidXRvclwiKTtcblxuICAgIC8vIE91dHB1dHMgdG8gdXNlIGZvciBFbmQgdG8gRW5kIFRlc3RcbiAgICBjb25zdCBjZGt0ZlRlcnJhZm9ybU91dHB1dEtWTmFtZSA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJyZXNvdXJjZV9ncm91cF9uYW1lXCIsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiByZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjZGt0ZlRlcnJhZm9ybU91dHB1dEtWTmFtZS5vdmVycmlkZUxvZ2ljYWxJZChcInJlc291cmNlX2dyb3VwX25hbWVcIik7XG4gIH1cbn1cblxubmV3IGV4YW1wbGVBenVyZUFwcGxpY2F0aW9uR2F0ZXdheShhcHAsIFwidGVzdEF6dXJlQXBwbGljYXRpb25HYXRld2F5XCIpO1xuXG5hcHAuc3ludGgoKTtcbiJdfQ==
|