@microsoft/terraform-cdk-constructs 1.8.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +48328 -33656
- package/API.md +56123 -38995
- package/lib/azure-actiongroup/lib/action-group.d.ts +3 -3
- package/lib/azure-actiongroup/lib/action-group.js +5 -5
- package/lib/azure-actiongroup/test/action-group.integ.d.ts +1 -1
- package/lib/azure-actiongroup/test/action-group.integ.js +5 -5
- package/lib/azure-actiongroup/test/action-group.spec.js +9 -9
- package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +3 -3
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +5 -5
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +1 -1
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +6 -6
- package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +9 -9
- package/lib/azure-aks/lib/aks-cluster.d.ts +6 -6
- package/lib/azure-aks/lib/aks-cluster.js +8 -8
- package/lib/azure-aks/test/aks-cluster.integ.d.ts +1 -1
- package/lib/azure-aks/test/aks-cluster.integ.js +5 -5
- package/lib/azure-aks/test/aks-cluster.spec.js +12 -12
- package/lib/azure-containerapps/index.d.ts +1 -0
- package/lib/azure-containerapps/index.js +18 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
- package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
- package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
- package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
- package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
- package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
- package/lib/azure-containerapps/lib/container-app.js +320 -0
- package/lib/azure-containerapps/lib/index.d.ts +4 -0
- package/lib/azure-containerapps/lib/index.js +21 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
- package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app.integ.js +119 -0
- package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app.spec.js +839 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +3 -3
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +5 -5
- package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +9 -9
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +7 -7
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +9 -9
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +4 -4
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +6 -6
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +4 -4
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +6 -6
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +1 -1
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +5 -5
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +11 -11
- package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +14 -14
- package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +12 -12
- package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +8 -8
- package/lib/azure-dnsresolver/lib/dns-resolver.js +10 -10
- package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +6 -6
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +8 -8
- package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +7 -7
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +9 -9
- package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/dns-resolver.integ.js +5 -5
- package/lib/azure-dnsresolver/test/dns-resolver.spec.js +11 -11
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +5 -5
- package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +12 -12
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +5 -5
- package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +9 -9
- package/lib/azure-dnszone/lib/dns-zone.d.ts +6 -6
- package/lib/azure-dnszone/lib/dns-zone.js +8 -8
- package/lib/azure-dnszone/lib/records/dns-records.d.ts +31 -31
- package/lib/azure-dnszone/lib/records/dns-records.js +42 -42
- package/lib/azure-dnszone/test/dns-records.integ.d.ts +1 -1
- package/lib/azure-dnszone/test/dns-records.integ.js +5 -5
- package/lib/azure-dnszone/test/dns-records.spec.js +57 -57
- package/lib/azure-dnszone/test/dns-zone.integ.d.ts +1 -1
- package/lib/azure-dnszone/test/dns-zone.integ.js +5 -5
- package/lib/azure-dnszone/test/dns-zone.spec.js +11 -11
- package/lib/azure-loganalyticsworkspace/index.d.ts +6 -0
- package/lib/azure-loganalyticsworkspace/index.js +23 -0
- package/lib/azure-loganalyticsworkspace/lib/index.d.ts +5 -0
- package/lib/azure-loganalyticsworkspace/lib/index.js +22 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.d.ts +51 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.js +255 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +301 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +213 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +9 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +71 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.d.ts +8 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +504 -0
- package/lib/azure-metricalert/lib/metric-alert.d.ts +3 -3
- package/lib/azure-metricalert/lib/metric-alert.js +5 -5
- package/lib/azure-metricalert/test/metric-alert.integ.d.ts +1 -1
- package/lib/azure-metricalert/test/metric-alert.integ.js +5 -5
- package/lib/azure-metricalert/test/metric-alert.spec.js +9 -9
- package/lib/azure-networkinterface/lib/network-interface.d.ts +5 -5
- package/lib/azure-networkinterface/lib/network-interface.js +7 -7
- package/lib/azure-networkinterface/test/network-interface.integ.d.ts +1 -1
- package/lib/azure-networkinterface/test/network-interface.integ.js +5 -5
- package/lib/azure-networkinterface/test/network-interface.spec.js +11 -11
- package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +6 -6
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +8 -8
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +1 -1
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +5 -5
- package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +12 -12
- package/lib/azure-networkwatcher/index.d.ts +14 -0
- package/lib/azure-networkwatcher/index.js +31 -0
- package/lib/azure-networkwatcher/lib/index.d.ts +5 -0
- package/lib/azure-networkwatcher/lib/index.js +22 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.d.ts +47 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.js +167 -0
- package/lib/azure-networkwatcher/lib/network-watcher.d.ts +181 -0
- package/lib/azure-networkwatcher/lib/network-watcher.js +187 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +12 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.js +84 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.d.ts +8 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.js +312 -0
- package/lib/azure-policyassignment/lib/policy-assignment.d.ts +3 -3
- package/lib/azure-policyassignment/lib/policy-assignment.js +5 -5
- package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +1 -1
- package/lib/azure-policyassignment/test/policy-assignment.integ.js +5 -5
- package/lib/azure-policyassignment/test/policy-assignment.spec.js +12 -12
- package/lib/azure-policydefinition/lib/policy-definition.d.ts +3 -3
- package/lib/azure-policydefinition/lib/policy-definition.js +5 -5
- package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +1 -1
- package/lib/azure-policydefinition/test/policy-definition.integ.js +5 -5
- package/lib/azure-policydefinition/test/policy-definition.spec.js +19 -19
- package/lib/azure-policysetdefinition/index.d.ts +10 -0
- package/lib/azure-policysetdefinition/index.js +27 -0
- package/lib/azure-policysetdefinition/lib/index.d.ts +5 -0
- package/lib/azure-policysetdefinition/lib/index.js +22 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.d.ts +50 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.js +255 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +426 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.js +255 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +9 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +56 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.d.ts +8 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +745 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +10 -10
- package/lib/azure-privatednszone/lib/private-dns-zone.js +12 -12
- package/lib/azure-privatednszone/lib/records/private-dns-records.d.ts +25 -25
- package/lib/azure-privatednszone/lib/records/private-dns-records.js +34 -34
- package/lib/azure-privatednszone/test/private-dns-records.integ.d.ts +1 -1
- package/lib/azure-privatednszone/test/private-dns-records.integ.js +5 -5
- package/lib/azure-privatednszone/test/private-dns-records.spec.js +49 -49
- package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +1 -1
- package/lib/azure-privatednszone/test/private-dns-zone.integ.js +5 -5
- package/lib/azure-privatednszone/test/private-dns-zone.spec.js +12 -12
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +6 -6
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +8 -8
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +1 -1
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +5 -5
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +12 -12
- package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +5 -5
- package/lib/azure-publicipaddress/lib/public-ip-address.js +7 -7
- package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +1 -1
- package/lib/azure-publicipaddress/test/public-ip-address.integ.js +6 -6
- package/lib/azure-publicipaddress/test/public-ip-address.spec.js +11 -11
- package/lib/azure-resourcegroup/lib/resource-group.d.ts +5 -5
- package/lib/azure-resourcegroup/lib/resource-group.js +7 -7
- package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +1 -1
- package/lib/azure-resourcegroup/test/resource-group.integ.js +5 -5
- package/lib/azure-resourcegroup/test/resource-group.spec.js +14 -14
- package/lib/azure-roleassignment/lib/role-assignment.d.ts +3 -3
- package/lib/azure-roleassignment/lib/role-assignment.js +5 -5
- package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +1 -1
- package/lib/azure-roleassignment/test/role-assignment.integ.js +5 -5
- package/lib/azure-roleassignment/test/role-assignment.spec.js +12 -12
- package/lib/azure-roledefinition/lib/role-definition.d.ts +3 -3
- package/lib/azure-roledefinition/lib/role-definition.js +5 -5
- package/lib/azure-roledefinition/test/role-definition.integ.d.ts +1 -1
- package/lib/azure-roledefinition/test/role-definition.integ.js +5 -5
- package/lib/azure-roledefinition/test/role-definition.spec.js +12 -12
- package/lib/azure-storageaccount/lib/storage-account.d.ts +6 -6
- package/lib/azure-storageaccount/lib/storage-account.js +8 -8
- package/lib/azure-storageaccount/test/storage-account.integ.d.ts +1 -1
- package/lib/azure-storageaccount/test/storage-account.integ.js +5 -5
- package/lib/azure-storageaccount/test/storage-account.spec.js +11 -11
- package/lib/azure-subnet/lib/subnet.d.ts +3 -3
- package/lib/azure-subnet/lib/subnet.js +5 -5
- package/lib/azure-subnet/test/subnet.integ.d.ts +1 -1
- package/lib/azure-subnet/test/subnet.integ.js +5 -5
- package/lib/azure-subnet/test/subnet.spec.js +9 -9
- package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +6 -6
- package/lib/azure-virtualmachine/lib/virtual-machine.js +8 -8
- package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +1 -1
- package/lib/azure-virtualmachine/test/virtual-machine.integ.js +5 -5
- package/lib/azure-virtualmachine/test/virtual-machine.spec.js +17 -17
- package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +6 -6
- package/lib/azure-virtualnetwork/lib/virtual-network.js +8 -8
- package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +1 -1
- package/lib/azure-virtualnetwork/test/virtual-network.integ.js +5 -5
- package/lib/azure-virtualnetwork/test/virtual-network.spec.js +12 -12
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +9 -7
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +13 -10
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +5 -5
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +119 -11
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.d.ts +5 -5
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +7 -7
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.js +5 -5
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.js +20 -20
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +7 -7
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +9 -9
- package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.js +17 -17
- package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.js +15 -15
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +5 -5
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +57 -57
- package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +6 -6
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +8 -8
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +1 -1
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +5 -5
- package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +12 -12
- package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +6 -6
- package/lib/core-azure/lib/azapi/azapi-resource.d.ts +7 -7
- package/lib/core-azure/lib/azapi/azapi-resource.js +6 -6
- package/lib/core-azure/lib/azapi/azapi-resource.spec.js +7 -7
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +12 -12
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +15 -15
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +35 -35
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +58 -58
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +25 -25
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +49 -49
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +13 -13
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +22 -22
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +24 -24
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +40 -40
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +44 -44
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +72 -72
- package/lib/core-azure/lib/azapi/providers-azapi/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +54 -54
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +86 -86
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +65 -65
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +102 -102
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +25 -25
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +62 -62
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +36 -36
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +69 -69
- 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 +12 -0
- package/lib/index.js +14 -2
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/index.js +8 -8
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +10 -22
- package/setup.js +2 -2
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.LogAnalyticsWorkspace = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Unified Azure Log Analytics Workspace implementation using AzapiResource framework
|
|
8
|
+
*
|
|
9
|
+
* This class provides a version-aware implementation for Azure Log Analytics Workspace
|
|
10
|
+
* that automatically handles version management, schema validation, and property
|
|
11
|
+
* transformation across all supported API versions.
|
|
12
|
+
*
|
|
13
|
+
* Supported API Versions:
|
|
14
|
+
* - 2023-09-01 (Active, Latest)
|
|
15
|
+
* - 2022-10-01 (Active, Backward Compatibility)
|
|
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
|
+
* - Full JSII compliance for multi-language support
|
|
22
|
+
* - Configurable data retention, SKU, and workspace capping
|
|
23
|
+
* - Public network access controls
|
|
24
|
+
* - Workspace features configuration
|
|
25
|
+
*/
|
|
26
|
+
const cdktf = require("cdktn");
|
|
27
|
+
const log_analytics_workspace_schemas_1 = require("./log-analytics-workspace-schemas");
|
|
28
|
+
const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
|
|
29
|
+
/**
|
|
30
|
+
* Unified Azure Log Analytics Workspace implementation
|
|
31
|
+
*
|
|
32
|
+
* This class provides a single, version-aware implementation that automatically handles version
|
|
33
|
+
* resolution, schema validation, and property transformation while maintaining full JSII compliance.
|
|
34
|
+
*
|
|
35
|
+
* Log Analytics Workspace is the central destination for log data from Azure resources,
|
|
36
|
+
* applications, and on-premises infrastructure. It enables querying, analysis, and
|
|
37
|
+
* visualization of log data using Kusto Query Language (KQL).
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // Basic Log Analytics Workspace with default settings:
|
|
41
|
+
* const workspace = new LogAnalyticsWorkspace(this, "my-workspace", {
|
|
42
|
+
* name: "my-log-analytics",
|
|
43
|
+
* location: "eastus",
|
|
44
|
+
* resourceGroupId: resourceGroup.id,
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* // Log Analytics Workspace with custom retention and SKU:
|
|
49
|
+
* const workspace = new LogAnalyticsWorkspace(this, "production-workspace", {
|
|
50
|
+
* name: "production-logs",
|
|
51
|
+
* location: "eastus",
|
|
52
|
+
* resourceGroupId: resourceGroup.id,
|
|
53
|
+
* retentionInDays: 90,
|
|
54
|
+
* sku: {
|
|
55
|
+
* name: "PerGB2018"
|
|
56
|
+
* },
|
|
57
|
+
* publicNetworkAccessForIngestion: "Enabled",
|
|
58
|
+
* publicNetworkAccessForQuery: "Enabled",
|
|
59
|
+
* tags: {
|
|
60
|
+
* environment: "production"
|
|
61
|
+
* }
|
|
62
|
+
* });
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* // Log Analytics Workspace with capacity reservation:
|
|
66
|
+
* const workspace = new LogAnalyticsWorkspace(this, "high-volume-workspace", {
|
|
67
|
+
* name: "high-volume-logs",
|
|
68
|
+
* location: "eastus",
|
|
69
|
+
* resourceGroupId: resourceGroup.id,
|
|
70
|
+
* retentionInDays: 365,
|
|
71
|
+
* sku: {
|
|
72
|
+
* name: "CapacityReservation",
|
|
73
|
+
* capacityReservationLevel: 500
|
|
74
|
+
* },
|
|
75
|
+
* workspaceCapping: {
|
|
76
|
+
* dailyQuotaGb: 100
|
|
77
|
+
* }
|
|
78
|
+
* });
|
|
79
|
+
*
|
|
80
|
+
* @stability stable
|
|
81
|
+
*/
|
|
82
|
+
class LogAnalyticsWorkspace extends azapi_resource_1.AzapiResource {
|
|
83
|
+
/**
|
|
84
|
+
* Creates a new Azure Log Analytics Workspace using the AzapiResource framework
|
|
85
|
+
*
|
|
86
|
+
* The constructor automatically handles version resolution, schema registration,
|
|
87
|
+
* validation, and resource creation.
|
|
88
|
+
*
|
|
89
|
+
* @param scope - The scope in which to define this construct
|
|
90
|
+
* @param id - The unique identifier for this instance
|
|
91
|
+
* @param props - Configuration properties for the Log Analytics Workspace
|
|
92
|
+
*/
|
|
93
|
+
constructor(scope, id, props) {
|
|
94
|
+
// Validate retention days if provided
|
|
95
|
+
if (props.retentionInDays !== undefined) {
|
|
96
|
+
if (props.retentionInDays < 30 || props.retentionInDays > 730) {
|
|
97
|
+
throw new Error("retentionInDays must be between 30 and 730 days");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Validate capacity reservation level if CapacityReservation SKU is used
|
|
101
|
+
if (props.sku?.name === "CapacityReservation") {
|
|
102
|
+
const validLevels = [100, 200, 300, 400, 500, 1000, 2000, 5000];
|
|
103
|
+
if (props.sku.capacityReservationLevel === undefined ||
|
|
104
|
+
!validLevels.includes(props.sku.capacityReservationLevel)) {
|
|
105
|
+
throw new Error(`capacityReservationLevel must be one of ${validLevels.join(", ")} when using CapacityReservation SKU`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
super(scope, id, props);
|
|
109
|
+
this.props = props;
|
|
110
|
+
// Create Terraform outputs for easy access and referencing from other resources
|
|
111
|
+
this.idOutput = new cdktf.TerraformOutput(this, "id", {
|
|
112
|
+
value: this.id,
|
|
113
|
+
description: "The ID of the Log Analytics Workspace",
|
|
114
|
+
});
|
|
115
|
+
this.nameOutput = new cdktf.TerraformOutput(this, "name", {
|
|
116
|
+
value: `\${${this.terraformResource.fqn}.name}`,
|
|
117
|
+
description: "The name of the Log Analytics Workspace",
|
|
118
|
+
});
|
|
119
|
+
this.workspaceIdOutput = new cdktf.TerraformOutput(this, "workspace_id", {
|
|
120
|
+
value: `\${${this.terraformResource.fqn}.output.properties.customerId}`,
|
|
121
|
+
description: "The unique identifier (workspace ID) of the Log Analytics Workspace",
|
|
122
|
+
});
|
|
123
|
+
this.customerIdOutput = new cdktf.TerraformOutput(this, "customer_id", {
|
|
124
|
+
value: `\${${this.terraformResource.fqn}.output.properties.customerId}`,
|
|
125
|
+
description: "The customer ID (same as workspace ID) of the Log Analytics Workspace",
|
|
126
|
+
});
|
|
127
|
+
// Override logical IDs
|
|
128
|
+
this.idOutput.overrideLogicalId("id");
|
|
129
|
+
this.nameOutput.overrideLogicalId("name");
|
|
130
|
+
this.workspaceIdOutput.overrideLogicalId("workspace_id");
|
|
131
|
+
this.customerIdOutput.overrideLogicalId("customer_id");
|
|
132
|
+
}
|
|
133
|
+
// =============================================================================
|
|
134
|
+
// REQUIRED ABSTRACT METHODS FROM AzapiResource
|
|
135
|
+
// =============================================================================
|
|
136
|
+
/**
|
|
137
|
+
* Gets the default API version to use when no explicit version is specified
|
|
138
|
+
* Returns the latest stable version as the default
|
|
139
|
+
*/
|
|
140
|
+
defaultVersion() {
|
|
141
|
+
return "2023-09-01";
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Gets the Azure resource type for Log Analytics Workspace
|
|
145
|
+
*/
|
|
146
|
+
resourceType() {
|
|
147
|
+
return log_analytics_workspace_schemas_1.LOG_ANALYTICS_WORKSPACE_TYPE;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Gets the API schema for the resolved version
|
|
151
|
+
* Uses the framework's schema resolution to get the appropriate schema
|
|
152
|
+
*/
|
|
153
|
+
apiSchema() {
|
|
154
|
+
return this.resolveSchema();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Indicates that this resource type requires a location
|
|
158
|
+
*/
|
|
159
|
+
requiresLocation() {
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Creates the resource body for the Azure API call
|
|
164
|
+
* Transforms the input properties into the JSON format expected by Azure REST API
|
|
165
|
+
*/
|
|
166
|
+
createResourceBody(props) {
|
|
167
|
+
const typedProps = props;
|
|
168
|
+
const body = {
|
|
169
|
+
properties: {
|
|
170
|
+
retentionInDays: typedProps.retentionInDays ?? 30,
|
|
171
|
+
sku: typedProps.sku ?? { name: "PerGB2018" },
|
|
172
|
+
publicNetworkAccessForIngestion: typedProps.publicNetworkAccessForIngestion ?? "Enabled",
|
|
173
|
+
publicNetworkAccessForQuery: typedProps.publicNetworkAccessForQuery ?? "Enabled",
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
// Add optional properties only if specified
|
|
177
|
+
if (typedProps.workspaceCapping) {
|
|
178
|
+
body.properties.workspaceCapping = typedProps.workspaceCapping;
|
|
179
|
+
}
|
|
180
|
+
if (typedProps.features) {
|
|
181
|
+
body.properties.features = typedProps.features;
|
|
182
|
+
}
|
|
183
|
+
if (typedProps.forceCmkForQuery !== undefined) {
|
|
184
|
+
body.properties.forceCmkForQuery = typedProps.forceCmkForQuery;
|
|
185
|
+
}
|
|
186
|
+
if (typedProps.defaultDataCollectionRuleResourceId) {
|
|
187
|
+
body.properties.defaultDataCollectionRuleResourceId =
|
|
188
|
+
typedProps.defaultDataCollectionRuleResourceId;
|
|
189
|
+
}
|
|
190
|
+
// Add identity at the top level if specified
|
|
191
|
+
if (typedProps.identity) {
|
|
192
|
+
body.identity = typedProps.identity;
|
|
193
|
+
}
|
|
194
|
+
return body;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Resolves the parent resource ID for Log Analytics Workspace
|
|
198
|
+
* Log Analytics Workspace is a top-level resource within a resource group
|
|
199
|
+
*
|
|
200
|
+
* @param props - The resource properties
|
|
201
|
+
* @returns The parent resource ID (the resource group)
|
|
202
|
+
*/
|
|
203
|
+
resolveParentId(props) {
|
|
204
|
+
return props.resourceGroupId;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.LogAnalyticsWorkspace = LogAnalyticsWorkspace;
|
|
208
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
209
|
+
LogAnalyticsWorkspace[_a] = { fqn: "@microsoft/terraform-cdk-constructs.LogAnalyticsWorkspace", version: "2.2.0" };
|
|
210
|
+
(() => {
|
|
211
|
+
azapi_resource_1.AzapiResource.registerSchemas(log_analytics_workspace_schemas_1.LOG_ANALYTICS_WORKSPACE_TYPE, log_analytics_workspace_schemas_1.ALL_LOG_ANALYTICS_WORKSPACE_VERSIONS);
|
|
212
|
+
})();
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuYWx5dGljcy13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtbG9nYW5hbHl0aWNzd29ya3NwYWNlL2xpYi9sb2ctYW5hbHl0aWNzLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsK0JBQStCO0FBRS9CLHVGQUcyQztBQUMzQyw4RUFHbUQ7QUE2TW5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSw4QkFBYTtJQW1CdEQ7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxzQ0FBc0M7UUFDdEMsSUFBSSxLQUFLLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLElBQUksS0FBSyxDQUFDLGVBQWUsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDOUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO1FBRUQseUVBQXlFO1FBQ3pFLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRSxJQUNFLEtBQUssQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEtBQUssU0FBUztnQkFDaEQsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsRUFDekQsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDJDQUEyQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FDdkcsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLHlDQUF5QztTQUN2RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDdkUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsZ0NBQWdDO1lBQ3ZFLFdBQVcsRUFDVCxxRUFBcUU7U0FDeEUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3JFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGdDQUFnQztZQUN2RSxXQUFXLEVBQ1QsdUVBQXVFO1NBQzFFLENBQUMsQ0FBQztRQUVILHVCQUF1QjtRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLCtDQUErQztJQUMvQyxnRkFBZ0Y7SUFFaEY7OztPQUdHO0lBQ08sY0FBYztRQUN0QixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxZQUFZO1FBQ3BCLE9BQU8sOERBQTRCLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFNBQVM7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ08sZ0JBQWdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNPLGtCQUFrQixDQUFDLEtBQVU7UUFDckMsTUFBTSxVQUFVLEdBQUcsS0FBbUMsQ0FBQztRQUV2RCxNQUFNLElBQUksR0FBUTtZQUNoQixVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlLElBQUksRUFBRTtnQkFDakQsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUM1QywrQkFBK0IsRUFDN0IsVUFBVSxDQUFDLCtCQUErQixJQUFJLFNBQVM7Z0JBQ3pELDJCQUEyQixFQUN6QixVQUFVLENBQUMsMkJBQTJCLElBQUksU0FBUzthQUN0RDtTQUNGLENBQUM7UUFFRiw0Q0FBNEM7UUFDNUMsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUNqRCxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDakUsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLG1DQUFtQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQ0FBbUM7Z0JBQ2pELFVBQVUsQ0FBQyxtQ0FBbUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sZUFBZSxDQUFDLEtBQVU7UUFDbEMsT0FBUSxLQUFvQyxDQUFDLGVBQWUsQ0FBQztJQUMvRCxDQUFDOztBQTNLSCxzREE0S0M7OztBQTNLQztJQUNFLDhCQUFhLENBQUMsZUFBZSxDQUMzQiw4REFBNEIsRUFDNUIsc0VBQW9DLENBQ3JDLENBQUM7QUFDSixDQUFDLEdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5pZmllZCBBenVyZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSB2ZXJzaW9uLWF3YXJlIGltcGxlbWVudGF0aW9uIGZvciBBenVyZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZVxuICogdGhhdCBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiBtYW5hZ2VtZW50LCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5XG4gKiB0cmFuc2Zvcm1hdGlvbiBhY3Jvc3MgYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnMuXG4gKlxuICogU3VwcG9ydGVkIEFQSSBWZXJzaW9uczpcbiAqIC0gMjAyMy0wOS0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKiAtIDIwMjItMTAtMDEgKEFjdGl2ZSwgQmFja3dhcmQgQ29tcGF0aWJpbGl0eSlcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBGdWxsIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICogLSBDb25maWd1cmFibGUgZGF0YSByZXRlbnRpb24sIFNLVSwgYW5kIHdvcmtzcGFjZSBjYXBwaW5nXG4gKiAtIFB1YmxpYyBuZXR3b3JrIGFjY2VzcyBjb250cm9sc1xuICogLSBXb3Jrc3BhY2UgZmVhdHVyZXMgY29uZmlndXJhdGlvblxuICovXG5cbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIEFMTF9MT0dfQU5BTFlUSUNTX1dPUktTUEFDRV9WRVJTSU9OUyxcbiAgTE9HX0FOQUxZVElDU19XT1JLU1BBQ0VfVFlQRSxcbn0gZnJvbSBcIi4vbG9nLWFuYWx5dGljcy13b3Jrc3BhY2Utc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgQXphcGlSZXNvdXJjZSxcbiAgQXphcGlSZXNvdXJjZVByb3BzLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmltcG9ydCB7IEFwaVNjaGVtYSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLyoqXG4gKiBTS1UgY29uZmlndXJhdGlvbiBmb3IgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dBbmFseXRpY3NXb3Jrc3BhY2VTa3Uge1xuICAvKipcbiAgICogU0tVIG5hbWUgZm9yIHRoZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZVxuICAgKlxuICAgKiBBdmFpbGFibGUgb3B0aW9uczpcbiAgICogLSBcIkZyZWVcIiAtIEZyZWUgdGllciAobGltaXRlZCB0byA1MDBNQi9kYXksIDcgZGF5IHJldGVudGlvbilcbiAgICogLSBcIlN0YW5kYXJkXCIgLSBTdGFuZGFyZCB0aWVyIChsZWdhY3kpXG4gICAqIC0gXCJQcmVtaXVtXCIgLSBQcmVtaXVtIHRpZXIgKGxlZ2FjeSlcbiAgICogLSBcIlBlck5vZGVcIiAtIFBlciBub2RlIHByaWNpbmcgKGxlZ2FjeSwgZm9yIE9NUyBjdXN0b21lcnMpXG4gICAqIC0gXCJQZXJHQjIwMThcIiAtIFBheS1hcy15b3UtZ28gcHJpY2luZyBiYXNlZCBvbiBkYXRhIGluZ2VzdGlvblxuICAgKiAtIFwiU3RhbmRhbG9uZVwiIC0gU3RhbmRhbG9uZSB0aWVyIChsZWdhY3kpXG4gICAqIC0gXCJDYXBhY2l0eVJlc2VydmF0aW9uXCIgLSBDb21taXRtZW50IHRpZXIgd2l0aCByZXNlcnZlZCBjYXBhY2l0eVxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIFwiUGVyR0IyMDE4XCJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6XG4gICAgfCBcIkZyZWVcIlxuICAgIHwgXCJTdGFuZGFyZFwiXG4gICAgfCBcIlByZW1pdW1cIlxuICAgIHwgXCJQZXJOb2RlXCJcbiAgICB8IFwiUGVyR0IyMDE4XCJcbiAgICB8IFwiU3RhbmRhbG9uZVwiXG4gICAgfCBcIkNhcGFjaXR5UmVzZXJ2YXRpb25cIjtcblxuICAvKipcbiAgICogQ2FwYWNpdHkgcmVzZXJ2YXRpb24gbGV2ZWwgaW4gR0IgcGVyIGRheVxuICAgKiBPbmx5IGFwcGxpY2FibGUgd2hlbiBTS1UgbmFtZSBpcyBcIkNhcGFjaXR5UmVzZXJ2YXRpb25cIlxuICAgKiBWYWxpZCB2YWx1ZXM6IDEwMCwgMjAwLCAzMDAsIDQwMCwgNTAwLCAxMDAwLCAyMDAwLCA1MDAwXG4gICAqL1xuICByZWFkb25seSBjYXBhY2l0eVJlc2VydmF0aW9uTGV2ZWw/OiBudW1iZXI7XG59XG5cbi8qKlxuICogV29ya3NwYWNlIGNhcHBpbmcgY29uZmlndXJhdGlvbiBmb3IgZGFpbHkgZGF0YSBpbmdlc3Rpb24gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nQW5hbHl0aWNzV29ya3NwYWNlQ2FwcGluZyB7XG4gIC8qKlxuICAgKiBEYWlseSB2b2x1bWUgY2FwIGluIEdCXG4gICAqIEEgdmFsdWUgb2YgLTEgbWVhbnMgbm8gY2FwXG4gICAqL1xuICByZWFkb25seSBkYWlseVF1b3RhR2I6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBXb3Jrc3BhY2UgZmVhdHVyZXMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ0FuYWx5dGljc1dvcmtzcGFjZUZlYXR1cmVzIHtcbiAgLyoqXG4gICAqIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGRhdGEgZXhwb3J0IGlzIGVuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZURhdGFFeHBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBkYXRhIHNob3VsZCBiZSBpbW1lZGlhdGVseSBwdXJnZWQgYWZ0ZXIgMzAgZGF5c1xuICAgKiBpbnN0ZWFkIG9mIHRoZSBjb25maWd1cmVkIHJldGVudGlvbiBwZXJpb2RcbiAgICovXG4gIHJlYWRvbmx5IGltbWVkaWF0ZVB1cmdlRGF0YU9uMzBEYXlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgbG9nIGFjY2VzcyB1c2luZyBBQURJQU0gaXMgZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVMb2NhbEF1dGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBjbHVzdGVyIHJlc291cmNlIHBlcm1pc3Npb25zIGFyZSBlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVMb2dBY2Nlc3NVc2luZ09ubHlSZXNvdXJjZVBlcm1pc3Npb25zPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBNYW5hZ2VkIGlkZW50aXR5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dBbmFseXRpY3NXb3Jrc3BhY2VJZGVudGl0eSB7XG4gIC8qKlxuICAgKiBUeXBlIG9mIG1hbmFnZWQgaWRlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6XG4gICAgfCBcIlN5c3RlbUFzc2lnbmVkXCJcbiAgICB8IFwiVXNlckFzc2lnbmVkXCJcbiAgICB8IFwiU3lzdGVtQXNzaWduZWQsVXNlckFzc2lnbmVkXCJcbiAgICB8IFwiTm9uZVwiO1xuXG4gIC8qKlxuICAgKiBVc2VyLWFzc2lnbmVkIGlkZW50aXR5IHJlc291cmNlIElEc1xuICAgKiBSZXF1aXJlZCB3aGVuIHR5cGUgaW5jbHVkZXMgVXNlckFzc2lnbmVkXG4gICAqL1xuICByZWFkb25seSB1c2VyQXNzaWduZWRJZGVudGl0aWVzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgdW5pZmllZCBBenVyZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZVxuICpcbiAqIEV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHdpdGggTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2Ugc3BlY2lmaWMgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ0FuYWx5dGljc1dvcmtzcGFjZVByb3BzIGV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIFJlc291cmNlIEdyb3VwIElEIHdoZXJlIHRoZSB3b3Jrc3BhY2Ugd2lsbCBiZSBjcmVhdGVkXG4gICAqIFRoZSB3b3Jrc3BhY2Ugd2lsbCBiZSBjcmVhdGVkIGFzIGEgY2hpbGQgb2YgdGhpcyByZXNvdXJjZSBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGEgcmV0ZW50aW9uIHBlcmlvZCBpbiBkYXlzXG4gICAqXG4gICAqIFZhbHVlcyBiZXR3ZWVuIDMwIGFuZCA3MzAgYXJlIHN1cHBvcnRlZCBmb3IgcGF5LWFzLXlvdS1nbyBwcmljaW5nLlxuICAgKiBGcmVlIHRpZXIgaXMgbGltaXRlZCB0byA3IGRheXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgMzBcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbkluRGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU0tVIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3b3Jrc3BhY2VcbiAgICpcbiAgICogRGV0ZXJtaW5lcyBwcmljaW5nIHRpZXIgYW5kIGNhcGFiaWxpdGllcyBvZiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIHsgbmFtZTogXCJQZXJHQjIwMThcIiB9XG4gICAqL1xuICByZWFkb25seSBza3U/OiBMb2dBbmFseXRpY3NXb3Jrc3BhY2VTa3U7XG5cbiAgLyoqXG4gICAqIERhaWx5IHZvbHVtZSBjYXAgZm9yIGRhdGEgaW5nZXN0aW9uXG4gICAqXG4gICAqIFdoZW4gdGhlIGRhaWx5IGNhcCBpcyByZWFjaGVkLCBkYXRhIGluZ2VzdGlvbiBzdG9wcyB1bnRpbCB0aGUgbmV4dCBkYXkuXG4gICAqIEEgdmFsdWUgb2YgZGFpbHlRdW90YUdiOiAtMSBtZWFucyBubyBjYXAuXG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VDYXBwaW5nPzogTG9nQW5hbHl0aWNzV29ya3NwYWNlQ2FwcGluZztcblxuICAvKipcbiAgICogUHVibGljIG5ldHdvcmsgYWNjZXNzIGZvciBkYXRhIGluZ2VzdGlvblxuICAgKlxuICAgKiBDb250cm9scyB3aGV0aGVyIGRhdGEgY2FuIGJlIGluZ2VzdGVkIG92ZXIgdGhlIHB1YmxpYyBpbnRlcm5ldC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBcIkVuYWJsZWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljTmV0d29ya0FjY2Vzc0ZvckluZ2VzdGlvbj86IFwiRW5hYmxlZFwiIHwgXCJEaXNhYmxlZFwiO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgbmV0d29yayBhY2Nlc3MgZm9yIHF1ZXJ5aW5nIGRhdGFcbiAgICpcbiAgICogQ29udHJvbHMgd2hldGhlciBxdWVyaWVzIGNhbiBiZSBleGVjdXRlZCBvdmVyIHRoZSBwdWJsaWMgaW50ZXJuZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJFbmFibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY05ldHdvcmtBY2Nlc3NGb3JRdWVyeT86IFwiRW5hYmxlZFwiIHwgXCJEaXNhYmxlZFwiO1xuXG4gIC8qKlxuICAgKiBXb3Jrc3BhY2UgZmVhdHVyZXMgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHNwZWNpZmljIHdvcmtzcGFjZSBmZWF0dXJlcyBsaWtlIGRhdGEgZXhwb3J0LFxuICAgKiBpbW1lZGlhdGUgcHVyZ2UsIGFuZCBsb2NhbCBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVzPzogTG9nQW5hbHl0aWNzV29ya3NwYWNlRmVhdHVyZXM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY3VzdG9tZXItbWFuYWdlZCBrZXlzIGFyZSByZXF1aXJlZCBmb3Igc2F2ZWQgc2VhcmNoZXMgYW5kIGFsZXJ0c1xuICAgKlxuICAgKiBXaGVuIGVuYWJsZWQsIGFsbCBzYXZlZCBzZWFyY2hlcyBhbmQgYWxlcnRzIG11c3QgdXNlIGN1c3RvbWVyLW1hbmFnZWQga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlQ21rRm9yUXVlcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBJRCBvZiB0aGUgZGVmYXVsdCBEYXRhIENvbGxlY3Rpb24gUnVsZVxuICAgKlxuICAgKiBBc3NvY2lhdGVzIGEgZGVmYXVsdCBEQ1Igd2l0aCB0aGUgd29ya3NwYWNlIGZvciBkYXRhIGNvbGxlY3Rpb24uXG4gICAqIE9ubHkgYXZhaWxhYmxlIGluIEFQSSB2ZXJzaW9uIDIwMjMtMDktMDEgYW5kIGxhdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdERhdGFDb2xsZWN0aW9uUnVsZVJlc291cmNlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgaWRlbnRpdHkgY29uZmlndXJhdGlvbiBmb3IgdGhlIHdvcmtzcGFjZVxuICAgKlxuICAgKiBFbmFibGVzIG1hbmFnZWQgaWRlbnRpdHkgYXV0aGVudGljYXRpb24gZm9yIHRoZSB3b3Jrc3BhY2UuXG4gICAqL1xuICByZWFkb25seSBpZGVudGl0eT86IExvZ0FuYWx5dGljc1dvcmtzcGFjZUlkZW50aXR5O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZSByZXF1ZXN0IGJvZHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dBbmFseXRpY3NXb3Jrc3BhY2VCb2R5UHJvcGVydGllcyB7XG4gIHJlYWRvbmx5IHJldGVudGlvbkluRGF5cz86IG51bWJlcjtcbiAgcmVhZG9ubHkgc2t1PzogTG9nQW5hbHl0aWNzV29ya3NwYWNlU2t1O1xuICByZWFkb25seSB3b3Jrc3BhY2VDYXBwaW5nPzogTG9nQW5hbHl0aWNzV29ya3NwYWNlQ2FwcGluZztcbiAgcmVhZG9ubHkgcHVibGljTmV0d29ya0FjY2Vzc0ZvckluZ2VzdGlvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVibGljTmV0d29ya0FjY2Vzc0ZvclF1ZXJ5Pzogc3RyaW5nO1xuICByZWFkb25seSBmZWF0dXJlcz86IExvZ0FuYWx5dGljc1dvcmtzcGFjZUZlYXR1cmVzO1xuICByZWFkb25seSBmb3JjZUNta0ZvclF1ZXJ5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVmYXVsdERhdGFDb2xsZWN0aW9uUnVsZVJlc291cmNlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHJlc291cmNlIGJvZHkgaW50ZXJmYWNlIGZvciBBenVyZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZSBBUEkgY2FsbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dBbmFseXRpY3NXb3Jrc3BhY2VCb2R5IHtcbiAgcmVhZG9ubHkgcHJvcGVydGllczogTG9nQW5hbHl0aWNzV29ya3NwYWNlQm9keVByb3BlcnRpZXM7XG4gIHJlYWRvbmx5IGlkZW50aXR5PzogTG9nQW5hbHl0aWNzV29ya3NwYWNlSWRlbnRpdHk7XG59XG5cbi8qKlxuICogVW5pZmllZCBBenVyZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZSBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW5nbGUsIHZlcnNpb24tYXdhcmUgaW1wbGVtZW50YXRpb24gdGhhdCBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvblxuICogcmVzb2x1dGlvbiwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiB3aGlsZSBtYWludGFpbmluZyBmdWxsIEpTSUkgY29tcGxpYW5jZS5cbiAqXG4gKiBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZSBpcyB0aGUgY2VudHJhbCBkZXN0aW5hdGlvbiBmb3IgbG9nIGRhdGEgZnJvbSBBenVyZSByZXNvdXJjZXMsXG4gKiBhcHBsaWNhdGlvbnMsIGFuZCBvbi1wcmVtaXNlcyBpbmZyYXN0cnVjdHVyZS4gSXQgZW5hYmxlcyBxdWVyeWluZywgYW5hbHlzaXMsIGFuZFxuICogdmlzdWFsaXphdGlvbiBvZiBsb2cgZGF0YSB1c2luZyBLdXN0byBRdWVyeSBMYW5ndWFnZSAoS1FMKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2Ugd2l0aCBkZWZhdWx0IHNldHRpbmdzOlxuICogY29uc3Qgd29ya3NwYWNlID0gbmV3IExvZ0FuYWx5dGljc1dvcmtzcGFjZSh0aGlzLCBcIm15LXdvcmtzcGFjZVwiLCB7XG4gKiAgIG5hbWU6IFwibXktbG9nLWFuYWx5dGljc1wiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIExvZyBBbmFseXRpY3MgV29ya3NwYWNlIHdpdGggY3VzdG9tIHJldGVudGlvbiBhbmQgU0tVOlxuICogY29uc3Qgd29ya3NwYWNlID0gbmV3IExvZ0FuYWx5dGljc1dvcmtzcGFjZSh0aGlzLCBcInByb2R1Y3Rpb24td29ya3NwYWNlXCIsIHtcbiAqICAgbmFtZTogXCJwcm9kdWN0aW9uLWxvZ3NcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgcmV0ZW50aW9uSW5EYXlzOiA5MCxcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJQZXJHQjIwMThcIlxuICogICB9LFxuICogICBwdWJsaWNOZXR3b3JrQWNjZXNzRm9ySW5nZXN0aW9uOiBcIkVuYWJsZWRcIixcbiAqICAgcHVibGljTmV0d29ya0FjY2Vzc0ZvclF1ZXJ5OiBcIkVuYWJsZWRcIixcbiAqICAgdGFnczoge1xuICogICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIlxuICogICB9XG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2Ugd2l0aCBjYXBhY2l0eSByZXNlcnZhdGlvbjpcbiAqIGNvbnN0IHdvcmtzcGFjZSA9IG5ldyBMb2dBbmFseXRpY3NXb3Jrc3BhY2UodGhpcywgXCJoaWdoLXZvbHVtZS13b3Jrc3BhY2VcIiwge1xuICogICBuYW1lOiBcImhpZ2gtdm9sdW1lLWxvZ3NcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgcmV0ZW50aW9uSW5EYXlzOiAzNjUsXG4gKiAgIHNrdToge1xuICogICAgIG5hbWU6IFwiQ2FwYWNpdHlSZXNlcnZhdGlvblwiLFxuICogICAgIGNhcGFjaXR5UmVzZXJ2YXRpb25MZXZlbDogNTAwXG4gKiAgIH0sXG4gKiAgIHdvcmtzcGFjZUNhcHBpbmc6IHtcbiAqICAgICBkYWlseVF1b3RhR2I6IDEwMFxuICogICB9XG4gKiB9KTtcbiAqXG4gKiBAc3RhYmlsaXR5IHN0YWJsZVxuICovXG5leHBvcnQgY2xhc3MgTG9nQW5hbHl0aWNzV29ya3NwYWNlIGV4dGVuZHMgQXphcGlSZXNvdXJjZSB7XG4gIHN0YXRpYyB7XG4gICAgQXphcGlSZXNvdXJjZS5yZWdpc3RlclNjaGVtYXMoXG4gICAgICBMT0dfQU5BTFlUSUNTX1dPUktTUEFDRV9UWVBFLFxuICAgICAgQUxMX0xPR19BTkFMWVRJQ1NfV09SS1NQQUNFX1ZFUlNJT05TLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoaXMgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2UgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogTG9nQW5hbHl0aWNzV29ya3NwYWNlUHJvcHM7XG5cbiAgLy8gT3V0cHV0IHByb3BlcnRpZXMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZ1xuICBwdWJsaWMgcmVhZG9ubHkgaWRPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHdvcmtzcGFjZUlkT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBjdXN0b21lcklkT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2UgdXNpbmcgdGhlIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIFRoZSBjb25zdHJ1Y3RvciBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiByZXNvbHV0aW9uLCBzY2hlbWEgcmVnaXN0cmF0aW9uLFxuICAgKiB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgY3JlYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIExvZyBBbmFseXRpY3MgV29ya3NwYWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTG9nQW5hbHl0aWNzV29ya3NwYWNlUHJvcHMpIHtcbiAgICAvLyBWYWxpZGF0ZSByZXRlbnRpb24gZGF5cyBpZiBwcm92aWRlZFxuICAgIGlmIChwcm9wcy5yZXRlbnRpb25JbkRheXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHByb3BzLnJldGVudGlvbkluRGF5cyA8IDMwIHx8IHByb3BzLnJldGVudGlvbkluRGF5cyA+IDczMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZXRlbnRpb25JbkRheXMgbXVzdCBiZSBiZXR3ZWVuIDMwIGFuZCA3MzAgZGF5c1wiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBjYXBhY2l0eSByZXNlcnZhdGlvbiBsZXZlbCBpZiBDYXBhY2l0eVJlc2VydmF0aW9uIFNLVSBpcyB1c2VkXG4gICAgaWYgKHByb3BzLnNrdT8ubmFtZSA9PT0gXCJDYXBhY2l0eVJlc2VydmF0aW9uXCIpIHtcbiAgICAgIGNvbnN0IHZhbGlkTGV2ZWxzID0gWzEwMCwgMjAwLCAzMDAsIDQwMCwgNTAwLCAxMDAwLCAyMDAwLCA1MDAwXTtcbiAgICAgIGlmIChcbiAgICAgICAgcHJvcHMuc2t1LmNhcGFjaXR5UmVzZXJ2YXRpb25MZXZlbCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICF2YWxpZExldmVscy5pbmNsdWRlcyhwcm9wcy5za3UuY2FwYWNpdHlSZXNlcnZhdGlvbkxldmVsKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgY2FwYWNpdHlSZXNlcnZhdGlvbkxldmVsIG11c3QgYmUgb25lIG9mICR7dmFsaWRMZXZlbHMuam9pbihcIiwgXCIpfSB3aGVuIHVzaW5nIENhcGFjaXR5UmVzZXJ2YXRpb24gU0tVYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIENyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0cyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nIGZyb20gb3RoZXIgcmVzb3VyY2VzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2VcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZU91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm5hbWV9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBuYW1lIG9mIHRoZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy53b3Jrc3BhY2VJZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJ3b3Jrc3BhY2VfaWRcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMuY3VzdG9tZXJJZH1gLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVGhlIHVuaXF1ZSBpZGVudGlmaWVyICh3b3Jrc3BhY2UgSUQpIG9mIHRoZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jdXN0b21lcklkT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImN1c3RvbWVyX2lkXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLmN1c3RvbWVySWR9YCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlRoZSBjdXN0b21lciBJRCAoc2FtZSBhcyB3b3Jrc3BhY2UgSUQpIG9mIHRoZSBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZVwiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHNcbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLndvcmtzcGFjZUlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwid29ya3NwYWNlX2lkXCIpO1xuICAgIHRoaXMuY3VzdG9tZXJJZE91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImN1c3RvbWVyX2lkXCIpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVRVUlSRUQgQUJTVFJBQ1QgTUVUSE9EUyBGUk9NIEF6YXBpUmVzb3VyY2VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGVmYXVsdCBBUEkgdmVyc2lvbiB0byB1c2Ugd2hlbiBubyBleHBsaWNpdCB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICAgKiBSZXR1cm5zIHRoZSBsYXRlc3Qgc3RhYmxlIHZlcnNpb24gYXMgdGhlIGRlZmF1bHRcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0VmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIjIwMjMtMDktMDFcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlIGZvciBMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc291cmNlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBMT0dfQU5BTFlUSUNTX1dPUktTUEFDRV9UWVBFO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEFQSSBzY2hlbWEgZm9yIHRoZSByZXNvbHZlZCB2ZXJzaW9uXG4gICAqIFVzZXMgdGhlIGZyYW1ld29yaydzIHNjaGVtYSByZXNvbHV0aW9uIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgc2NoZW1hXG4gICAqL1xuICBwcm90ZWN0ZWQgYXBpU2NoZW1hKCk6IEFwaVNjaGVtYSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNjaGVtYSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoaXMgcmVzb3VyY2UgdHlwZSByZXF1aXJlcyBhIGxvY2F0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVxdWlyZXNMb2NhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSByZXNvdXJjZSBib2R5IGZvciB0aGUgQXp1cmUgQVBJIGNhbGxcbiAgICogVHJhbnNmb3JtcyB0aGUgaW5wdXQgcHJvcGVydGllcyBpbnRvIHRoZSBKU09OIGZvcm1hdCBleHBlY3RlZCBieSBBenVyZSBSRVNUIEFQSVxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlc291cmNlQm9keShwcm9wczogYW55KTogYW55IHtcbiAgICBjb25zdCB0eXBlZFByb3BzID0gcHJvcHMgYXMgTG9nQW5hbHl0aWNzV29ya3NwYWNlUHJvcHM7XG5cbiAgICBjb25zdCBib2R5OiBhbnkgPSB7XG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHJldGVudGlvbkluRGF5czogdHlwZWRQcm9wcy5yZXRlbnRpb25JbkRheXMgPz8gMzAsXG4gICAgICAgIHNrdTogdHlwZWRQcm9wcy5za3UgPz8geyBuYW1lOiBcIlBlckdCMjAxOFwiIH0sXG4gICAgICAgIHB1YmxpY05ldHdvcmtBY2Nlc3NGb3JJbmdlc3Rpb246XG4gICAgICAgICAgdHlwZWRQcm9wcy5wdWJsaWNOZXR3b3JrQWNjZXNzRm9ySW5nZXN0aW9uID8/IFwiRW5hYmxlZFwiLFxuICAgICAgICBwdWJsaWNOZXR3b3JrQWNjZXNzRm9yUXVlcnk6XG4gICAgICAgICAgdHlwZWRQcm9wcy5wdWJsaWNOZXR3b3JrQWNjZXNzRm9yUXVlcnkgPz8gXCJFbmFibGVkXCIsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBBZGQgb3B0aW9uYWwgcHJvcGVydGllcyBvbmx5IGlmIHNwZWNpZmllZFxuICAgIGlmICh0eXBlZFByb3BzLndvcmtzcGFjZUNhcHBpbmcpIHtcbiAgICAgIGJvZHkucHJvcGVydGllcy53b3Jrc3BhY2VDYXBwaW5nID0gdHlwZWRQcm9wcy53b3Jrc3BhY2VDYXBwaW5nO1xuICAgIH1cblxuICAgIGlmICh0eXBlZFByb3BzLmZlYXR1cmVzKSB7XG4gICAgICBib2R5LnByb3BlcnRpZXMuZmVhdHVyZXMgPSB0eXBlZFByb3BzLmZlYXR1cmVzO1xuICAgIH1cblxuICAgIGlmICh0eXBlZFByb3BzLmZvcmNlQ21rRm9yUXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5wcm9wZXJ0aWVzLmZvcmNlQ21rRm9yUXVlcnkgPSB0eXBlZFByb3BzLmZvcmNlQ21rRm9yUXVlcnk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuZGVmYXVsdERhdGFDb2xsZWN0aW9uUnVsZVJlc291cmNlSWQpIHtcbiAgICAgIGJvZHkucHJvcGVydGllcy5kZWZhdWx0RGF0YUNvbGxlY3Rpb25SdWxlUmVzb3VyY2VJZCA9XG4gICAgICAgIHR5cGVkUHJvcHMuZGVmYXVsdERhdGFDb2xsZWN0aW9uUnVsZVJlc291cmNlSWQ7XG4gICAgfVxuXG4gICAgLy8gQWRkIGlkZW50aXR5IGF0IHRoZSB0b3AgbGV2ZWwgaWYgc3BlY2lmaWVkXG4gICAgaWYgKHR5cGVkUHJvcHMuaWRlbnRpdHkpIHtcbiAgICAgIGJvZHkuaWRlbnRpdHkgPSB0eXBlZFByb3BzLmlkZW50aXR5O1xuICAgIH1cblxuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBwYXJlbnQgcmVzb3VyY2UgSUQgZm9yIExvZyBBbmFseXRpY3MgV29ya3NwYWNlXG4gICAqIExvZyBBbmFseXRpY3MgV29ya3NwYWNlIGlzIGEgdG9wLWxldmVsIHJlc291cmNlIHdpdGhpbiBhIHJlc291cmNlIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSByZXNvdXJjZSBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIFRoZSBwYXJlbnQgcmVzb3VyY2UgSUQgKHRoZSByZXNvdXJjZSBncm91cClcbiAgICovXG4gIHByb3RlY3RlZCByZXNvbHZlUGFyZW50SWQocHJvcHM6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChwcm9wcyBhcyBMb2dBbmFseXRpY3NXb3Jrc3BhY2VQcm9wcykucmVzb3VyY2VHcm91cElkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test for Azure Log Analytics Workspace
|
|
3
|
+
*
|
|
4
|
+
* This test demonstrates basic usage of the LogAnalyticsWorkspace construct
|
|
5
|
+
* and validates deployment, idempotency, and cleanup.
|
|
6
|
+
*
|
|
7
|
+
* Run with: npm run integration:nostream
|
|
8
|
+
*/
|
|
9
|
+
import "cdktn/lib/testing/adapters/jest";
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Integration test for Azure Log Analytics Workspace
|
|
4
|
+
*
|
|
5
|
+
* This test demonstrates basic usage of the LogAnalyticsWorkspace construct
|
|
6
|
+
* and validates deployment, idempotency, and cleanup.
|
|
7
|
+
*
|
|
8
|
+
* Run with: npm run integration:nostream
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const cdktn_1 = require("cdktn");
|
|
12
|
+
require("cdktn/lib/testing/adapters/jest");
|
|
13
|
+
const azure_resourcegroup_1 = require("../../azure-resourcegroup");
|
|
14
|
+
const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
|
|
15
|
+
const testing_1 = require("../../testing");
|
|
16
|
+
const log_analytics_workspace_1 = require("../lib/log-analytics-workspace");
|
|
17
|
+
/**
|
|
18
|
+
* Example stack demonstrating Log Analytics Workspace usage
|
|
19
|
+
*/
|
|
20
|
+
class LogAnalyticsWorkspaceExampleStack extends cdktn_1.TerraformStack {
|
|
21
|
+
constructor(scope, id) {
|
|
22
|
+
super(scope, id);
|
|
23
|
+
// Configure AZAPI provider
|
|
24
|
+
new provider_1.AzapiProvider(this, "azapi", {});
|
|
25
|
+
// Create a resource group
|
|
26
|
+
const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "example-rg", {
|
|
27
|
+
name: "law-example-rg",
|
|
28
|
+
location: "eastus",
|
|
29
|
+
tags: {
|
|
30
|
+
environment: "example",
|
|
31
|
+
purpose: "integration-test",
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
// Example 1: Basic Log Analytics Workspace
|
|
35
|
+
new log_analytics_workspace_1.LogAnalyticsWorkspace(this, "basic-workspace", {
|
|
36
|
+
name: "law-basic-example",
|
|
37
|
+
location: resourceGroup.props.location,
|
|
38
|
+
resourceGroupId: resourceGroup.id,
|
|
39
|
+
tags: {
|
|
40
|
+
example: "basic",
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
// Example 2: Log Analytics Workspace with specific version
|
|
44
|
+
new log_analytics_workspace_1.LogAnalyticsWorkspace(this, "versioned-workspace", {
|
|
45
|
+
name: "law-versioned-example",
|
|
46
|
+
location: resourceGroup.props.location,
|
|
47
|
+
resourceGroupId: resourceGroup.id,
|
|
48
|
+
retentionInDays: 60,
|
|
49
|
+
sku: {
|
|
50
|
+
name: "PerGB2018",
|
|
51
|
+
},
|
|
52
|
+
apiVersion: "2023-09-01",
|
|
53
|
+
tags: {
|
|
54
|
+
example: "versioned",
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
describe("Log Analytics Workspace Integration Test", () => {
|
|
60
|
+
it("should deploy, validate idempotency, and cleanup Log Analytics Workspace resources", () => {
|
|
61
|
+
const app = cdktn_1.Testing.app();
|
|
62
|
+
const stack = new LogAnalyticsWorkspaceExampleStack(app, "test-log-analytics-workspace");
|
|
63
|
+
const synthesized = cdktn_1.Testing.fullSynth(stack);
|
|
64
|
+
// This will:
|
|
65
|
+
// 1. Run terraform apply to deploy resources
|
|
66
|
+
// 2. Run terraform plan to check idempotency (no changes expected)
|
|
67
|
+
// 3. Run terraform destroy to cleanup resources
|
|
68
|
+
(0, testing_1.TerraformApplyCheckAndDestroy)(synthesized);
|
|
69
|
+
}, 600000); // 10 minute timeout for deployment and cleanup
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuYWx5dGljcy13b3Jrc3BhY2UuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtbG9nYW5hbHl0aWNzd29ya3NwYWNlL3Rlc3QvbG9nLWFuYWx5dGljcy13b3Jrc3BhY2UuaW50ZWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBRUgsaUNBQWdEO0FBRWhELDJDQUF5QztBQUN6QyxtRUFBMEQ7QUFDMUQsa0ZBQW9GO0FBQ3BGLDJDQUE4RDtBQUM5RCw0RUFBdUU7QUFFdkU7O0dBRUc7QUFDSCxNQUFNLGlDQUFrQyxTQUFRLHNCQUFjO0lBQzVELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMkJBQTJCO1FBQzNCLElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLDBCQUEwQjtRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLG1DQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUMxRCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRTtnQkFDSixXQUFXLEVBQUUsU0FBUztnQkFDdEIsT0FBTyxFQUFFLGtCQUFrQjthQUM1QjtTQUNGLENBQUMsQ0FBQztRQUVILDJDQUEyQztRQUMzQyxJQUFJLCtDQUFxQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUNqRCxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVM7WUFDdkMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsT0FBTzthQUNqQjtTQUNGLENBQUMsQ0FBQztRQUVILDJEQUEyRDtRQUMzRCxJQUFJLCtDQUFxQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNyRCxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVM7WUFDdkMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLGVBQWUsRUFBRSxFQUFFO1lBQ25CLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsV0FBVzthQUNsQjtZQUNELFVBQVUsRUFBRSxZQUFZO1lBQ3hCLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsV0FBVzthQUNyQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELFFBQVEsQ0FBQywwQ0FBMEMsRUFBRSxHQUFHLEVBQUU7SUFDeEQsRUFBRSxDQUFDLG9GQUFvRixFQUFFLEdBQUcsRUFBRTtRQUM1RixNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQ0FBaUMsQ0FDakQsR0FBRyxFQUNILDhCQUE4QixDQUMvQixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxhQUFhO1FBQ2IsNkNBQTZDO1FBQzdDLG1FQUFtRTtRQUNuRSxnREFBZ0Q7UUFDaEQsSUFBQSx1Q0FBNkIsRUFBQyxXQUFXLENBQUMsQ0FBQztJQUM3QyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQywrQ0FBK0M7QUFDN0QsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVncmF0aW9uIHRlc3QgZm9yIEF6dXJlIExvZyBBbmFseXRpY3MgV29ya3NwYWNlXG4gKlxuICogVGhpcyB0ZXN0IGRlbW9uc3RyYXRlcyBiYXNpYyB1c2FnZSBvZiB0aGUgTG9nQW5hbHl0aWNzV29ya3NwYWNlIGNvbnN0cnVjdFxuICogYW5kIHZhbGlkYXRlcyBkZXBsb3ltZW50LCBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAuXG4gKlxuICogUnVuIHdpdGg6IG5wbSBydW4gaW50ZWdyYXRpb246bm9zdHJlYW1cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nLCBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCBcImNka3RuL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiLi4vLi4vYXp1cmUtcmVzb3VyY2Vncm91cFwiO1xuaW1wb3J0IHsgQXphcGlQcm92aWRlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9wcm92aWRlcnMtYXphcGkvcHJvdmlkZXJcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95IH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmdcIjtcbmltcG9ydCB7IExvZ0FuYWx5dGljc1dvcmtzcGFjZSB9IGZyb20gXCIuLi9saWIvbG9nLWFuYWx5dGljcy13b3Jrc3BhY2VcIjtcblxuLyoqXG4gKiBFeGFtcGxlIHN0YWNrIGRlbW9uc3RyYXRpbmcgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2UgdXNhZ2VcbiAqL1xuY2xhc3MgTG9nQW5hbHl0aWNzV29ya3NwYWNlRXhhbXBsZVN0YWNrIGV4dGVuZHMgVGVycmFmb3JtU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIENvbmZpZ3VyZSBBWkFQSSBwcm92aWRlclxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgLy8gQ3JlYXRlIGEgcmVzb3VyY2UgZ3JvdXBcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJleGFtcGxlLXJnXCIsIHtcbiAgICAgIG5hbWU6IFwibGF3LWV4YW1wbGUtcmdcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgdGFnczoge1xuICAgICAgICBlbnZpcm9ubWVudDogXCJleGFtcGxlXCIsXG4gICAgICAgIHB1cnBvc2U6IFwiaW50ZWdyYXRpb24tdGVzdFwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEV4YW1wbGUgMTogQmFzaWMgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2VcbiAgICBuZXcgTG9nQW5hbHl0aWNzV29ya3NwYWNlKHRoaXMsIFwiYmFzaWMtd29ya3NwYWNlXCIsIHtcbiAgICAgIG5hbWU6IFwibGF3LWJhc2ljLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgZXhhbXBsZTogXCJiYXNpY1wiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEV4YW1wbGUgMjogTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2Ugd2l0aCBzcGVjaWZpYyB2ZXJzaW9uXG4gICAgbmV3IExvZ0FuYWx5dGljc1dvcmtzcGFjZSh0aGlzLCBcInZlcnNpb25lZC13b3Jrc3BhY2VcIiwge1xuICAgICAgbmFtZTogXCJsYXctdmVyc2lvbmVkLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHJldGVudGlvbkluRGF5czogNjAsXG4gICAgICBza3U6IHtcbiAgICAgICAgbmFtZTogXCJQZXJHQjIwMThcIixcbiAgICAgIH0sXG4gICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMDktMDFcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgZXhhbXBsZTogXCJ2ZXJzaW9uZWRcIixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZGVzY3JpYmUoXCJMb2cgQW5hbHl0aWNzIFdvcmtzcGFjZSBJbnRlZ3JhdGlvbiBUZXN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgZGVwbG95LCB2YWxpZGF0ZSBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2UgcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IExvZ0FuYWx5dGljc1dvcmtzcGFjZUV4YW1wbGVTdGFjayhcbiAgICAgIGFwcCxcbiAgICAgIFwidGVzdC1sb2ctYW5hbHl0aWNzLXdvcmtzcGFjZVwiLFxuICAgICk7XG4gICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLmZ1bGxTeW50aChzdGFjayk7XG5cbiAgICAvLyBUaGlzIHdpbGw6XG4gICAgLy8gMS4gUnVuIHRlcnJhZm9ybSBhcHBseSB0byBkZXBsb3kgcmVzb3VyY2VzXG4gICAgLy8gMi4gUnVuIHRlcnJhZm9ybSBwbGFuIHRvIGNoZWNrIGlkZW1wb3RlbmN5IChubyBjaGFuZ2VzIGV4cGVjdGVkKVxuICAgIC8vIDMuIFJ1biB0ZXJyYWZvcm0gZGVzdHJveSB0byBjbGVhbnVwIHJlc291cmNlc1xuICAgIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95KHN5bnRoZXNpemVkKTtcbiAgfSwgNjAwMDAwKTsgLy8gMTAgbWludXRlIHRpbWVvdXQgZm9yIGRlcGxveW1lbnQgYW5kIGNsZWFudXBcbn0pO1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive tests for the LogAnalyticsWorkspace implementation
|
|
3
|
+
*
|
|
4
|
+
* This test suite validates the LogAnalyticsWorkspace class using the AzapiResource framework.
|
|
5
|
+
* Tests cover automatic version resolution, explicit version pinning, schema validation,
|
|
6
|
+
* property configurations, and resource creation.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|