@microsoft/terraform-cdk-constructs 1.2.0 → 1.3.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 +54846 -26661
- package/API.md +72091 -23784
- package/lib/azure-actiongroup/index.d.ts +0 -10
- package/lib/azure-actiongroup/index.js +1 -11
- package/lib/azure-actiongroup/lib/action-group.d.ts +0 -10
- package/lib/azure-actiongroup/lib/action-group.js +6 -32
- package/lib/azure-actiongroup/lib/index.d.ts +1 -4
- package/lib/azure-actiongroup/lib/index.js +2 -5
- package/lib/azure-activitylogalert/index.d.ts +0 -10
- package/lib/azure-activitylogalert/index.js +1 -11
- package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +0 -10
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +6 -32
- package/lib/azure-activitylogalert/lib/index.d.ts +1 -4
- package/lib/azure-activitylogalert/lib/index.js +2 -5
- package/lib/azure-aks/index.d.ts +0 -8
- package/lib/azure-aks/index.js +1 -11
- package/lib/azure-aks/lib/aks-cluster.d.ts +4 -13
- package/lib/azure-aks/lib/aks-cluster.js +13 -36
- package/lib/azure-aks/lib/index.d.ts +1 -10
- package/lib/azure-aks/lib/index.js +2 -21
- package/lib/azure-diagnosticsettings/index.d.ts +0 -6
- package/lib/azure-diagnosticsettings/index.js +1 -7
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +0 -10
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +6 -32
- package/lib/azure-diagnosticsettings/lib/index.d.ts +1 -7
- package/lib/azure-diagnosticsettings/lib/index.js +2 -8
- package/lib/azure-dnsforwardingruleset/index.d.ts +1 -0
- package/lib/azure-dnsforwardingruleset/index.js +18 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.d.ts +24 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.js +206 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +174 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +214 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.d.ts +24 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.js +242 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +193 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +193 -0
- package/lib/azure-dnsforwardingruleset/lib/index.d.ts +6 -0
- package/lib/azure-dnsforwardingruleset/lib/index.js +23 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.d.ts +24 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.js +199 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +160 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +178 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +133 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +350 -0
- package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +397 -0
- package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +285 -0
- package/lib/azure-dnsresolver/index.d.ts +1 -0
- package/lib/azure-dnsresolver/index.js +18 -0
- package/lib/azure-dnsresolver/lib/dns-resolver-schemas.d.ts +24 -0
- package/lib/azure-dnsresolver/lib/dns-resolver-schemas.js +218 -0
- package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +170 -0
- package/lib/azure-dnsresolver/lib/dns-resolver.js +236 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.d.ts +24 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.js +261 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +189 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +243 -0
- package/lib/azure-dnsresolver/lib/index.d.ts +6 -0
- package/lib/azure-dnsresolver/lib/index.js +23 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.d.ts +24 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.js +231 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +175 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +234 -0
- package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +14 -0
- package/lib/azure-dnsresolver/test/dns-resolver.integ.js +117 -0
- package/lib/azure-dnsresolver/test/dns-resolver.spec.d.ts +9 -0
- package/lib/azure-dnsresolver/test/dns-resolver.spec.js +353 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +9 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +151 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.spec.d.ts +9 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +441 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +9 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +149 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.spec.d.ts +9 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +301 -0
- package/lib/azure-dnszone/index.d.ts +1 -0
- package/lib/azure-dnszone/index.js +18 -0
- package/lib/azure-dnszone/lib/dns-zone-schemas.d.ts +24 -0
- package/lib/azure-dnszone/lib/dns-zone-schemas.js +191 -0
- package/lib/azure-dnszone/lib/dns-zone.d.ts +182 -0
- package/lib/azure-dnszone/lib/dns-zone.js +228 -0
- package/lib/azure-dnszone/lib/index.d.ts +2 -0
- package/lib/azure-dnszone/lib/index.js +19 -0
- package/lib/azure-dnszone/test/dns-zone.integ.d.ts +9 -0
- package/lib/azure-dnszone/test/dns-zone.integ.js +85 -0
- package/lib/azure-dnszone/test/dns-zone.spec.d.ts +9 -0
- package/lib/azure-dnszone/test/dns-zone.spec.js +285 -0
- package/lib/azure-metricalert/index.d.ts +0 -10
- package/lib/azure-metricalert/index.js +1 -11
- package/lib/azure-metricalert/lib/index.d.ts +1 -4
- package/lib/azure-metricalert/lib/index.js +2 -5
- package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -10
- package/lib/azure-metricalert/lib/metric-alert.js +6 -32
- package/lib/azure-networkinterface/index.d.ts +0 -3
- package/lib/azure-networkinterface/index.js +1 -4
- package/lib/azure-networkinterface/lib/index.d.ts +1 -5
- package/lib/azure-networkinterface/lib/index.js +2 -5
- package/lib/azure-networkinterface/lib/network-interface.d.ts +4 -9
- package/lib/azure-networkinterface/lib/network-interface.js +14 -29
- package/lib/azure-networkinterface/test/network-interface.integ.js +20 -6
- package/lib/azure-networksecuritygroup/index.d.ts +0 -5
- package/lib/azure-networksecuritygroup/index.js +1 -6
- package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -5
- package/lib/azure-networksecuritygroup/lib/index.js +17 -14
- package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +4 -13
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +14 -36
- package/lib/azure-policyassignment/index.d.ts +1 -0
- package/lib/azure-policyassignment/index.js +18 -0
- package/lib/azure-policyassignment/lib/index.d.ts +2 -0
- package/lib/azure-policyassignment/lib/index.js +19 -0
- package/lib/azure-policyassignment/lib/policy-assignment-schemas.d.ts +25 -0
- package/lib/azure-policyassignment/lib/policy-assignment-schemas.js +260 -0
- package/lib/azure-policyassignment/lib/policy-assignment.d.ts +342 -0
- package/lib/azure-policyassignment/lib/policy-assignment.js +228 -0
- package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +13 -0
- package/lib/azure-policyassignment/test/policy-assignment.integ.js +153 -0
- package/lib/azure-policyassignment/test/policy-assignment.spec.d.ts +9 -0
- package/lib/azure-policyassignment/test/policy-assignment.spec.js +651 -0
- package/lib/azure-policydefinition/index.d.ts +1 -0
- package/lib/azure-policydefinition/index.js +18 -0
- package/lib/azure-policydefinition/lib/index.d.ts +2 -0
- package/lib/azure-policydefinition/lib/index.js +19 -0
- package/lib/azure-policydefinition/lib/policy-definition-schemas.d.ts +25 -0
- package/lib/azure-policydefinition/lib/policy-definition-schemas.js +210 -0
- package/lib/azure-policydefinition/lib/policy-definition.d.ts +260 -0
- package/lib/azure-policydefinition/lib/policy-definition.js +199 -0
- package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +9 -0
- package/lib/azure-policydefinition/test/policy-definition.integ.js +137 -0
- package/lib/azure-policydefinition/test/policy-definition.spec.d.ts +9 -0
- package/lib/azure-policydefinition/test/policy-definition.spec.js +596 -0
- package/lib/azure-privatednszone/index.d.ts +1 -0
- package/lib/azure-privatednszone/index.js +18 -0
- package/lib/azure-privatednszone/lib/index.d.ts +2 -0
- package/lib/azure-privatednszone/lib/index.js +19 -0
- package/lib/azure-privatednszone/lib/private-dns-zone-schemas.d.ts +24 -0
- package/lib/azure-privatednszone/lib/private-dns-zone-schemas.js +254 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +178 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.js +272 -0
- package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +9 -0
- package/lib/azure-privatednszone/test/private-dns-zone.integ.js +84 -0
- package/lib/azure-privatednszone/test/private-dns-zone.spec.d.ts +9 -0
- package/lib/azure-privatednszone/test/private-dns-zone.spec.js +341 -0
- package/lib/azure-privatednszonelink/index.d.ts +1 -0
- package/lib/azure-privatednszonelink/index.js +18 -0
- package/lib/azure-privatednszonelink/lib/index.d.ts +2 -0
- package/lib/azure-privatednszonelink/lib/index.js +19 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.d.ts +24 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.js +262 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +202 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +250 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +9 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +110 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.d.ts +9 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +465 -0
- package/lib/azure-publicipaddress/index.d.ts +0 -5
- package/lib/azure-publicipaddress/index.js +1 -6
- package/lib/azure-publicipaddress/lib/index.d.ts +2 -9
- package/lib/azure-publicipaddress/lib/index.js +17 -17
- package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +4 -13
- package/lib/azure-publicipaddress/lib/public-ip-address.js +14 -36
- package/lib/azure-resourcegroup/index.d.ts +0 -37
- package/lib/azure-resourcegroup/index.js +1 -39
- package/lib/azure-resourcegroup/lib/index.d.ts +1 -44
- package/lib/azure-resourcegroup/lib/index.js +2 -43
- package/lib/azure-resourcegroup/lib/resource-group.d.ts +9 -23
- package/lib/azure-resourcegroup/lib/resource-group.js +23 -56
- package/lib/azure-resourcegroup/test/resource-group.spec.js +13 -19
- package/lib/azure-roleassignment/index.d.ts +1 -0
- package/lib/azure-roleassignment/index.js +18 -0
- package/lib/azure-roleassignment/lib/index.d.ts +2 -0
- package/lib/azure-roleassignment/lib/index.js +19 -0
- package/lib/azure-roleassignment/lib/role-assignment-schemas.d.ts +25 -0
- package/lib/azure-roleassignment/lib/role-assignment-schemas.js +238 -0
- package/lib/azure-roleassignment/lib/role-assignment.d.ts +294 -0
- package/lib/azure-roleassignment/lib/role-assignment.js +257 -0
- package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +12 -0
- package/lib/azure-roleassignment/test/role-assignment.integ.js +101 -0
- package/lib/azure-roleassignment/test/role-assignment.spec.d.ts +9 -0
- package/lib/azure-roleassignment/test/role-assignment.spec.js +633 -0
- package/lib/azure-roledefinition/index.d.ts +1 -0
- package/lib/azure-roledefinition/index.js +18 -0
- package/lib/azure-roledefinition/lib/index.d.ts +2 -0
- package/lib/azure-roledefinition/lib/index.js +19 -0
- package/lib/azure-roledefinition/lib/role-definition-schemas.d.ts +25 -0
- package/lib/azure-roledefinition/lib/role-definition-schemas.js +195 -0
- package/lib/azure-roledefinition/lib/role-definition.d.ts +236 -0
- package/lib/azure-roledefinition/lib/role-definition.js +192 -0
- package/lib/azure-roledefinition/test/role-definition.integ.d.ts +12 -0
- package/lib/azure-roledefinition/test/role-definition.integ.js +142 -0
- package/lib/azure-roledefinition/test/role-definition.spec.d.ts +9 -0
- package/lib/azure-roledefinition/test/role-definition.spec.js +946 -0
- package/lib/azure-storageaccount/index.d.ts +0 -19
- package/lib/azure-storageaccount/index.js +1 -20
- package/lib/azure-storageaccount/lib/index.d.ts +1 -7
- package/lib/azure-storageaccount/lib/index.js +2 -8
- package/lib/azure-storageaccount/lib/storage-account.d.ts +4 -9
- package/lib/azure-storageaccount/lib/storage-account.js +15 -29
- package/lib/azure-subnet/index.d.ts +0 -3
- package/lib/azure-subnet/index.js +1 -4
- package/lib/azure-subnet/lib/index.d.ts +1 -4
- package/lib/azure-subnet/lib/index.js +2 -5
- package/lib/azure-subnet/lib/subnet.d.ts +3 -14
- package/lib/azure-subnet/lib/subnet.js +28 -47
- package/lib/azure-subnet/test/subnet.integ.js +19 -7
- package/lib/azure-subnet/test/subnet.spec.js +1 -2
- package/lib/azure-virtualmachine/index.d.ts +0 -6
- package/lib/azure-virtualmachine/index.js +1 -7
- package/lib/azure-virtualmachine/lib/index.d.ts +1 -10
- package/lib/azure-virtualmachine/lib/index.js +2 -21
- package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +4 -13
- package/lib/azure-virtualmachine/lib/virtual-machine.js +15 -36
- package/lib/azure-virtualnetwork/index.d.ts +0 -9
- package/lib/azure-virtualnetwork/index.js +1 -11
- package/lib/azure-virtualnetwork/lib/index.d.ts +2 -9
- package/lib/azure-virtualnetwork/lib/index.js +17 -20
- package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +4 -13
- package/lib/azure-virtualnetwork/lib/virtual-network.js +15 -36
- package/lib/azure-virtualnetworkmanager/index.d.ts +1 -0
- package/lib/azure-virtualnetworkmanager/index.js +18 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.d.ts +48 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.js +265 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +185 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +206 -0
- package/lib/azure-virtualnetworkmanager/lib/index.d.ts +14 -0
- package/lib/azure-virtualnetworkmanager/lib/index.js +31 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.js +189 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.js +201 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +135 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +163 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +139 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +158 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.js +182 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +144 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +164 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.d.ts +38 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.js +206 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +142 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +162 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.d.ts +39 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.js +359 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +221 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +204 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.js +236 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +337 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +283 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +25 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +402 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.d.ts +9 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +1652 -0
- package/lib/azure-vmss/index.d.ts +0 -5
- package/lib/azure-vmss/index.js +1 -6
- package/lib/azure-vmss/lib/index.d.ts +0 -7
- package/lib/azure-vmss/lib/index.js +1 -21
- package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +5 -13
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +29 -53
- package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.d.ts +10 -0
- package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +218 -0
- package/lib/core-azure/lib/azapi/azapi-resource.d.ts +178 -26
- package/lib/core-azure/lib/azapi/azapi-resource.js +328 -90
- package/lib/core-azure/lib/azapi/azapi-resource.spec.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +5 -3
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
- package/lib/core-azure/lib/azapi/resource-schema-validator.d.ts +118 -0
- package/lib/core-azure/lib/azapi/resource-schema-validator.js +236 -0
- package/lib/core-azure/lib/azapi/resource-version-manager.d.ts +103 -0
- package/lib/core-azure/lib/azapi/resource-version-manager.js +168 -0
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +11 -6
- package/lib/core-azure/lib/index.d.ts +2 -2
- package/lib/core-azure/lib/index.js +5 -5
- 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 +19 -0
- package/lib/index.js +21 -2
- package/lib/testing/index.js +2 -2
- package/lib/testing/lib/cleanup.d.ts +1 -0
- package/lib/testing/lib/cleanup.js +19 -12
- package/lib/testing/lib/metadata.js +19 -16
- package/package.json +1 -1
- package/scripts/cleanup-test-resources.ts +22 -4
- package/scripts/generate-index.js +25 -8
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* API schemas for Azure DNS Zone across all supported versions
|
|
4
|
+
*
|
|
5
|
+
* This file defines the complete API schemas for Microsoft.Network/dnsZones
|
|
6
|
+
* across all supported API versions. The schemas are used by the VersionedAzapiResource
|
|
7
|
+
* framework for validation, transformation, and version management.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DNS_ZONE_TYPE = exports.ALL_DNS_ZONE_VERSIONS = exports.DNS_ZONE_VERSION_2018_05_01 = exports.DNS_ZONE_SCHEMA_2018_05_01 = void 0;
|
|
11
|
+
const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// COMMON PROPERTY DEFINITIONS
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Common property definitions shared across all DNS Zone versions
|
|
17
|
+
*/
|
|
18
|
+
const COMMON_PROPERTIES = {
|
|
19
|
+
location: {
|
|
20
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
21
|
+
required: true,
|
|
22
|
+
defaultValue: "global",
|
|
23
|
+
description: "The Azure region where the DNS Zone will be created. DNS Zones are global resources, so this is typically 'global'",
|
|
24
|
+
validation: [
|
|
25
|
+
{
|
|
26
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
27
|
+
message: "Location is required for DNS Zones",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
tags: {
|
|
32
|
+
dataType: version_interfaces_1.PropertyType.OBJECT,
|
|
33
|
+
required: false,
|
|
34
|
+
defaultValue: {},
|
|
35
|
+
description: "A dictionary of tags to apply to the DNS Zone for organizational, billing, or other purposes",
|
|
36
|
+
validation: [
|
|
37
|
+
{
|
|
38
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
39
|
+
value: version_interfaces_1.PropertyType.OBJECT,
|
|
40
|
+
message: "Tags must be an object with string key-value pairs",
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
name: {
|
|
45
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
46
|
+
required: true,
|
|
47
|
+
description: "The name of the DNS Zone (without a terminating dot). Must be a valid domain name",
|
|
48
|
+
validation: [
|
|
49
|
+
{
|
|
50
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
51
|
+
message: "DNS Zone name is required",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
|
|
55
|
+
value: "^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*$",
|
|
56
|
+
message: "DNS Zone name must be a valid domain name without terminating dot",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
|
|
60
|
+
value: { minLength: 1, maxLength: 253 },
|
|
61
|
+
message: "DNS Zone name must be between 1 and 253 characters",
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
zoneType: {
|
|
66
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
67
|
+
required: false,
|
|
68
|
+
defaultValue: "Public",
|
|
69
|
+
description: "The type of this DNS zone (Public or Private). Public zones are Internet-accessible",
|
|
70
|
+
validation: [
|
|
71
|
+
{
|
|
72
|
+
ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
|
|
73
|
+
value: "^(Public|Private)$",
|
|
74
|
+
message: "Zone type must be either 'Public' or 'Private'",
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
registrationVirtualNetworks: {
|
|
79
|
+
dataType: version_interfaces_1.PropertyType.ARRAY,
|
|
80
|
+
required: false,
|
|
81
|
+
description: "A list of references to virtual networks that register hostnames in this DNS zone. Only valid when zoneType is Private",
|
|
82
|
+
validation: [
|
|
83
|
+
{
|
|
84
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
85
|
+
value: version_interfaces_1.PropertyType.ARRAY,
|
|
86
|
+
message: "RegistrationVirtualNetworks must be an array of virtual network references",
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
resolutionVirtualNetworks: {
|
|
91
|
+
dataType: version_interfaces_1.PropertyType.ARRAY,
|
|
92
|
+
required: false,
|
|
93
|
+
description: "A list of references to virtual networks that resolve records in this DNS zone. Only valid when zoneType is Private",
|
|
94
|
+
validation: [
|
|
95
|
+
{
|
|
96
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
97
|
+
value: version_interfaces_1.PropertyType.ARRAY,
|
|
98
|
+
message: "ResolutionVirtualNetworks must be an array of virtual network references",
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
ignoreChanges: {
|
|
103
|
+
dataType: version_interfaces_1.PropertyType.ARRAY,
|
|
104
|
+
required: false,
|
|
105
|
+
description: "Array of property names to ignore during updates",
|
|
106
|
+
validation: [
|
|
107
|
+
{
|
|
108
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
109
|
+
value: version_interfaces_1.PropertyType.ARRAY,
|
|
110
|
+
message: "IgnoreChanges must be an array of strings",
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
// =============================================================================
|
|
116
|
+
// VERSION-SPECIFIC SCHEMAS
|
|
117
|
+
// =============================================================================
|
|
118
|
+
/**
|
|
119
|
+
* API Schema for DNS Zone version 2018-05-01
|
|
120
|
+
*/
|
|
121
|
+
exports.DNS_ZONE_SCHEMA_2018_05_01 = {
|
|
122
|
+
resourceType: "Microsoft.Network/dnsZones",
|
|
123
|
+
version: "2018-05-01",
|
|
124
|
+
properties: {
|
|
125
|
+
...COMMON_PROPERTIES,
|
|
126
|
+
},
|
|
127
|
+
required: ["location", "name"],
|
|
128
|
+
optional: [
|
|
129
|
+
"tags",
|
|
130
|
+
"zoneType",
|
|
131
|
+
"registrationVirtualNetworks",
|
|
132
|
+
"resolutionVirtualNetworks",
|
|
133
|
+
"ignoreChanges",
|
|
134
|
+
],
|
|
135
|
+
deprecated: [],
|
|
136
|
+
transformationRules: {},
|
|
137
|
+
validationRules: [
|
|
138
|
+
{
|
|
139
|
+
property: "location",
|
|
140
|
+
rules: [
|
|
141
|
+
{
|
|
142
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
143
|
+
message: "Location is required for DNS Zones",
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
property: "name",
|
|
149
|
+
rules: [
|
|
150
|
+
{
|
|
151
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
152
|
+
message: "Name is required for DNS Zones",
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
// =============================================================================
|
|
159
|
+
// VERSION CONFIGURATIONS
|
|
160
|
+
// =============================================================================
|
|
161
|
+
/**
|
|
162
|
+
* Version configuration for DNS Zone 2018-05-01
|
|
163
|
+
*/
|
|
164
|
+
exports.DNS_ZONE_VERSION_2018_05_01 = {
|
|
165
|
+
version: "2018-05-01",
|
|
166
|
+
schema: exports.DNS_ZONE_SCHEMA_2018_05_01,
|
|
167
|
+
supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
|
|
168
|
+
releaseDate: "2018-05-01",
|
|
169
|
+
deprecationDate: undefined,
|
|
170
|
+
sunsetDate: undefined,
|
|
171
|
+
breakingChanges: [],
|
|
172
|
+
migrationGuide: "/docs/dns-zone/migration-2018-05-01",
|
|
173
|
+
changeLog: [
|
|
174
|
+
{
|
|
175
|
+
changeType: "added",
|
|
176
|
+
description: "Stable release of DNS Zone API with support for public and private DNS zones",
|
|
177
|
+
breaking: false,
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* All supported DNS Zone versions for registration
|
|
183
|
+
*/
|
|
184
|
+
exports.ALL_DNS_ZONE_VERSIONS = [
|
|
185
|
+
exports.DNS_ZONE_VERSION_2018_05_01,
|
|
186
|
+
];
|
|
187
|
+
/**
|
|
188
|
+
* Resource type constant
|
|
189
|
+
*/
|
|
190
|
+
exports.DNS_ZONE_TYPE = "Microsoft.Network/dnsZones";
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXpvbmUtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1kbnN6b25lL2xpYi9kbnMtem9uZS1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxZQUFZLEVBQUUsUUFBUTtRQUN0QixXQUFXLEVBQ1Qsb0hBQW9IO1FBQ3RILFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUsb0NBQW9DO2FBQzlDO1NBQ0Y7S0FDRjtJQUNELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixZQUFZLEVBQUUsRUFBRTtRQUNoQixXQUFXLEVBQ1QsOEZBQThGO1FBQ2hHLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUsb0RBQW9EO2FBQzlEO1NBQ0Y7S0FDRjtJQUNELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQ1QsbUZBQW1GO1FBQ3JGLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUsMkJBQTJCO2FBQ3JDO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLGFB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WUFBWSxFQUFFLHdDQUFtQixDQUFDLE1BQU07SUFDeEMsV0FBVyxFQUFFLFlBQVk7SUFDekIsZUFBZSxFQUFFLFNBQVM7SUFDMUIsVUFBVSxFQUFFLFNBQVM7SUFDckIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsY0FBYyxFQUFFLHFDQUFxQztJQUNyRCxTQUFTLEVBQUU7UUFDVDtZQUNFLFVBQVUsRUFBRSxPQUFPO1lBQ25CLFdBQVcsRUFDVCw4RUFBOEU7WUFDaEYsUUFBUSxFQUFFLEtBQUs7U0FDaEI7S0FDRjtDQUNGLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQW9CO0lBQ3BELG1DQUEyQjtDQUM1QixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQVBJIHNjaGVtYXMgZm9yIEF6dXJlIEROUyBab25lIGFjcm9zcyBhbGwgc3VwcG9ydGVkIHZlcnNpb25zXG4gKlxuICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGNvbXBsZXRlIEFQSSBzY2hlbWFzIGZvciBNaWNyb3NvZnQuTmV0d29yay9kbnNab25lc1xuICogYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLiBUaGUgc2NoZW1hcyBhcmUgdXNlZCBieSB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICogZnJhbWV3b3JrIGZvciB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbiwgYW5kIHZlcnNpb24gbWFuYWdlbWVudC5cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgUHJvcGVydHlUeXBlLFxuICBWYWxpZGF0aW9uUnVsZVR5cGUsXG4gIFZlcnNpb25Db25maWcsXG4gIFZlcnNpb25TdXBwb3J0TGV2ZWwsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTU1PTiBQUk9QRVJUWSBERUZJTklUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydHkgZGVmaW5pdGlvbnMgc2hhcmVkIGFjcm9zcyBhbGwgRE5TIFpvbmUgdmVyc2lvbnNcbiAqL1xuY29uc3QgQ09NTU9OX1BST1BFUlRJRVM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEZWZpbml0aW9uIH0gPSB7XG4gIGxvY2F0aW9uOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVmYXVsdFZhbHVlOiBcImdsb2JhbFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgQXp1cmUgcmVnaW9uIHdoZXJlIHRoZSBETlMgWm9uZSB3aWxsIGJlIGNyZWF0ZWQuIEROUyBab25lcyBhcmUgZ2xvYmFsIHJlc291cmNlcywgc28gdGhpcyBpcyB0eXBpY2FsbHkgJ2dsb2JhbCdcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgIG1lc3NhZ2U6IFwiTG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIEROUyBab25lc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB0YWdzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHRWYWx1ZToge30sXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkEgZGljdGlvbmFyeSBvZiB0YWdzIHRvIGFwcGx5IHRvIHRoZSBETlMgWm9uZSBmb3Igb3JnYW5pemF0aW9uYWwsIGJpbGxpbmcsIG9yIG90aGVyIHB1cnBvc2VzXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcIlRhZ3MgbXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBzdHJpbmcga2V5LXZhbHVlIHBhaXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIG5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIG5hbWUgb2YgdGhlIEROUyBab25lICh3aXRob3V0IGEgdGVybWluYXRpbmcgZG90KS4gTXVzdCBiZSBhIHZhbGlkIGRvbWFpbiBuYW1lXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIkROUyBab25lIG5hbWUgaXMgcmVxdWlyZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6XG4gICAgICAgICAgXCJeW2EtekEtWjAtOV0oW2EtekEtWjAtOS1dKlthLXpBLVowLTldKT8oXFxcXC5bYS16QS1aMC05XShbYS16QS1aMC05LV0qW2EtekEtWjAtOV0pPykqJFwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiRE5TIFpvbmUgbmFtZSBtdXN0IGJlIGEgdmFsaWQgZG9tYWluIG5hbWUgd2l0aG91dCB0ZXJtaW5hdGluZyBkb3RcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVkFMVUVfUkFOR0UsXG4gICAgICAgIHZhbHVlOiB7IG1pbkxlbmd0aDogMSwgbWF4TGVuZ3RoOiAyNTMgfSxcbiAgICAgICAgbWVzc2FnZTogXCJETlMgWm9uZSBuYW1lIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTMgY2hhcmFjdGVyc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB6b25lVHlwZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IFwiUHVibGljXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSB0eXBlIG9mIHRoaXMgRE5TIHpvbmUgKFB1YmxpYyBvciBQcml2YXRlKS4gUHVibGljIHpvbmVzIGFyZSBJbnRlcm5ldC1hY2Nlc3NpYmxlXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlBBVFRFUk5fTUFUQ0gsXG4gICAgICAgIHZhbHVlOiBcIl4oUHVibGljfFByaXZhdGUpJFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlpvbmUgdHlwZSBtdXN0IGJlIGVpdGhlciAnUHVibGljJyBvciAnUHJpdmF0ZSdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcmVnaXN0cmF0aW9uVmlydHVhbE5ldHdvcmtzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkEgbGlzdCBvZiByZWZlcmVuY2VzIHRvIHZpcnR1YWwgbmV0d29ya3MgdGhhdCByZWdpc3RlciBob3N0bmFtZXMgaW4gdGhpcyBETlMgem9uZS4gT25seSB2YWxpZCB3aGVuIHpvbmVUeXBlIGlzIFByaXZhdGVcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIlJlZ2lzdHJhdGlvblZpcnR1YWxOZXR3b3JrcyBtdXN0IGJlIGFuIGFycmF5IG9mIHZpcnR1YWwgbmV0d29yayByZWZlcmVuY2VzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHJlc29sdXRpb25WaXJ0dWFsTmV0d29ya3M6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiQSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gdmlydHVhbCBuZXR3b3JrcyB0aGF0IHJlc29sdmUgcmVjb3JkcyBpbiB0aGlzIEROUyB6b25lLiBPbmx5IHZhbGlkIHdoZW4gem9uZVR5cGUgaXMgUHJpdmF0ZVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiUmVzb2x1dGlvblZpcnR1YWxOZXR3b3JrcyBtdXN0IGJlIGFuIGFycmF5IG9mIHZpcnR1YWwgbmV0d29yayByZWZlcmVuY2VzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGlnbm9yZUNoYW5nZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJBcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyB0byBpZ25vcmUgZHVyaW5nIHVwZGF0ZXNcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICAgICAgbWVzc2FnZTogXCJJZ25vcmVDaGFuZ2VzIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZFUlNJT04tU1BFQ0lGSUMgU0NIRU1BU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBUEkgU2NoZW1hIGZvciBETlMgWm9uZSB2ZXJzaW9uIDIwMTgtMDUtMDFcbiAqL1xuZXhwb3J0IGNvbnN0IEROU19aT05FX1NDSEVNQV8yMDE4XzA1XzAxOiBBcGlTY2hlbWEgPSB7XG4gIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuTmV0d29yay9kbnNab25lc1wiLFxuICB2ZXJzaW9uOiBcIjIwMTgtMDUtMDFcIixcbiAgcHJvcGVydGllczoge1xuICAgIC4uLkNPTU1PTl9QUk9QRVJUSUVTLFxuICB9LFxuICByZXF1aXJlZDogW1wibG9jYXRpb25cIiwgXCJuYW1lXCJdLFxuICBvcHRpb25hbDogW1xuICAgIFwidGFnc1wiLFxuICAgIFwiem9uZVR5cGVcIixcbiAgICBcInJlZ2lzdHJhdGlvblZpcnR1YWxOZXR3b3Jrc1wiLFxuICAgIFwicmVzb2x1dGlvblZpcnR1YWxOZXR3b3Jrc1wiLFxuICAgIFwiaWdub3JlQ2hhbmdlc1wiLFxuICBdLFxuICBkZXByZWNhdGVkOiBbXSxcbiAgdHJhbnNmb3JtYXRpb25SdWxlczoge30sXG4gIHZhbGlkYXRpb25SdWxlczogW1xuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcImxvY2F0aW9uXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIkxvY2F0aW9uIGlzIHJlcXVpcmVkIGZvciBETlMgWm9uZXNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJuYW1lXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIk5hbWUgaXMgcmVxdWlyZWQgZm9yIEROUyBab25lc1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZFUlNJT04gQ09ORklHVVJBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVmVyc2lvbiBjb25maWd1cmF0aW9uIGZvciBETlMgWm9uZSAyMDE4LTA1LTAxXG4gKi9cbmV4cG9ydCBjb25zdCBETlNfWk9ORV9WRVJTSU9OXzIwMThfMDVfMDE6IFZlcnNpb25Db25maWcgPSB7XG4gIHZlcnNpb246IFwiMjAxOC0wNS0wMVwiLFxuICBzY2hlbWE6IEROU19aT05FX1NDSEVNQV8yMDE4XzA1XzAxLFxuICBzdXBwb3J0TGV2ZWw6IFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICByZWxlYXNlRGF0ZTogXCIyMDE4LTA1LTAxXCIsXG4gIGRlcHJlY2F0aW9uRGF0ZTogdW5kZWZpbmVkLFxuICBzdW5zZXREYXRlOiB1bmRlZmluZWQsXG4gIGJyZWFraW5nQ2hhbmdlczogW10sXG4gIG1pZ3JhdGlvbkd1aWRlOiBcIi9kb2NzL2Rucy16b25lL21pZ3JhdGlvbi0yMDE4LTA1LTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwiYWRkZWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0YWJsZSByZWxlYXNlIG9mIEROUyBab25lIEFQSSB3aXRoIHN1cHBvcnQgZm9yIHB1YmxpYyBhbmQgcHJpdmF0ZSBETlMgem9uZXNcIixcbiAgICAgIGJyZWFraW5nOiBmYWxzZSxcbiAgICB9LFxuICBdLFxufTtcblxuLyoqXG4gKiBBbGwgc3VwcG9ydGVkIEROUyBab25lIHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9ETlNfWk9ORV9WRVJTSU9OUzogVmVyc2lvbkNvbmZpZ1tdID0gW1xuICBETlNfWk9ORV9WRVJTSU9OXzIwMThfMDVfMDEsXG5dO1xuXG4vKipcbiAqIFJlc291cmNlIHR5cGUgY29uc3RhbnRcbiAqL1xuZXhwb3J0IGNvbnN0IEROU19aT05FX1RZUEUgPSBcIk1pY3Jvc29mdC5OZXR3b3JrL2Ruc1pvbmVzXCI7XG4iXX0=
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Azure DNS Zone implementation using VersionedAzapiResource framework
|
|
3
|
+
*
|
|
4
|
+
* This class provides a single, version-aware implementation that automatically handles
|
|
5
|
+
* version management, schema validation, and property transformation across all
|
|
6
|
+
* supported API versions.
|
|
7
|
+
*
|
|
8
|
+
* Supported API Versions:
|
|
9
|
+
* - 2018-05-01 (Active, Latest)
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Automatic latest version resolution when no version is specified
|
|
13
|
+
* - Explicit version pinning for stability requirements
|
|
14
|
+
* - Schema-driven validation and transformation
|
|
15
|
+
* - Full backward compatibility with existing interface
|
|
16
|
+
* - JSII compliance for multi-language support
|
|
17
|
+
* - Support for both Public and Private DNS zones
|
|
18
|
+
*/
|
|
19
|
+
import * as cdktf from "cdktf";
|
|
20
|
+
import { Construct } from "constructs";
|
|
21
|
+
import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
|
|
22
|
+
import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
|
|
23
|
+
/**
|
|
24
|
+
* Virtual network reference for private DNS zones
|
|
25
|
+
*/
|
|
26
|
+
export interface VirtualNetworkReference {
|
|
27
|
+
/**
|
|
28
|
+
* The resource ID of the virtual network
|
|
29
|
+
*/
|
|
30
|
+
readonly id: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Properties for the unified Azure DNS Zone
|
|
34
|
+
*
|
|
35
|
+
* Extends AzapiResourceProps with DNS Zone specific properties
|
|
36
|
+
*/
|
|
37
|
+
export interface DnsZoneProps extends AzapiResourceProps {
|
|
38
|
+
/**
|
|
39
|
+
* The type of this DNS zone (Public or Private)
|
|
40
|
+
* @default "Public"
|
|
41
|
+
*/
|
|
42
|
+
readonly zoneType?: "Public" | "Private";
|
|
43
|
+
/**
|
|
44
|
+
* A list of references to virtual networks that register hostnames in this DNS zone
|
|
45
|
+
* Only valid when zoneType is Private
|
|
46
|
+
*/
|
|
47
|
+
readonly registrationVirtualNetworks?: VirtualNetworkReference[];
|
|
48
|
+
/**
|
|
49
|
+
* A list of references to virtual networks that resolve records in this DNS zone
|
|
50
|
+
* Only valid when zoneType is Private
|
|
51
|
+
*/
|
|
52
|
+
readonly resolutionVirtualNetworks?: VirtualNetworkReference[];
|
|
53
|
+
/**
|
|
54
|
+
* The lifecycle rules to ignore changes
|
|
55
|
+
* @example ["tags"]
|
|
56
|
+
*/
|
|
57
|
+
readonly ignoreChanges?: string[];
|
|
58
|
+
/**
|
|
59
|
+
* Resource group ID where the DNS Zone will be created
|
|
60
|
+
*/
|
|
61
|
+
readonly resourceGroupId?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The resource body interface for Azure DNS Zone API calls
|
|
65
|
+
* This matches the Azure REST API schema
|
|
66
|
+
*/
|
|
67
|
+
export interface DnsZoneBody {
|
|
68
|
+
readonly location: string;
|
|
69
|
+
readonly tags?: {
|
|
70
|
+
[key: string]: string;
|
|
71
|
+
};
|
|
72
|
+
readonly properties?: {
|
|
73
|
+
[key: string]: any;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Unified Azure DNS Zone implementation
|
|
78
|
+
*
|
|
79
|
+
* This class provides a single, version-aware implementation that replaces all
|
|
80
|
+
* version-specific DNS Zone classes. It automatically handles version
|
|
81
|
+
* resolution, schema validation, and property transformation while maintaining
|
|
82
|
+
* full backward compatibility.
|
|
83
|
+
*
|
|
84
|
+
* Azure DNS Zones are global resources used to host DNS records for a domain.
|
|
85
|
+
* They can be either Public (Internet-accessible) or Private (accessible only
|
|
86
|
+
* from specified virtual networks).
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* // Basic public DNS zone with automatic version resolution:
|
|
90
|
+
* const dnsZone = new DnsZone(this, "dns", {
|
|
91
|
+
* name: "contoso.com",
|
|
92
|
+
* location: "global",
|
|
93
|
+
* resourceGroupId: resourceGroup.id,
|
|
94
|
+
* });
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* // Private DNS zone with virtual network links:
|
|
98
|
+
* const privateDnsZone = new DnsZone(this, "privateDns", {
|
|
99
|
+
* name: "internal.contoso.com",
|
|
100
|
+
* location: "global",
|
|
101
|
+
* resourceGroupId: resourceGroup.id,
|
|
102
|
+
* zoneType: "Private",
|
|
103
|
+
* registrationVirtualNetworks: [{ id: vnet.id }],
|
|
104
|
+
* tags: { environment: "production" }
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* // DNS zone with explicit version pinning:
|
|
109
|
+
* const dnsZone = new DnsZone(this, "dns", {
|
|
110
|
+
* name: "contoso.com",
|
|
111
|
+
* location: "global",
|
|
112
|
+
* resourceGroupId: resourceGroup.id,
|
|
113
|
+
* apiVersion: "2018-05-01",
|
|
114
|
+
* });
|
|
115
|
+
*
|
|
116
|
+
* @stability stable
|
|
117
|
+
*/
|
|
118
|
+
export declare class DnsZone extends AzapiResource {
|
|
119
|
+
readonly props: DnsZoneProps;
|
|
120
|
+
readonly idOutput: cdktf.TerraformOutput;
|
|
121
|
+
readonly locationOutput: cdktf.TerraformOutput;
|
|
122
|
+
readonly nameOutput: cdktf.TerraformOutput;
|
|
123
|
+
readonly tagsOutput: cdktf.TerraformOutput;
|
|
124
|
+
readonly nameServersOutput: cdktf.TerraformOutput;
|
|
125
|
+
/**
|
|
126
|
+
* Creates a new Azure DNS Zone using the VersionedAzapiResource framework
|
|
127
|
+
*
|
|
128
|
+
* @param scope - The scope in which to define this construct
|
|
129
|
+
* @param id - The unique identifier for this instance
|
|
130
|
+
* @param props - Configuration properties for the DNS Zone
|
|
131
|
+
*/
|
|
132
|
+
constructor(scope: Construct, id: string, props: DnsZoneProps);
|
|
133
|
+
/**
|
|
134
|
+
* Gets the default API version to use when no explicit version is specified
|
|
135
|
+
*/
|
|
136
|
+
protected defaultVersion(): string;
|
|
137
|
+
/**
|
|
138
|
+
* Gets the Azure resource type for DNS Zones
|
|
139
|
+
*/
|
|
140
|
+
protected resourceType(): string;
|
|
141
|
+
/**
|
|
142
|
+
* Gets the API schema for the resolved version
|
|
143
|
+
*/
|
|
144
|
+
protected apiSchema(): ApiSchema;
|
|
145
|
+
/**
|
|
146
|
+
* Provides default location for DNS Zones (global resource)
|
|
147
|
+
*/
|
|
148
|
+
protected defaultLocation(): string;
|
|
149
|
+
/**
|
|
150
|
+
* Creates the resource body for the Azure API call
|
|
151
|
+
*/
|
|
152
|
+
protected createResourceBody(props: any): any;
|
|
153
|
+
/**
|
|
154
|
+
* Get the name servers for the DNS Zone
|
|
155
|
+
* These are the Azure DNS name servers that should be configured at your domain registrar
|
|
156
|
+
*/
|
|
157
|
+
get nameServers(): string;
|
|
158
|
+
/**
|
|
159
|
+
* Get the maximum number of record sets that can be created in this DNS zone
|
|
160
|
+
*/
|
|
161
|
+
get maxNumberOfRecordSets(): string;
|
|
162
|
+
/**
|
|
163
|
+
* Get the current number of record sets in this DNS zone
|
|
164
|
+
*/
|
|
165
|
+
get numberOfRecordSets(): string;
|
|
166
|
+
/**
|
|
167
|
+
* Get the zone type (Public or Private)
|
|
168
|
+
*/
|
|
169
|
+
get zoneType(): string;
|
|
170
|
+
/**
|
|
171
|
+
* Add a tag to the DNS Zone
|
|
172
|
+
*/
|
|
173
|
+
addTag(key: string, value: string): void;
|
|
174
|
+
/**
|
|
175
|
+
* Remove a tag from the DNS Zone
|
|
176
|
+
*/
|
|
177
|
+
removeTag(key: string): void;
|
|
178
|
+
/**
|
|
179
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
180
|
+
*/
|
|
181
|
+
private _applyIgnoreChanges;
|
|
182
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DnsZone = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Unified Azure DNS Zone implementation using VersionedAzapiResource framework
|
|
8
|
+
*
|
|
9
|
+
* This class provides a single, version-aware implementation that automatically handles
|
|
10
|
+
* version management, schema validation, and property transformation across all
|
|
11
|
+
* supported API versions.
|
|
12
|
+
*
|
|
13
|
+
* Supported API Versions:
|
|
14
|
+
* - 2018-05-01 (Active, Latest)
|
|
15
|
+
*
|
|
16
|
+
* Features:
|
|
17
|
+
* - Automatic latest version resolution when no version is specified
|
|
18
|
+
* - Explicit version pinning for stability requirements
|
|
19
|
+
* - Schema-driven validation and transformation
|
|
20
|
+
* - Full backward compatibility with existing interface
|
|
21
|
+
* - JSII compliance for multi-language support
|
|
22
|
+
* - Support for both Public and Private DNS zones
|
|
23
|
+
*/
|
|
24
|
+
const cdktf = require("cdktf");
|
|
25
|
+
const dns_zone_schemas_1 = require("./dns-zone-schemas");
|
|
26
|
+
const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
|
|
27
|
+
/**
|
|
28
|
+
* Unified Azure DNS Zone implementation
|
|
29
|
+
*
|
|
30
|
+
* This class provides a single, version-aware implementation that replaces all
|
|
31
|
+
* version-specific DNS Zone classes. It automatically handles version
|
|
32
|
+
* resolution, schema validation, and property transformation while maintaining
|
|
33
|
+
* full backward compatibility.
|
|
34
|
+
*
|
|
35
|
+
* Azure DNS Zones are global resources used to host DNS records for a domain.
|
|
36
|
+
* They can be either Public (Internet-accessible) or Private (accessible only
|
|
37
|
+
* from specified virtual networks).
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // Basic public DNS zone with automatic version resolution:
|
|
41
|
+
* const dnsZone = new DnsZone(this, "dns", {
|
|
42
|
+
* name: "contoso.com",
|
|
43
|
+
* location: "global",
|
|
44
|
+
* resourceGroupId: resourceGroup.id,
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* // Private DNS zone with virtual network links:
|
|
49
|
+
* const privateDnsZone = new DnsZone(this, "privateDns", {
|
|
50
|
+
* name: "internal.contoso.com",
|
|
51
|
+
* location: "global",
|
|
52
|
+
* resourceGroupId: resourceGroup.id,
|
|
53
|
+
* zoneType: "Private",
|
|
54
|
+
* registrationVirtualNetworks: [{ id: vnet.id }],
|
|
55
|
+
* tags: { environment: "production" }
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* // DNS zone with explicit version pinning:
|
|
60
|
+
* const dnsZone = new DnsZone(this, "dns", {
|
|
61
|
+
* name: "contoso.com",
|
|
62
|
+
* location: "global",
|
|
63
|
+
* resourceGroupId: resourceGroup.id,
|
|
64
|
+
* apiVersion: "2018-05-01",
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* @stability stable
|
|
68
|
+
*/
|
|
69
|
+
class DnsZone extends azapi_resource_1.AzapiResource {
|
|
70
|
+
// Public properties
|
|
71
|
+
/**
|
|
72
|
+
* Creates a new Azure DNS Zone using the VersionedAzapiResource framework
|
|
73
|
+
*
|
|
74
|
+
* @param scope - The scope in which to define this construct
|
|
75
|
+
* @param id - The unique identifier for this instance
|
|
76
|
+
* @param props - Configuration properties for the DNS Zone
|
|
77
|
+
*/
|
|
78
|
+
constructor(scope, id, props) {
|
|
79
|
+
super(scope, id, props);
|
|
80
|
+
this.props = props;
|
|
81
|
+
// Extract properties from the AZAPI resource outputs
|
|
82
|
+
// Create Terraform outputs
|
|
83
|
+
this.idOutput = new cdktf.TerraformOutput(this, "id", {
|
|
84
|
+
value: this.id,
|
|
85
|
+
description: "The ID of the DNS Zone",
|
|
86
|
+
});
|
|
87
|
+
this.locationOutput = new cdktf.TerraformOutput(this, "location", {
|
|
88
|
+
value: `\${${this.terraformResource.fqn}.location}`,
|
|
89
|
+
description: "The location of the DNS Zone",
|
|
90
|
+
});
|
|
91
|
+
this.nameOutput = new cdktf.TerraformOutput(this, "name", {
|
|
92
|
+
value: `\${${this.terraformResource.fqn}.name}`,
|
|
93
|
+
description: "The name of the DNS Zone",
|
|
94
|
+
});
|
|
95
|
+
this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
|
|
96
|
+
value: `\${${this.terraformResource.fqn}.tags}`,
|
|
97
|
+
description: "The tags assigned to the DNS Zone",
|
|
98
|
+
});
|
|
99
|
+
this.nameServersOutput = new cdktf.TerraformOutput(this, "name_servers", {
|
|
100
|
+
value: `\${${this.terraformResource.fqn}.output.properties.nameServers}`,
|
|
101
|
+
description: "The name servers for the DNS Zone",
|
|
102
|
+
});
|
|
103
|
+
// Override logical IDs
|
|
104
|
+
this.idOutput.overrideLogicalId("id");
|
|
105
|
+
this.locationOutput.overrideLogicalId("location");
|
|
106
|
+
this.nameOutput.overrideLogicalId("name");
|
|
107
|
+
this.tagsOutput.overrideLogicalId("tags");
|
|
108
|
+
this.nameServersOutput.overrideLogicalId("name_servers");
|
|
109
|
+
// Apply ignore changes if specified
|
|
110
|
+
this._applyIgnoreChanges();
|
|
111
|
+
}
|
|
112
|
+
// =============================================================================
|
|
113
|
+
// REQUIRED ABSTRACT METHODS FROM AzapiResource
|
|
114
|
+
// =============================================================================
|
|
115
|
+
/**
|
|
116
|
+
* Gets the default API version to use when no explicit version is specified
|
|
117
|
+
*/
|
|
118
|
+
defaultVersion() {
|
|
119
|
+
return "2018-05-01";
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Gets the Azure resource type for DNS Zones
|
|
123
|
+
*/
|
|
124
|
+
resourceType() {
|
|
125
|
+
return dns_zone_schemas_1.DNS_ZONE_TYPE;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Gets the API schema for the resolved version
|
|
129
|
+
*/
|
|
130
|
+
apiSchema() {
|
|
131
|
+
return this.resolveSchema();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Provides default location for DNS Zones (global resource)
|
|
135
|
+
*/
|
|
136
|
+
defaultLocation() {
|
|
137
|
+
return "global";
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Creates the resource body for the Azure API call
|
|
141
|
+
*/
|
|
142
|
+
createResourceBody(props) {
|
|
143
|
+
const typedProps = props;
|
|
144
|
+
const body = {
|
|
145
|
+
location: this.location,
|
|
146
|
+
// Tags are passed separately to createAzapiResource() for proper idempotency
|
|
147
|
+
// Do not include tags in the body
|
|
148
|
+
};
|
|
149
|
+
// Add properties object if zone type or virtual networks are specified
|
|
150
|
+
if (typedProps.zoneType ||
|
|
151
|
+
typedProps.registrationVirtualNetworks ||
|
|
152
|
+
typedProps.resolutionVirtualNetworks) {
|
|
153
|
+
body.properties = {
|
|
154
|
+
zoneType: typedProps.zoneType || "Public",
|
|
155
|
+
registrationVirtualNetworks: typedProps.registrationVirtualNetworks,
|
|
156
|
+
resolutionVirtualNetworks: typedProps.resolutionVirtualNetworks,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return body;
|
|
160
|
+
}
|
|
161
|
+
// =============================================================================
|
|
162
|
+
// PUBLIC METHODS FOR DNS ZONE OPERATIONS
|
|
163
|
+
// =============================================================================
|
|
164
|
+
/**
|
|
165
|
+
* Get the name servers for the DNS Zone
|
|
166
|
+
* These are the Azure DNS name servers that should be configured at your domain registrar
|
|
167
|
+
*/
|
|
168
|
+
get nameServers() {
|
|
169
|
+
return `\${${this.terraformResource.fqn}.output.properties.nameServers}`;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get the maximum number of record sets that can be created in this DNS zone
|
|
173
|
+
*/
|
|
174
|
+
get maxNumberOfRecordSets() {
|
|
175
|
+
return `\${${this.terraformResource.fqn}.output.properties.maxNumberOfRecordSets}`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Get the current number of record sets in this DNS zone
|
|
179
|
+
*/
|
|
180
|
+
get numberOfRecordSets() {
|
|
181
|
+
return `\${${this.terraformResource.fqn}.output.properties.numberOfRecordSets}`;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get the zone type (Public or Private)
|
|
185
|
+
*/
|
|
186
|
+
get zoneType() {
|
|
187
|
+
return this.props.zoneType || "Public";
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Add a tag to the DNS Zone
|
|
191
|
+
*/
|
|
192
|
+
addTag(key, value) {
|
|
193
|
+
if (!this.props.tags) {
|
|
194
|
+
this.props.tags = {};
|
|
195
|
+
}
|
|
196
|
+
this.props.tags[key] = value;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Remove a tag from the DNS Zone
|
|
200
|
+
*/
|
|
201
|
+
removeTag(key) {
|
|
202
|
+
if (this.props.tags && this.props.tags[key]) {
|
|
203
|
+
delete this.props.tags[key];
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// =============================================================================
|
|
207
|
+
// PRIVATE HELPER METHODS
|
|
208
|
+
// =============================================================================
|
|
209
|
+
/**
|
|
210
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
211
|
+
*/
|
|
212
|
+
_applyIgnoreChanges() {
|
|
213
|
+
if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
|
|
214
|
+
this.terraformResource.addOverride("lifecycle", [
|
|
215
|
+
{
|
|
216
|
+
ignore_changes: this.props.ignoreChanges,
|
|
217
|
+
},
|
|
218
|
+
]);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.DnsZone = DnsZone;
|
|
223
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
224
|
+
DnsZone[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsZone", version: "1.3.0" };
|
|
225
|
+
(() => {
|
|
226
|
+
azapi_resource_1.AzapiResource.registerSchemas(dns_zone_schemas_1.DNS_ZONE_TYPE, dns_zone_schemas_1.ALL_DNS_ZONE_VERSIONS);
|
|
227
|
+
})();
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtZG5zem9uZS9saWIvZG5zLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSCwrQkFBK0I7QUFFL0IseURBQTBFO0FBQzFFLDhFQUdtRDtBQTJEbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsOEJBQWE7SUFjeEMsb0JBQW9CO0lBRXBCOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIscURBQXFEO1FBRXJELDJCQUEyQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3BELEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNkLFdBQVcsRUFBRSx3QkFBd0I7U0FDdEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxZQUFZO1lBQ25ELFdBQVcsRUFBRSw4QkFBOEI7U0FDNUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN4RCxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRO1lBQy9DLFdBQVcsRUFBRSwwQkFBMEI7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN4RCxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRO1lBQy9DLFdBQVcsRUFBRSxtQ0FBbUM7U0FDakQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3ZFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGlDQUFpQztZQUN4RSxXQUFXLEVBQUUsbUNBQW1DO1NBQ2pELENBQUMsQ0FBQztRQUVILHVCQUF1QjtRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV6RCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGdGQUFnRjtJQUNoRiwrQ0FBK0M7SUFDL0MsZ0ZBQWdGO0lBRWhGOztPQUVHO0lBQ08sY0FBYztRQUN0QixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxZQUFZO1FBQ3BCLE9BQU8sZ0NBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNPLGVBQWU7UUFDdkIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ08sa0JBQWtCLENBQUMsS0FBVTtRQUNyQyxNQUFNLFVBQVUsR0FBRyxLQUFxQixDQUFDO1FBRXpDLE1BQU0sSUFBSSxHQUFRO1lBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUztZQUN4Qiw2RUFBNkU7WUFDN0Usa0NBQWtDO1NBQ25DLENBQUM7UUFFRix1RUFBdUU7UUFDdkUsSUFDRSxVQUFVLENBQUMsUUFBUTtZQUNuQixVQUFVLENBQUMsMkJBQTJCO1lBQ3RDLFVBQVUsQ0FBQyx5QkFBeUIsRUFDcEMsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEdBQUc7Z0JBQ2hCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUSxJQUFJLFFBQVE7Z0JBQ3pDLDJCQUEyQixFQUFFLFVBQVUsQ0FBQywyQkFBMkI7Z0JBQ25FLHlCQUF5QixFQUFFLFVBQVUsQ0FBQyx5QkFBeUI7YUFDaEUsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYseUNBQXlDO0lBQ3pDLGdGQUFnRjtJQUVoRjs7O09BR0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGlDQUFpQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcscUJBQXFCO1FBQzlCLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRywyQ0FBMkMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsd0NBQXdDLENBQUM7SUFDbEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsR0FBVztRQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELGdGQUFnRjtJQUNoRix5QkFBeUI7SUFDekIsZ0ZBQWdGO0lBRWhGOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUM5QztvQkFDRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2lCQUN6QzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWxNSCwwQkFtTUM7OztBQWxNQztJQUNFLDhCQUFhLENBQUMsZUFBZSxDQUFDLGdDQUFhLEVBQUUsd0NBQXFCLENBQUMsQ0FBQztBQUN0RSxDQUFDLEdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5pZmllZCBBenVyZSBETlMgWm9uZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBWZXJzaW9uZWRBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW5nbGUsIHZlcnNpb24tYXdhcmUgaW1wbGVtZW50YXRpb24gdGhhdCBhdXRvbWF0aWNhbGx5IGhhbmRsZXNcbiAqIHZlcnNpb24gbWFuYWdlbWVudCwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBhY3Jvc3MgYWxsXG4gKiBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLlxuICpcbiAqIFN1cHBvcnRlZCBBUEkgVmVyc2lvbnM6XG4gKiAtIDIwMTgtMDUtMDEgKEFjdGl2ZSwgTGF0ZXN0KVxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBBdXRvbWF0aWMgbGF0ZXN0IHZlcnNpb24gcmVzb2x1dGlvbiB3aGVuIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gKiAtIEV4cGxpY2l0IHZlcnNpb24gcGlubmluZyBmb3Igc3RhYmlsaXR5IHJlcXVpcmVtZW50c1xuICogLSBTY2hlbWEtZHJpdmVuIHZhbGlkYXRpb24gYW5kIHRyYW5zZm9ybWF0aW9uXG4gKiAtIEZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGludGVyZmFjZVxuICogLSBKU0lJIGNvbXBsaWFuY2UgZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqIC0gU3VwcG9ydCBmb3IgYm90aCBQdWJsaWMgYW5kIFByaXZhdGUgRE5TIHpvbmVzXG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQUxMX0ROU19aT05FX1ZFUlNJT05TLCBETlNfWk9ORV9UWVBFIH0gZnJvbSBcIi4vZG5zLXpvbmUtc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgQXphcGlSZXNvdXJjZSxcbiAgQXphcGlSZXNvdXJjZVByb3BzLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmltcG9ydCB7IEFwaVNjaGVtYSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLyoqXG4gKiBWaXJ0dWFsIG5ldHdvcmsgcmVmZXJlbmNlIGZvciBwcml2YXRlIEROUyB6b25lc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBJRCBvZiB0aGUgdmlydHVhbCBuZXR3b3JrXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSB1bmlmaWVkIEF6dXJlIEROUyBab25lXG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBETlMgWm9uZSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG5zWm9uZVByb3BzIGV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoaXMgRE5TIHpvbmUgKFB1YmxpYyBvciBQcml2YXRlKVxuICAgKiBAZGVmYXVsdCBcIlB1YmxpY1wiXG4gICAqL1xuICByZWFkb25seSB6b25lVHlwZT86IFwiUHVibGljXCIgfCBcIlByaXZhdGVcIjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gdmlydHVhbCBuZXR3b3JrcyB0aGF0IHJlZ2lzdGVyIGhvc3RuYW1lcyBpbiB0aGlzIEROUyB6b25lXG4gICAqIE9ubHkgdmFsaWQgd2hlbiB6b25lVHlwZSBpcyBQcml2YXRlXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyYXRpb25WaXJ0dWFsTmV0d29ya3M/OiBWaXJ0dWFsTmV0d29ya1JlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcmVmZXJlbmNlcyB0byB2aXJ0dWFsIG5ldHdvcmtzIHRoYXQgcmVzb2x2ZSByZWNvcmRzIGluIHRoaXMgRE5TIHpvbmVcbiAgICogT25seSB2YWxpZCB3aGVuIHpvbmVUeXBlIGlzIFByaXZhdGVcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdXRpb25WaXJ0dWFsTmV0d29ya3M/OiBWaXJ0dWFsTmV0d29ya1JlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIEBleGFtcGxlIFtcInRhZ3NcIl1cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVzb3VyY2UgZ3JvdXAgSUQgd2hlcmUgdGhlIEROUyBab25lIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSByZXNvdXJjZSBib2R5IGludGVyZmFjZSBmb3IgQXp1cmUgRE5TIFpvbmUgQVBJIGNhbGxzXG4gKiBUaGlzIG1hdGNoZXMgdGhlIEF6dXJlIFJFU1QgQVBJIHNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERuc1pvbmVCb2R5IHtcbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFVuaWZpZWQgQXp1cmUgRE5TIFpvbmUgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2luZ2xlLCB2ZXJzaW9uLWF3YXJlIGltcGxlbWVudGF0aW9uIHRoYXQgcmVwbGFjZXMgYWxsXG4gKiB2ZXJzaW9uLXNwZWNpZmljIEROUyBab25lIGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogQXp1cmUgRE5TIFpvbmVzIGFyZSBnbG9iYWwgcmVzb3VyY2VzIHVzZWQgdG8gaG9zdCBETlMgcmVjb3JkcyBmb3IgYSBkb21haW4uXG4gKiBUaGV5IGNhbiBiZSBlaXRoZXIgUHVibGljIChJbnRlcm5ldC1hY2Nlc3NpYmxlKSBvciBQcml2YXRlIChhY2Nlc3NpYmxlIG9ubHlcbiAqIGZyb20gc3BlY2lmaWVkIHZpcnR1YWwgbmV0d29ya3MpLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyBwdWJsaWMgRE5TIHpvbmUgd2l0aCBhdXRvbWF0aWMgdmVyc2lvbiByZXNvbHV0aW9uOlxuICogY29uc3QgZG5zWm9uZSA9IG5ldyBEbnNab25lKHRoaXMsIFwiZG5zXCIsIHtcbiAqICAgbmFtZTogXCJjb250b3NvLmNvbVwiLFxuICogICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFByaXZhdGUgRE5TIHpvbmUgd2l0aCB2aXJ0dWFsIG5ldHdvcmsgbGlua3M6XG4gKiBjb25zdCBwcml2YXRlRG5zWm9uZSA9IG5ldyBEbnNab25lKHRoaXMsIFwicHJpdmF0ZURuc1wiLCB7XG4gKiAgIG5hbWU6IFwiaW50ZXJuYWwuY29udG9zby5jb21cIixcbiAqICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgem9uZVR5cGU6IFwiUHJpdmF0ZVwiLFxuICogICByZWdpc3RyYXRpb25WaXJ0dWFsTmV0d29ya3M6IFt7IGlkOiB2bmV0LmlkIH1dLFxuICogICB0YWdzOiB7IGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIiB9XG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRE5TIHpvbmUgd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmc6XG4gKiBjb25zdCBkbnNab25lID0gbmV3IERuc1pvbmUodGhpcywgXCJkbnNcIiwge1xuICogICBuYW1lOiBcImNvbnRvc28uY29tXCIsXG4gKiAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGFwaVZlcnNpb246IFwiMjAxOC0wNS0wMVwiLFxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIERuc1pvbmUgZXh0ZW5kcyBBemFwaVJlc291cmNlIHtcbiAgc3RhdGljIHtcbiAgICBBemFwaVJlc291cmNlLnJlZ2lzdGVyU2NoZW1hcyhETlNfWk9ORV9UWVBFLCBBTExfRE5TX1pPTkVfVkVSU0lPTlMpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBEbnNab25lUHJvcHM7XG5cbiAgLy8gT3V0cHV0IHByb3BlcnRpZXMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZ1xuICBwdWJsaWMgcmVhZG9ubHkgaWRPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2F0aW9uT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSB0YWdzT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lU2VydmVyc091dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8vIFB1YmxpYyBwcm9wZXJ0aWVzXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgRE5TIFpvbmUgdXNpbmcgdGhlIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIEROUyBab25lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRG5zWm9uZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBFeHRyYWN0IHByb3BlcnRpZXMgZnJvbSB0aGUgQVpBUEkgcmVzb3VyY2Ugb3V0cHV0c1xuXG4gICAgLy8gQ3JlYXRlIFRlcnJhZm9ybSBvdXRwdXRzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgRE5TIFpvbmVcIixcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25PdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibG9jYXRpb25cIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubG9jYXRpb259YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsb2NhdGlvbiBvZiB0aGUgRE5TIFpvbmVcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZU91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm5hbWV9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBuYW1lIG9mIHRoZSBETlMgWm9uZVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWdzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcInRhZ3NcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0udGFnc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHRhZ3MgYXNzaWduZWQgdG8gdGhlIEROUyBab25lXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVTZXJ2ZXJzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcIm5hbWVfc2VydmVyc1wiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5uYW1lU2VydmVyc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIG5hbWUgc2VydmVycyBmb3IgdGhlIEROUyBab25lXCIsXG4gICAgfSk7XG5cbiAgICAvLyBPdmVycmlkZSBsb2dpY2FsIElEc1xuICAgIHRoaXMuaWRPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJpZFwiKTtcbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9jYXRpb25cIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLnRhZ3NPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJ0YWdzXCIpO1xuICAgIHRoaXMubmFtZVNlcnZlcnNPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJuYW1lX3NlcnZlcnNcIik7XG5cbiAgICAvLyBBcHBseSBpZ25vcmUgY2hhbmdlcyBpZiBzcGVjaWZpZWRcbiAgICB0aGlzLl9hcHBseUlnbm9yZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFJFUVVJUkVEIEFCU1RSQUNUIE1FVEhPRFMgRlJPTSBBemFwaVJlc291cmNlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlZmF1bHQgQVBJIHZlcnNpb24gdG8gdXNlIHdoZW4gbm8gZXhwbGljaXQgdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0VmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIjIwMTgtMDUtMDFcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlIGZvciBETlMgWm9uZXNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRE5TX1pPTkVfVFlQRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBUEkgc2NoZW1hIGZvciB0aGUgcmVzb2x2ZWQgdmVyc2lvblxuICAgKi9cbiAgcHJvdGVjdGVkIGFwaVNjaGVtYSgpOiBBcGlTY2hlbWEge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTY2hlbWEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBkZWZhdWx0IGxvY2F0aW9uIGZvciBETlMgWm9uZXMgKGdsb2JhbCByZXNvdXJjZSlcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0TG9jYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJnbG9iYWxcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSByZXNvdXJjZSBib2R5IGZvciB0aGUgQXp1cmUgQVBJIGNhbGxcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIERuc1pvbmVQcm9wcztcblxuICAgIGNvbnN0IGJvZHk6IGFueSA9IHtcbiAgICAgIGxvY2F0aW9uOiB0aGlzLmxvY2F0aW9uISxcbiAgICAgIC8vIFRhZ3MgYXJlIHBhc3NlZCBzZXBhcmF0ZWx5IHRvIGNyZWF0ZUF6YXBpUmVzb3VyY2UoKSBmb3IgcHJvcGVyIGlkZW1wb3RlbmN5XG4gICAgICAvLyBEbyBub3QgaW5jbHVkZSB0YWdzIGluIHRoZSBib2R5XG4gICAgfTtcblxuICAgIC8vIEFkZCBwcm9wZXJ0aWVzIG9iamVjdCBpZiB6b25lIHR5cGUgb3IgdmlydHVhbCBuZXR3b3JrcyBhcmUgc3BlY2lmaWVkXG4gICAgaWYgKFxuICAgICAgdHlwZWRQcm9wcy56b25lVHlwZSB8fFxuICAgICAgdHlwZWRQcm9wcy5yZWdpc3RyYXRpb25WaXJ0dWFsTmV0d29ya3MgfHxcbiAgICAgIHR5cGVkUHJvcHMucmVzb2x1dGlvblZpcnR1YWxOZXR3b3Jrc1xuICAgICkge1xuICAgICAgYm9keS5wcm9wZXJ0aWVzID0ge1xuICAgICAgICB6b25lVHlwZTogdHlwZWRQcm9wcy56b25lVHlwZSB8fCBcIlB1YmxpY1wiLFxuICAgICAgICByZWdpc3RyYXRpb25WaXJ0dWFsTmV0d29ya3M6IHR5cGVkUHJvcHMucmVnaXN0cmF0aW9uVmlydHVhbE5ldHdvcmtzLFxuICAgICAgICByZXNvbHV0aW9uVmlydHVhbE5ldHdvcmtzOiB0eXBlZFByb3BzLnJlc29sdXRpb25WaXJ0dWFsTmV0d29ya3MsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFVCTElDIE1FVEhPRFMgRk9SIEROUyBaT05FIE9QRVJBVElPTlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IHRoZSBuYW1lIHNlcnZlcnMgZm9yIHRoZSBETlMgWm9uZVxuICAgKiBUaGVzZSBhcmUgdGhlIEF6dXJlIEROUyBuYW1lIHNlcnZlcnMgdGhhdCBzaG91bGQgYmUgY29uZmlndXJlZCBhdCB5b3VyIGRvbWFpbiByZWdpc3RyYXJcbiAgICovXG4gIHB1YmxpYyBnZXQgbmFtZVNlcnZlcnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5uYW1lU2VydmVyc31gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkIHNldHMgdGhhdCBjYW4gYmUgY3JlYXRlZCBpbiB0aGlzIEROUyB6b25lXG4gICAqL1xuICBwdWJsaWMgZ2V0IG1heE51bWJlck9mUmVjb3JkU2V0cygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLm1heE51bWJlck9mUmVjb3JkU2V0c31gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBudW1iZXIgb2YgcmVjb3JkIHNldHMgaW4gdGhpcyBETlMgem9uZVxuICAgKi9cbiAgcHVibGljIGdldCBudW1iZXJPZlJlY29yZFNldHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5udW1iZXJPZlJlY29yZFNldHN9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHpvbmUgdHlwZSAoUHVibGljIG9yIFByaXZhdGUpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHpvbmVUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuem9uZVR5cGUgfHwgXCJQdWJsaWNcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YWcgdG8gdGhlIEROUyBab25lXG4gICAqL1xuICBwdWJsaWMgYWRkVGFnKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnRhZ3MpIHtcbiAgICAgICh0aGlzLnByb3BzIGFzIGFueSkudGFncyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3BzLnRhZ3MhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0YWcgZnJvbSB0aGUgRE5TIFpvbmVcbiAgICovXG4gIHB1YmxpYyByZW1vdmVUYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50YWdzICYmIHRoaXMucHJvcHMudGFnc1trZXldKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9wcy50YWdzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVIgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlcyBpZiBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|