@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,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API schemas for Azure Role Assignment across all supported versions
|
|
3
|
+
*
|
|
4
|
+
* This file defines the complete API schemas for Microsoft.Authorization/roleAssignments
|
|
5
|
+
* across all supported API versions. The schemas are used by the VersionedAzapiResource
|
|
6
|
+
* framework for validation, transformation, and version management.
|
|
7
|
+
*/
|
|
8
|
+
import { ApiSchema, VersionConfig } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
|
|
9
|
+
/**
|
|
10
|
+
* API Schema for Role Assignment version 2022-04-01
|
|
11
|
+
* This is the latest stable API version for role assignments
|
|
12
|
+
*/
|
|
13
|
+
export declare const ROLE_ASSIGNMENT_SCHEMA_2022_04_01: ApiSchema;
|
|
14
|
+
/**
|
|
15
|
+
* Version configuration for Role Assignment 2022-04-01
|
|
16
|
+
*/
|
|
17
|
+
export declare const ROLE_ASSIGNMENT_VERSION_2022_04_01: VersionConfig;
|
|
18
|
+
/**
|
|
19
|
+
* All supported Role Assignment versions for registration
|
|
20
|
+
*/
|
|
21
|
+
export declare const ALL_ROLE_ASSIGNMENT_VERSIONS: VersionConfig[];
|
|
22
|
+
/**
|
|
23
|
+
* Resource type constant
|
|
24
|
+
*/
|
|
25
|
+
export declare const ROLE_ASSIGNMENT_TYPE = "Microsoft.Authorization/roleAssignments";
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* API schemas for Azure Role Assignment across all supported versions
|
|
4
|
+
*
|
|
5
|
+
* This file defines the complete API schemas for Microsoft.Authorization/roleAssignments
|
|
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.ROLE_ASSIGNMENT_TYPE = exports.ALL_ROLE_ASSIGNMENT_VERSIONS = exports.ROLE_ASSIGNMENT_VERSION_2022_04_01 = exports.ROLE_ASSIGNMENT_SCHEMA_2022_04_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 Role Assignment versions
|
|
17
|
+
*/
|
|
18
|
+
const COMMON_PROPERTIES = {
|
|
19
|
+
name: {
|
|
20
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
21
|
+
required: false,
|
|
22
|
+
description: "The name of the role assignment resource. Automatically generated as a GUID by Terraform's guid() function",
|
|
23
|
+
validation: [
|
|
24
|
+
// Note: No pattern validation here because the name will be a Terraform function
|
|
25
|
+
// guid() that gets evaluated at apply time, not synthesis time.
|
|
26
|
+
// Azure will validate the final GUID format when the resource is created.
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
roleDefinitionId: {
|
|
30
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
31
|
+
required: true,
|
|
32
|
+
description: "The role definition ID to assign. This can be a built-in or custom role definition",
|
|
33
|
+
validation: [
|
|
34
|
+
{
|
|
35
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
36
|
+
message: "Role definition ID is required for role assignments",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
40
|
+
value: version_interfaces_1.PropertyType.STRING,
|
|
41
|
+
message: "Role definition ID must be a string",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
principalId: {
|
|
46
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
47
|
+
required: true,
|
|
48
|
+
description: "The principal ID (object ID) to which the role is assigned. This can be a user, group, service principal, or managed identity",
|
|
49
|
+
validation: [
|
|
50
|
+
{
|
|
51
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
52
|
+
message: "Principal ID is required for role assignments",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
56
|
+
value: version_interfaces_1.PropertyType.STRING,
|
|
57
|
+
message: "Principal ID must be a string",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
scope: {
|
|
62
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
63
|
+
required: true,
|
|
64
|
+
description: "The scope at which the role assignment is applied (subscription, resource group, or resource)",
|
|
65
|
+
validation: [
|
|
66
|
+
{
|
|
67
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
68
|
+
message: "Scope is required for role assignments",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
72
|
+
value: version_interfaces_1.PropertyType.STRING,
|
|
73
|
+
message: "Scope must be a string",
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
principalType: {
|
|
78
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
79
|
+
required: false,
|
|
80
|
+
description: "The type of principal. Valid values: User, Group, ServicePrincipal, ForeignGroup, Device",
|
|
81
|
+
validation: [
|
|
82
|
+
{
|
|
83
|
+
ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
|
|
84
|
+
value: "^(User|Group|ServicePrincipal|ForeignGroup|Device)$",
|
|
85
|
+
message: "Principal type must be one of: User, Group, ServicePrincipal, ForeignGroup, Device",
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
description: {
|
|
90
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
91
|
+
required: false,
|
|
92
|
+
description: "The role assignment description. Provides detailed information about the assignment",
|
|
93
|
+
validation: [
|
|
94
|
+
{
|
|
95
|
+
ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
|
|
96
|
+
value: { minLength: 0, maxLength: 512 },
|
|
97
|
+
message: "Description must not exceed 512 characters",
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
condition: {
|
|
102
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
103
|
+
required: false,
|
|
104
|
+
description: "The conditions on the role assignment. This limits the resources it applies to using ABAC expressions",
|
|
105
|
+
validation: [
|
|
106
|
+
{
|
|
107
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
108
|
+
value: version_interfaces_1.PropertyType.STRING,
|
|
109
|
+
message: "Condition must be a string",
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
conditionVersion: {
|
|
114
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
115
|
+
required: false,
|
|
116
|
+
description: "Version of the condition syntax. Current supported version is 2.0",
|
|
117
|
+
validation: [
|
|
118
|
+
{
|
|
119
|
+
ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
|
|
120
|
+
value: "^2\\.0$",
|
|
121
|
+
message: "Condition version must be 2.0",
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
delegatedManagedIdentityResourceId: {
|
|
126
|
+
dataType: version_interfaces_1.PropertyType.STRING,
|
|
127
|
+
required: false,
|
|
128
|
+
description: "The delegated Azure Resource Id which contains a Managed Identity. Applicable only when the principalType is Group",
|
|
129
|
+
validation: [
|
|
130
|
+
{
|
|
131
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
132
|
+
value: version_interfaces_1.PropertyType.STRING,
|
|
133
|
+
message: "Delegated managed identity resource ID must be a string",
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
ignoreChanges: {
|
|
138
|
+
dataType: version_interfaces_1.PropertyType.ARRAY,
|
|
139
|
+
required: false,
|
|
140
|
+
description: "Array of property names to ignore during updates",
|
|
141
|
+
validation: [
|
|
142
|
+
{
|
|
143
|
+
ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
|
|
144
|
+
value: version_interfaces_1.PropertyType.ARRAY,
|
|
145
|
+
message: "IgnoreChanges must be an array of strings",
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
// =============================================================================
|
|
151
|
+
// VERSION-SPECIFIC SCHEMAS
|
|
152
|
+
// =============================================================================
|
|
153
|
+
/**
|
|
154
|
+
* API Schema for Role Assignment version 2022-04-01
|
|
155
|
+
* This is the latest stable API version for role assignments
|
|
156
|
+
*/
|
|
157
|
+
exports.ROLE_ASSIGNMENT_SCHEMA_2022_04_01 = {
|
|
158
|
+
resourceType: "Microsoft.Authorization/roleAssignments",
|
|
159
|
+
version: "2022-04-01",
|
|
160
|
+
properties: {
|
|
161
|
+
...COMMON_PROPERTIES,
|
|
162
|
+
},
|
|
163
|
+
required: ["roleDefinitionId", "principalId", "scope"],
|
|
164
|
+
optional: [
|
|
165
|
+
"name",
|
|
166
|
+
"principalType",
|
|
167
|
+
"description",
|
|
168
|
+
"condition",
|
|
169
|
+
"conditionVersion",
|
|
170
|
+
"delegatedManagedIdentityResourceId",
|
|
171
|
+
"ignoreChanges",
|
|
172
|
+
],
|
|
173
|
+
deprecated: [],
|
|
174
|
+
transformationRules: {},
|
|
175
|
+
validationRules: [
|
|
176
|
+
{
|
|
177
|
+
property: "roleDefinitionId",
|
|
178
|
+
rules: [
|
|
179
|
+
{
|
|
180
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
181
|
+
message: "Role definition ID is required for role assignments",
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
property: "principalId",
|
|
187
|
+
rules: [
|
|
188
|
+
{
|
|
189
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
190
|
+
message: "Principal ID is required for role assignments",
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
property: "scope",
|
|
196
|
+
rules: [
|
|
197
|
+
{
|
|
198
|
+
ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
|
|
199
|
+
message: "Scope is required for role assignments",
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
};
|
|
205
|
+
// =============================================================================
|
|
206
|
+
// VERSION CONFIGURATIONS
|
|
207
|
+
// =============================================================================
|
|
208
|
+
/**
|
|
209
|
+
* Version configuration for Role Assignment 2022-04-01
|
|
210
|
+
*/
|
|
211
|
+
exports.ROLE_ASSIGNMENT_VERSION_2022_04_01 = {
|
|
212
|
+
version: "2022-04-01",
|
|
213
|
+
schema: exports.ROLE_ASSIGNMENT_SCHEMA_2022_04_01,
|
|
214
|
+
supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
|
|
215
|
+
releaseDate: "2022-04-01",
|
|
216
|
+
deprecationDate: undefined,
|
|
217
|
+
sunsetDate: undefined,
|
|
218
|
+
breakingChanges: [],
|
|
219
|
+
migrationGuide: "/docs/role-assignment/migration-2022-04-01",
|
|
220
|
+
changeLog: [
|
|
221
|
+
{
|
|
222
|
+
changeType: "added",
|
|
223
|
+
description: "Stable release of Role Assignment API with full support for RBAC role assignments, conditional assignments (ABAC), and delegated managed identities",
|
|
224
|
+
breaking: false,
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* All supported Role Assignment versions for registration
|
|
230
|
+
*/
|
|
231
|
+
exports.ALL_ROLE_ASSIGNMENT_VERSIONS = [
|
|
232
|
+
exports.ROLE_ASSIGNMENT_VERSION_2022_04_01,
|
|
233
|
+
];
|
|
234
|
+
/**
|
|
235
|
+
* Resource type constant
|
|
236
|
+
*/
|
|
237
|
+
exports.ROLE_ASSIGNMENT_TYPE = "Microsoft.Authorization/roleAssignments";
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1hc3NpZ25tZW50LXNjaGVtYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcm9sZWFzc2lnbm1lbnQvbGliL3JvbGUtYXNzaWdubWVudC1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1QsNEdBQTRHO1FBQzlHLFVBQVUsRUFBRTtRQUNWLGlGQUFpRjtRQUNqRixnRUFBZ0U7UUFDaEUsMEVBQTBFO1NBQzNFO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsV0FBVyxFQUNULG9GQUFvRjtRQUN0RixVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtnQkFDckMsT0FBTyxFQUFFLHFEQUFxRDthQUMvRDtZQUNEO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUscUNBQXFDO2FBQy9DO1NBQ0Y7S0FDRjtJQUNELFdBQVcsRUFBRTtRQUNYLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQ1QsK0hBQStIO1FBQ2pJLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUsK0NBQStDO2FBQ3pEO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFVBQVU7Z0JBQ3ZDLEtBQUssRUFBRSxpQ0FBWSxDQUFDLE1BQU07Z0JBQzFCLE9BQU8sRUFBRSwrQkFBK0I7YUFDekM7U0FDRjtLQUNGO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsUUFBUSxFQUFFLGlDQUFZLENBQUMsTUFBTTtRQUM3QixRQUFRLEVBQUUsSUFBSTtRQUNkLFdBQVcsRUFDVCwrRkFBK0Y7UUFDakcsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFFBQVE7Z0JBQ3JDLE9BQU8sRUFBRSx3Q0FBd0M7YUFDbEQ7WUFDRDtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsVUFBVTtnQkFDdkMsS0FBSyxFQUFFLGlDQUFZLENBQUMsTUFBTTtnQkFDMUIsT0FBTyxFQUFFLHdCQUF3QjthQUNsQztTQUNGO0tBQ0Y7SUFDRCxhQUFhLEVBQUU7UUFDYixRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsV0FBVyxFQUNULDBGQUEwRjtRQUM1RixVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsYUFBYTtnQkFDMUMsS0FBSyxFQUFFLHFEQUFxRDtnQkFDNUQsT0FBTyxFQUNMLG9GQUFvRjthQUN2RjtTQUNGO0tBQ0Y7SUFDRCxXQUFXLEVBQUU7UUFDWCxRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsV0FBVyxFQUNULHFGQUFxRjtRQUN2RixVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsV0FBVztnQkFDeEMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUN2QyxPQUFPLEVBQUUsNENBQTRDO2FBQ3REO1NBQ0Y7S0FDRjtJQUNELFNBQVMsRUFBRTtRQUNULFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1QsdUdBQXVHO1FBQ3pHLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUsNEJBQTRCO2FBQ3RDO1NBQ0Y7S0FDRjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1QsbUVBQW1FO1FBQ3JFLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxhQUFhO2dCQUMxQyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsT0FBTyxFQUFFLCtCQUErQjthQUN6QztTQUNGO0tBQ0Y7SUFDRCxrQ0FBa0MsRUFBRTtRQUNsQyxRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsV0FBVyxFQUNULG9IQUFvSDtRQUN0SCxVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsVUFBVTtnQkFDdkMsS0FBSyxFQUFFLGlDQUFZLENBQUMsTUFBTTtnQkFDMUIsT0FBTyxFQUFFLHlEQUF5RDthQUNuRTtTQUNGO0tBQ0Y7SUFDRCxhQUFhLEVBQUU7UUFDYixRQUFRLEVBQUUsaUNBQVksQ0FBQyxLQUFLO1FBQzVCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsV0FBVyxFQUFFLGtEQUFrRDtRQUMvRCxVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsVUFBVTtnQkFDdkMsS0FBSyxFQUFFLGlDQUFZLENBQUMsS0FBSztnQkFDekIsT0FBTyxFQUFFLDJDQUEyQzthQUNyRDtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsZ0ZBQWdGO0FBQ2hGLDJCQUEyQjtBQUMzQixnRkFBZ0Y7QUFFaEY7OztHQUdHO0FBQ1UsUUFBQSxpQ0FBaUMsR0FBYztJQUMxRCxZQUFZLEVBQUUseUNBQXlDO0lBQ3ZELE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFVBQVUsRUFBRTtRQUNWLEdBQUcsaUJBQWlCO0tBQ3JCO0lBQ0QsUUFBUSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQztJQUN0RCxRQUFRLEVBQUU7UUFDUixNQUFNO1FBQ04sZUFBZTtRQUNmLGFBQWE7UUFDYixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLG9DQUFvQztRQUNwQyxlQUFlO0tBQ2hCO0lBQ0QsVUFBVSxFQUFFLEVBQUU7SUFDZCxtQkFBbUIsRUFBRSxFQUFFO0lBQ3ZCLGVBQWUsRUFBRTtRQUNmO1lBQ0UsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixLQUFLLEVBQUU7Z0JBQ0w7b0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFFBQVE7b0JBQ3JDLE9BQU8sRUFBRSxxREFBcUQ7aUJBQy9EO2FBQ0Y7U0FDRjtRQUNEO1lBQ0UsUUFBUSxFQUFFLGFBQWE7WUFDdkIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO29CQUNyQyxPQUFPLEVBQUUsK0NBQStDO2lCQUN6RDthQUNGO1NBQ0Y7UUFDRDtZQUNFLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtvQkFDckMsT0FBTyxFQUFFLHdDQUF3QztpQkFDbEQ7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsZ0ZBQWdGO0FBQ2hGLHlCQUF5QjtBQUN6QixnRkFBZ0Y7QUFFaEY7O0dBRUc7QUFDVSxRQUFBLGtDQUFrQyxHQUFrQjtJQUMvRCxPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUseUNBQWlDO0lBQ3pDLFlBQVksRUFBRSx3Q0FBbUIsQ0FBQyxNQUFNO0lBQ3hDLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLGVBQWUsRUFBRSxTQUFTO0lBQzFCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLGNBQWMsRUFBRSw0Q0FBNEM7SUFDNUQsU0FBUyxFQUFFO1FBQ1Q7WUFDRSxVQUFVLEVBQUUsT0FBTztZQUNuQixXQUFXLEVBQ1QscUpBQXFKO1lBQ3ZKLFFBQVEsRUFBRSxLQUFLO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLDRCQUE0QixHQUFvQjtJQUMzRCwwQ0FBa0M7Q0FDbkMsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQVBJIHNjaGVtYXMgZm9yIEF6dXJlIFJvbGUgQXNzaWdubWVudCBhY3Jvc3MgYWxsIHN1cHBvcnRlZCB2ZXJzaW9uc1xuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBjb21wbGV0ZSBBUEkgc2NoZW1hcyBmb3IgTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcm9sZUFzc2lnbm1lbnRzXG4gKiBhY3Jvc3MgYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnMuIFRoZSBzY2hlbWFzIGFyZSB1c2VkIGJ5IHRoZSBWZXJzaW9uZWRBemFwaVJlc291cmNlXG4gKiBmcmFtZXdvcmsgZm9yIHZhbGlkYXRpb24sIHRyYW5zZm9ybWF0aW9uLCBhbmQgdmVyc2lvbiBtYW5hZ2VtZW50LlxuICovXG5cbmltcG9ydCB7XG4gIEFwaVNjaGVtYSxcbiAgUHJvcGVydHlEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFZhbGlkYXRpb25SdWxlVHlwZSxcbiAgVmVyc2lvbkNvbmZpZyxcbiAgVmVyc2lvblN1cHBvcnRMZXZlbCxcbn0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NTU9OIFBST1BFUlRZIERFRklOSVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbW1vbiBwcm9wZXJ0eSBkZWZpbml0aW9ucyBzaGFyZWQgYWNyb3NzIGFsbCBSb2xlIEFzc2lnbm1lbnQgdmVyc2lvbnNcbiAqL1xuY29uc3QgQ09NTU9OX1BST1BFUlRJRVM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEZWZpbml0aW9uIH0gPSB7XG4gIG5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBuYW1lIG9mIHRoZSByb2xlIGFzc2lnbm1lbnQgcmVzb3VyY2UuIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFzIGEgR1VJRCBieSBUZXJyYWZvcm0ncyBndWlkKCkgZnVuY3Rpb25cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICAvLyBOb3RlOiBObyBwYXR0ZXJuIHZhbGlkYXRpb24gaGVyZSBiZWNhdXNlIHRoZSBuYW1lIHdpbGwgYmUgYSBUZXJyYWZvcm0gZnVuY3Rpb25cbiAgICAgIC8vIGd1aWQoKSB0aGF0IGdldHMgZXZhbHVhdGVkIGF0IGFwcGx5IHRpbWUsIG5vdCBzeW50aGVzaXMgdGltZS5cbiAgICAgIC8vIEF6dXJlIHdpbGwgdmFsaWRhdGUgdGhlIGZpbmFsIEdVSUQgZm9ybWF0IHdoZW4gdGhlIHJlc291cmNlIGlzIGNyZWF0ZWQuXG4gICAgXSxcbiAgfSxcbiAgcm9sZURlZmluaXRpb25JZDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcm9sZSBkZWZpbml0aW9uIElEIHRvIGFzc2lnbi4gVGhpcyBjYW4gYmUgYSBidWlsdC1pbiBvciBjdXN0b20gcm9sZSBkZWZpbml0aW9uXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlJvbGUgZGVmaW5pdGlvbiBJRCBpcyByZXF1aXJlZCBmb3Igcm9sZSBhc3NpZ25tZW50c1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICAgICAgbWVzc2FnZTogXCJSb2xlIGRlZmluaXRpb24gSUQgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBwcmluY2lwYWxJZDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcHJpbmNpcGFsIElEIChvYmplY3QgSUQpIHRvIHdoaWNoIHRoZSByb2xlIGlzIGFzc2lnbmVkLiBUaGlzIGNhbiBiZSBhIHVzZXIsIGdyb3VwLCBzZXJ2aWNlIHByaW5jaXBhbCwgb3IgbWFuYWdlZCBpZGVudGl0eVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgbWVzc2FnZTogXCJQcmluY2lwYWwgSUQgaXMgcmVxdWlyZWQgZm9yIHJvbGUgYXNzaWdubWVudHNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiUHJpbmNpcGFsIElEIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgc2NvcGU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIHNjb3BlIGF0IHdoaWNoIHRoZSByb2xlIGFzc2lnbm1lbnQgaXMgYXBwbGllZCAoc3Vic2NyaXB0aW9uLCByZXNvdXJjZSBncm91cCwgb3IgcmVzb3VyY2UpXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIGlzIHJlcXVpcmVkIGZvciByb2xlIGFzc2lnbm1lbnRzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcHJpbmNpcGFsVHlwZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIHR5cGUgb2YgcHJpbmNpcGFsLiBWYWxpZCB2YWx1ZXM6IFVzZXIsIEdyb3VwLCBTZXJ2aWNlUHJpbmNpcGFsLCBGb3JlaWduR3JvdXAsIERldmljZVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENILFxuICAgICAgICB2YWx1ZTogXCJeKFVzZXJ8R3JvdXB8U2VydmljZVByaW5jaXBhbHxGb3JlaWduR3JvdXB8RGV2aWNlKSRcIixcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIlByaW5jaXBhbCB0eXBlIG11c3QgYmUgb25lIG9mOiBVc2VyLCBHcm91cCwgU2VydmljZVByaW5jaXBhbCwgRm9yZWlnbkdyb3VwLCBEZXZpY2VcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGVzY3JpcHRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSByb2xlIGFzc2lnbm1lbnQgZGVzY3JpcHRpb24uIFByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhc3NpZ25tZW50XCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDAsIG1heExlbmd0aDogNTEyIH0sXG4gICAgICAgIG1lc3NhZ2U6IFwiRGVzY3JpcHRpb24gbXVzdCBub3QgZXhjZWVkIDUxMiBjaGFyYWN0ZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGNvbmRpdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIGNvbmRpdGlvbnMgb24gdGhlIHJvbGUgYXNzaWdubWVudC4gVGhpcyBsaW1pdHMgdGhlIHJlc291cmNlcyBpdCBhcHBsaWVzIHRvIHVzaW5nIEFCQUMgZXhwcmVzc2lvbnNcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiQ29uZGl0aW9uIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgY29uZGl0aW9uVmVyc2lvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVmVyc2lvbiBvZiB0aGUgY29uZGl0aW9uIHN5bnRheC4gQ3VycmVudCBzdXBwb3J0ZWQgdmVyc2lvbiBpcyAyLjBcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXjJcXFxcLjAkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiQ29uZGl0aW9uIHZlcnNpb24gbXVzdCBiZSAyLjBcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGVsZWdhdGVkTWFuYWdlZElkZW50aXR5UmVzb3VyY2VJZDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIGRlbGVnYXRlZCBBenVyZSBSZXNvdXJjZSBJZCB3aGljaCBjb250YWlucyBhIE1hbmFnZWQgSWRlbnRpdHkuIEFwcGxpY2FibGUgb25seSB3aGVuIHRoZSBwcmluY2lwYWxUeXBlIGlzIEdyb3VwXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgICAgICBtZXNzYWdlOiBcIkRlbGVnYXRlZCBtYW5hZ2VkIGlkZW50aXR5IHJlc291cmNlIElEIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgaWdub3JlQ2hhbmdlczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHRvIGlnbm9yZSBkdXJpbmcgdXBkYXRlc1wiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgICAgICBtZXNzYWdlOiBcIklnbm9yZUNoYW5nZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTi1TUEVDSUZJQyBTQ0hFTUFTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFQSSBTY2hlbWEgZm9yIFJvbGUgQXNzaWdubWVudCB2ZXJzaW9uIDIwMjItMDQtMDFcbiAqIFRoaXMgaXMgdGhlIGxhdGVzdCBzdGFibGUgQVBJIHZlcnNpb24gZm9yIHJvbGUgYXNzaWdubWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IFJPTEVfQVNTSUdOTUVOVF9TQ0hFTUFfMjAyMl8wNF8wMTogQXBpU2NoZW1hID0ge1xuICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcm9sZUFzc2lnbm1lbnRzXCIsXG4gIHZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgLi4uQ09NTU9OX1BST1BFUlRJRVMsXG4gIH0sXG4gIHJlcXVpcmVkOiBbXCJyb2xlRGVmaW5pdGlvbklkXCIsIFwicHJpbmNpcGFsSWRcIiwgXCJzY29wZVwiXSxcbiAgb3B0aW9uYWw6IFtcbiAgICBcIm5hbWVcIixcbiAgICBcInByaW5jaXBhbFR5cGVcIixcbiAgICBcImRlc2NyaXB0aW9uXCIsXG4gICAgXCJjb25kaXRpb25cIixcbiAgICBcImNvbmRpdGlvblZlcnNpb25cIixcbiAgICBcImRlbGVnYXRlZE1hbmFnZWRJZGVudGl0eVJlc291cmNlSWRcIixcbiAgICBcImlnbm9yZUNoYW5nZXNcIixcbiAgXSxcbiAgZGVwcmVjYXRlZDogW10sXG4gIHRyYW5zZm9ybWF0aW9uUnVsZXM6IHt9LFxuICB2YWxpZGF0aW9uUnVsZXM6IFtcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJyb2xlRGVmaW5pdGlvbklkXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIlJvbGUgZGVmaW5pdGlvbiBJRCBpcyByZXF1aXJlZCBmb3Igcm9sZSBhc3NpZ25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcInByaW5jaXBhbElkXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIlByaW5jaXBhbCBJRCBpcyByZXF1aXJlZCBmb3Igcm9sZSBhc3NpZ25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcInNjb3BlXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIGlzIHJlcXVpcmVkIGZvciByb2xlIGFzc2lnbm1lbnRzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTiBDT05GSUdVUkFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBWZXJzaW9uIGNvbmZpZ3VyYXRpb24gZm9yIFJvbGUgQXNzaWdubWVudCAyMDIyLTA0LTAxXG4gKi9cbmV4cG9ydCBjb25zdCBST0xFX0FTU0lHTk1FTlRfVkVSU0lPTl8yMDIyXzA0XzAxOiBWZXJzaW9uQ29uZmlnID0ge1xuICB2ZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgc2NoZW1hOiBST0xFX0FTU0lHTk1FTlRfU0NIRU1BXzIwMjJfMDRfMDEsXG4gIHN1cHBvcnRMZXZlbDogVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gIHJlbGVhc2VEYXRlOiBcIjIwMjItMDQtMDFcIixcbiAgZGVwcmVjYXRpb25EYXRlOiB1bmRlZmluZWQsXG4gIHN1bnNldERhdGU6IHVuZGVmaW5lZCxcbiAgYnJlYWtpbmdDaGFuZ2VzOiBbXSxcbiAgbWlncmF0aW9uR3VpZGU6IFwiL2RvY3Mvcm9sZS1hc3NpZ25tZW50L21pZ3JhdGlvbi0yMDIyLTA0LTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwiYWRkZWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0YWJsZSByZWxlYXNlIG9mIFJvbGUgQXNzaWdubWVudCBBUEkgd2l0aCBmdWxsIHN1cHBvcnQgZm9yIFJCQUMgcm9sZSBhc3NpZ25tZW50cywgY29uZGl0aW9uYWwgYXNzaWdubWVudHMgKEFCQUMpLCBhbmQgZGVsZWdhdGVkIG1hbmFnZWQgaWRlbnRpdGllc1wiLFxuICAgICAgYnJlYWtpbmc6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKipcbiAqIEFsbCBzdXBwb3J0ZWQgUm9sZSBBc3NpZ25tZW50IHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9ST0xFX0FTU0lHTk1FTlRfVkVSU0lPTlM6IFZlcnNpb25Db25maWdbXSA9IFtcbiAgUk9MRV9BU1NJR05NRU5UX1ZFUlNJT05fMjAyMl8wNF8wMSxcbl07XG5cbi8qKlxuICogUmVzb3VyY2UgdHlwZSBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgUk9MRV9BU1NJR05NRU5UX1RZUEUgPSBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3JvbGVBc3NpZ25tZW50c1wiO1xuIl19
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Azure Role Assignment implementation using VersionedAzapiResource framework
|
|
3
|
+
*
|
|
4
|
+
* This class provides a version-aware implementation for managing Azure Role Assignments
|
|
5
|
+
* using the AZAPI provider. Role assignments grant specific permissions (roles) to security
|
|
6
|
+
* principals (users, groups, service principals, managed identities) at a particular scope.
|
|
7
|
+
*
|
|
8
|
+
* Supported API Versions:
|
|
9
|
+
* - 2022-04-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
|
+
* - Support for all principal types (User, Group, ServicePrincipal, ForeignGroup, Device)
|
|
16
|
+
* - Conditional role assignments using ABAC (Attribute-Based Access Control)
|
|
17
|
+
* - Delegated managed identity support for group assignments
|
|
18
|
+
* - Assignment at subscription, resource group, or resource scope
|
|
19
|
+
* - JSII compliance for multi-language support
|
|
20
|
+
*/
|
|
21
|
+
import * as cdktf from "cdktf";
|
|
22
|
+
import { Construct } from "constructs";
|
|
23
|
+
import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
|
|
24
|
+
import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
|
|
25
|
+
/**
|
|
26
|
+
* Properties for the unified Azure Role Assignment
|
|
27
|
+
*
|
|
28
|
+
* Extends AzapiResourceProps with Role Assignment specific properties.
|
|
29
|
+
*
|
|
30
|
+
* **Note on the `name` property:** While this interface inherits the `name` property
|
|
31
|
+
* from AzapiResourceProps, it is not used for role assignments. Azure role assignments
|
|
32
|
+
* require GUID format names, which are automatically generated by the construct.
|
|
33
|
+
* Any user-provided name value will be ignored in favor of Azure's deterministic
|
|
34
|
+
* GUID generation based on the deployment context.
|
|
35
|
+
*/
|
|
36
|
+
export interface RoleAssignmentProps extends AzapiResourceProps {
|
|
37
|
+
/**
|
|
38
|
+
* The role definition ID to assign
|
|
39
|
+
* This can be a built-in or custom role definition
|
|
40
|
+
* Required property
|
|
41
|
+
*
|
|
42
|
+
* @example "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7" (Reader)
|
|
43
|
+
* @example "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c" (Contributor)
|
|
44
|
+
*/
|
|
45
|
+
readonly roleDefinitionId: string;
|
|
46
|
+
/**
|
|
47
|
+
* The principal ID (object ID) to which the role is assigned
|
|
48
|
+
* This can be a user, group, service principal, or managed identity
|
|
49
|
+
* Required property
|
|
50
|
+
*
|
|
51
|
+
* @example "00000000-0000-0000-0000-000000000000"
|
|
52
|
+
*/
|
|
53
|
+
readonly principalId: string;
|
|
54
|
+
/**
|
|
55
|
+
* The scope at which the role assignment is applied
|
|
56
|
+
* Can be a subscription, resource group, or resource
|
|
57
|
+
* Required property
|
|
58
|
+
*
|
|
59
|
+
* @example "/subscriptions/00000000-0000-0000-0000-000000000000"
|
|
60
|
+
* @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name"
|
|
61
|
+
* @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name/providers/Microsoft.Storage/storageAccounts/storage-name"
|
|
62
|
+
*/
|
|
63
|
+
readonly scope: string;
|
|
64
|
+
/**
|
|
65
|
+
* The type of principal
|
|
66
|
+
* Specifies what kind of identity is being assigned the role
|
|
67
|
+
*
|
|
68
|
+
* @default undefined (Azure will auto-detect)
|
|
69
|
+
* @example "User" - An Azure AD user
|
|
70
|
+
* @example "Group" - An Azure AD group
|
|
71
|
+
* @example "ServicePrincipal" - A service principal (application)
|
|
72
|
+
* @example "ForeignGroup" - A group from external directory
|
|
73
|
+
* @example "Device" - A device identity
|
|
74
|
+
*/
|
|
75
|
+
readonly principalType?: string;
|
|
76
|
+
/**
|
|
77
|
+
* The role assignment description
|
|
78
|
+
* Provides detailed information about why the assignment was made
|
|
79
|
+
*
|
|
80
|
+
* @example "Grants read access to monitoring team for resource diagnostics"
|
|
81
|
+
*/
|
|
82
|
+
readonly description?: string;
|
|
83
|
+
/**
|
|
84
|
+
* The conditions on the role assignment
|
|
85
|
+
* Limits the resources it applies to using ABAC expressions
|
|
86
|
+
* Requires conditionVersion to be set when used
|
|
87
|
+
*
|
|
88
|
+
* @example "@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'logs'"
|
|
89
|
+
*/
|
|
90
|
+
readonly condition?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Version of the condition syntax
|
|
93
|
+
* Required when condition is specified
|
|
94
|
+
*
|
|
95
|
+
* @default undefined
|
|
96
|
+
* @example "2.0"
|
|
97
|
+
*/
|
|
98
|
+
readonly conditionVersion?: string;
|
|
99
|
+
/**
|
|
100
|
+
* The delegated Azure Resource Id which contains a Managed Identity
|
|
101
|
+
* Applicable only when the principalType is Group
|
|
102
|
+
* Used for scenarios where a group assignment should use a specific managed identity
|
|
103
|
+
*
|
|
104
|
+
* @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity"
|
|
105
|
+
*/
|
|
106
|
+
readonly delegatedManagedIdentityResourceId?: string;
|
|
107
|
+
/**
|
|
108
|
+
* The lifecycle rules to ignore changes
|
|
109
|
+
* @example ["description"]
|
|
110
|
+
*/
|
|
111
|
+
readonly ignoreChanges?: string[];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Properties interface for Azure Role Assignment
|
|
115
|
+
* This is required for JSII compliance to support multi-language code generation
|
|
116
|
+
*/
|
|
117
|
+
export interface RoleAssignmentProperties {
|
|
118
|
+
/**
|
|
119
|
+
* The role definition ID
|
|
120
|
+
*/
|
|
121
|
+
readonly roleDefinitionId: string;
|
|
122
|
+
/**
|
|
123
|
+
* The principal ID
|
|
124
|
+
*/
|
|
125
|
+
readonly principalId: string;
|
|
126
|
+
/**
|
|
127
|
+
* The scope of the role assignment
|
|
128
|
+
*/
|
|
129
|
+
readonly scope: string;
|
|
130
|
+
/**
|
|
131
|
+
* The type of principal
|
|
132
|
+
*/
|
|
133
|
+
readonly principalType?: string;
|
|
134
|
+
/**
|
|
135
|
+
* The role assignment description
|
|
136
|
+
*/
|
|
137
|
+
readonly description?: string;
|
|
138
|
+
/**
|
|
139
|
+
* The conditions on the role assignment
|
|
140
|
+
*/
|
|
141
|
+
readonly condition?: string;
|
|
142
|
+
/**
|
|
143
|
+
* Version of the condition syntax
|
|
144
|
+
*/
|
|
145
|
+
readonly conditionVersion?: string;
|
|
146
|
+
/**
|
|
147
|
+
* The delegated managed identity resource ID
|
|
148
|
+
*/
|
|
149
|
+
readonly delegatedManagedIdentityResourceId?: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The resource body interface for Azure Role Assignment API calls
|
|
153
|
+
* This matches the Azure REST API schema for role assignments
|
|
154
|
+
*/
|
|
155
|
+
export interface RoleAssignmentBody {
|
|
156
|
+
/**
|
|
157
|
+
* The properties of the role assignment
|
|
158
|
+
*/
|
|
159
|
+
readonly properties: RoleAssignmentProperties;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Unified Azure Role Assignment implementation
|
|
163
|
+
*
|
|
164
|
+
* This class provides a single, version-aware implementation for managing Azure
|
|
165
|
+
* Role Assignments. It automatically handles version resolution, schema validation,
|
|
166
|
+
* and property transformation.
|
|
167
|
+
*
|
|
168
|
+
* **Important Notes:**
|
|
169
|
+
* - Role assignments are scoped resources deployed at subscription, resource group,
|
|
170
|
+
* or resource level. They do not have a location property as they are not region-specific.
|
|
171
|
+
* - The `name` property (inherited from AzapiResourceProps) is not used. Azure automatically
|
|
172
|
+
* generates a deterministic GUID for role assignment names based on the deployment context.
|
|
173
|
+
* This ensures idempotent deployments without duplicate role assignments.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* Basic role assignment - Assign Reader role to a user at subscription scope
|
|
177
|
+
*
|
|
178
|
+
* const assignment = new RoleAssignment(this, "reader-assignment", {
|
|
179
|
+
* roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
|
|
180
|
+
* principalId: "00000000-0000-0000-0000-000000000000",
|
|
181
|
+
* scope: "/subscriptions/00000000-0000-0000-0000-000000000000",
|
|
182
|
+
* principalType: "User",
|
|
183
|
+
* });
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* Resource group scoped assignment - Assign Contributor to a service principal
|
|
187
|
+
*
|
|
188
|
+
* const assignment = new RoleAssignment(this, "contributor-assignment", {
|
|
189
|
+
* roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
|
|
190
|
+
* principalId: servicePrincipal.objectId,
|
|
191
|
+
* scope: resourceGroup.id,
|
|
192
|
+
* principalType: "ServicePrincipal",
|
|
193
|
+
* description: "Grants contributor access to the deployment service principal",
|
|
194
|
+
* });
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* Conditional assignment with ABAC - Limit access to specific storage containers
|
|
198
|
+
*
|
|
199
|
+
* const assignment = new RoleAssignment(this, "conditional-assignment", {
|
|
200
|
+
* roleDefinitionId: storageRole.id,
|
|
201
|
+
* principalId: user.objectId,
|
|
202
|
+
* scope: storageAccount.id,
|
|
203
|
+
* principalType: "User",
|
|
204
|
+
* condition: "@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'logs'",
|
|
205
|
+
* conditionVersion: "2.0",
|
|
206
|
+
* description: "Grants access only to the logs container",
|
|
207
|
+
* });
|
|
208
|
+
*
|
|
209
|
+
* @stability stable
|
|
210
|
+
*/
|
|
211
|
+
export declare class RoleAssignment extends AzapiResource {
|
|
212
|
+
/**
|
|
213
|
+
* The input properties for this Role Assignment instance
|
|
214
|
+
*/
|
|
215
|
+
readonly props: RoleAssignmentProps;
|
|
216
|
+
readonly idOutput: cdktf.TerraformOutput;
|
|
217
|
+
readonly nameOutput: cdktf.TerraformOutput;
|
|
218
|
+
/**
|
|
219
|
+
* Creates a new Azure Role Assignment using the VersionedAzapiResource framework
|
|
220
|
+
*
|
|
221
|
+
* The constructor automatically handles version resolution, schema registration,
|
|
222
|
+
* validation, and resource creation.
|
|
223
|
+
*
|
|
224
|
+
* @param scope - The scope in which to define this construct
|
|
225
|
+
* @param id - The unique identifier for this instance
|
|
226
|
+
* @param props - Configuration properties for the Role Assignment
|
|
227
|
+
*/
|
|
228
|
+
constructor(scope: Construct, id: string, props: RoleAssignmentProps);
|
|
229
|
+
/**
|
|
230
|
+
* Gets the default API version to use when no explicit version is specified
|
|
231
|
+
* Returns the most recent stable version as the default
|
|
232
|
+
*/
|
|
233
|
+
protected defaultVersion(): string;
|
|
234
|
+
/**
|
|
235
|
+
* Gets the Azure resource type for Role Assignments
|
|
236
|
+
*/
|
|
237
|
+
protected resourceType(): string;
|
|
238
|
+
/**
|
|
239
|
+
* Gets the API schema for the resolved version
|
|
240
|
+
* Uses the framework's schema resolution to get the appropriate schema
|
|
241
|
+
*/
|
|
242
|
+
protected apiSchema(): ApiSchema;
|
|
243
|
+
/**
|
|
244
|
+
* Creates the resource body for the Azure API call
|
|
245
|
+
* Transforms the input properties into the JSON format expected by Azure REST API
|
|
246
|
+
*
|
|
247
|
+
* Note: Role assignments do not have a location property as they are
|
|
248
|
+
* scoped resources (subscription, resource group, or resource level).
|
|
249
|
+
* The scope property is NOT included in the body as it's read-only and
|
|
250
|
+
* automatically derived from the parentId.
|
|
251
|
+
*/
|
|
252
|
+
protected createResourceBody(props: any): any;
|
|
253
|
+
/**
|
|
254
|
+
* Overrides the name resolution to generate deterministic GUIDs for role assignments
|
|
255
|
+
*
|
|
256
|
+
* Role assignments require GUID format IDs. This implementation generates a deterministic
|
|
257
|
+
* UUID based on the role assignment's key properties to ensure:
|
|
258
|
+
* - Same GUID is generated on re-deployments with same parameters
|
|
259
|
+
* - Idempotent deployments (no duplicate role assignments)
|
|
260
|
+
* - Consistent behavior across deployment runs
|
|
261
|
+
*/
|
|
262
|
+
protected resolveName(props: AzapiResourceProps): string;
|
|
263
|
+
/**
|
|
264
|
+
* Overrides parent ID resolution to use the scope from props
|
|
265
|
+
* Role assignments are scoped resources where the scope IS the parent
|
|
266
|
+
*/
|
|
267
|
+
protected resolveParentId(props: any): string;
|
|
268
|
+
/**
|
|
269
|
+
* Get the full resource identifier for use in other Azure resources
|
|
270
|
+
* Alias for the id property
|
|
271
|
+
*/
|
|
272
|
+
get resourceId(): string;
|
|
273
|
+
/**
|
|
274
|
+
* Get the role definition ID this assignment references
|
|
275
|
+
*/
|
|
276
|
+
get roleDefinitionId(): string;
|
|
277
|
+
/**
|
|
278
|
+
* Get the principal ID that was granted this role
|
|
279
|
+
*/
|
|
280
|
+
get principalId(): string;
|
|
281
|
+
/**
|
|
282
|
+
* Get the scope of this role assignment
|
|
283
|
+
*/
|
|
284
|
+
get assignmentScope(): string;
|
|
285
|
+
/**
|
|
286
|
+
* Get the principal type
|
|
287
|
+
*/
|
|
288
|
+
get principalType(): string | undefined;
|
|
289
|
+
/**
|
|
290
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
291
|
+
* Always includes body.properties.roleDefinitionId to handle Azure API format normalization
|
|
292
|
+
*/
|
|
293
|
+
private _applyIgnoreChanges;
|
|
294
|
+
}
|