@microsoft/terraform-cdk-constructs 1.9.0 → 1.10.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 +55122 -31830
- package/API.md +74039 -46109
- package/lib/azure-actiongroup/lib/action-group.js +1 -1
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
- package/lib/azure-aks/lib/aks-cluster.js +1 -1
- package/lib/azure-applicationinsights/index.d.ts +7 -0
- package/lib/azure-applicationinsights/index.js +24 -0
- package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
- package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
- package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
- package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
- package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
- package/lib/azure-applicationinsights/lib/index.js +22 -0
- package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
- package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
- package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
- package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
- package/lib/azure-containerapps/index.d.ts +1 -0
- package/lib/azure-containerapps/index.js +18 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
- package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
- package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
- package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
- package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
- package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
- package/lib/azure-containerapps/lib/container-app.js +320 -0
- package/lib/azure-containerapps/lib/index.d.ts +4 -0
- package/lib/azure-containerapps/lib/index.js +21 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
- package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app.integ.js +119 -0
- package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app.spec.js +839 -0
- package/lib/azure-containerregistry/index.d.ts +1 -0
- package/lib/azure-containerregistry/index.js +18 -0
- package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
- package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
- package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
- package/lib/azure-containerregistry/lib/container-registry.js +217 -0
- package/lib/azure-containerregistry/lib/index.d.ts +2 -0
- package/lib/azure-containerregistry/lib/index.js +19 -0
- package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
- package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
- package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
- package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
- package/lib/azure-cosmosdb/index.d.ts +1 -0
- package/lib/azure-cosmosdb/index.js +18 -0
- package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
- package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
- package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
- package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
- package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
- package/lib/azure-cosmosdb/lib/index.js +19 -0
- package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
- package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
- package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
- package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
- package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
- package/lib/azure-dnszone/lib/dns-zone.js +1 -1
- package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
- package/lib/azure-functionapp/index.d.ts +1 -0
- package/lib/azure-functionapp/index.js +18 -0
- package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
- package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
- package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
- package/lib/azure-functionapp/lib/function-app.js +223 -0
- package/lib/azure-functionapp/lib/index.d.ts +2 -0
- package/lib/azure-functionapp/lib/index.js +19 -0
- package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
- package/lib/azure-functionapp/test/function-app.integ.js +134 -0
- package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
- package/lib/azure-functionapp/test/function-app.spec.js +566 -0
- package/lib/azure-keyvault/index.d.ts +1 -0
- package/lib/azure-keyvault/index.js +18 -0
- package/lib/azure-keyvault/lib/index.d.ts +2 -0
- package/lib/azure-keyvault/lib/index.js +19 -0
- package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
- package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
- package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
- package/lib/azure-keyvault/lib/key-vault.js +243 -0
- package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
- package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
- package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
- package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +1 -1
- package/lib/azure-metricalert/lib/metric-alert.js +1 -1
- package/lib/azure-networkinterface/lib/network-interface.js +1 -1
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
- package/lib/azure-networkwatcher/lib/network-watcher.js +1 -1
- package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
- package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
- package/lib/azure-policysetdefinition/lib/policy-set-definition.js +1 -1
- package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
- package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
- package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
- package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
- package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
- package/lib/azure-roledefinition/lib/role-definition.js +1 -1
- package/lib/azure-sreagent/index.d.ts +1 -0
- package/lib/azure-sreagent/index.js +18 -0
- package/lib/azure-sreagent/lib/index.d.ts +2 -0
- package/lib/azure-sreagent/lib/index.js +19 -0
- package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
- package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
- package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
- package/lib/azure-sreagent/lib/sre-agent.js +217 -0
- package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
- package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
- package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
- package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
- package/lib/azure-staticwebapp/index.d.ts +1 -0
- package/lib/azure-staticwebapp/index.js +18 -0
- package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
- package/lib/azure-staticwebapp/lib/index.js +19 -0
- package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
- package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
- package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
- package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
- package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
- package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
- package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
- package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
- package/lib/azure-storageaccount/lib/storage-account.js +1 -1
- package/lib/azure-subnet/lib/subnet.js +1 -1
- package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
- package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
- package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
- package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
- package/lib/index.d.ts +16 -0
- package/lib/index.js +18 -2
- package/lib/testing/index.js +2 -2
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Azure Container Registry implementation using VersionedAzapiResource framework
|
|
3
|
+
*
|
|
4
|
+
* This class provides a single, version-aware implementation for Azure Container Registry
|
|
5
|
+
* that automatically handles version management, schema validation, and property transformation
|
|
6
|
+
* across all supported API versions.
|
|
7
|
+
*
|
|
8
|
+
* Supported API Versions:
|
|
9
|
+
* - 2023-07-01 (Maintenance)
|
|
10
|
+
* - 2025-04-01 (Active, Latest)
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Automatic latest version resolution when no version is specified
|
|
14
|
+
* - Explicit version pinning for stability requirements
|
|
15
|
+
* - Schema-driven validation and transformation
|
|
16
|
+
* - JSII compliance for multi-language support
|
|
17
|
+
*/
|
|
18
|
+
import * as cdktf from "cdktf";
|
|
19
|
+
import { Construct } from "constructs";
|
|
20
|
+
import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
|
|
21
|
+
import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
|
|
22
|
+
/**
|
|
23
|
+
* SKU configuration for Container Registry
|
|
24
|
+
*/
|
|
25
|
+
export interface ContainerRegistrySku {
|
|
26
|
+
/**
|
|
27
|
+
* The SKU name (Basic, Standard, Premium)
|
|
28
|
+
*/
|
|
29
|
+
readonly name: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* IP rule for network rule set
|
|
33
|
+
*/
|
|
34
|
+
export interface ContainerRegistryIpRule {
|
|
35
|
+
/**
|
|
36
|
+
* IP address or CIDR range
|
|
37
|
+
*/
|
|
38
|
+
readonly value: string;
|
|
39
|
+
/**
|
|
40
|
+
* The action of IP ACL rule (Allow)
|
|
41
|
+
* @default "Allow"
|
|
42
|
+
*/
|
|
43
|
+
readonly action?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Network rule set configuration for Container Registry
|
|
47
|
+
*/
|
|
48
|
+
export interface ContainerRegistryNetworkRuleSet {
|
|
49
|
+
/**
|
|
50
|
+
* Default action when no rule matches (Allow or Deny)
|
|
51
|
+
* @default "Allow"
|
|
52
|
+
*/
|
|
53
|
+
readonly defaultAction?: string;
|
|
54
|
+
/**
|
|
55
|
+
* IP rules for the Container Registry
|
|
56
|
+
*/
|
|
57
|
+
readonly ipRules?: ContainerRegistryIpRule[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Key vault properties for encryption
|
|
61
|
+
*/
|
|
62
|
+
export interface ContainerRegistryKeyVaultProperties {
|
|
63
|
+
/**
|
|
64
|
+
* The client ID of the identity used to access the key vault
|
|
65
|
+
*/
|
|
66
|
+
readonly identity?: string;
|
|
67
|
+
/**
|
|
68
|
+
* The key identifier of the key vault key
|
|
69
|
+
*/
|
|
70
|
+
readonly keyIdentifier?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Encryption configuration for Container Registry
|
|
74
|
+
*/
|
|
75
|
+
export interface ContainerRegistryEncryption {
|
|
76
|
+
/**
|
|
77
|
+
* Key vault properties for customer-managed key encryption
|
|
78
|
+
*/
|
|
79
|
+
readonly keyVaultProperties?: ContainerRegistryKeyVaultProperties;
|
|
80
|
+
/**
|
|
81
|
+
* The encryption status (enabled or disabled)
|
|
82
|
+
* @default "disabled"
|
|
83
|
+
*/
|
|
84
|
+
readonly status?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Retention policy for Container Registry
|
|
88
|
+
*/
|
|
89
|
+
export interface ContainerRegistryRetentionPolicy {
|
|
90
|
+
/**
|
|
91
|
+
* Number of days to retain untagged manifests
|
|
92
|
+
* @default 7
|
|
93
|
+
*/
|
|
94
|
+
readonly days?: number;
|
|
95
|
+
/**
|
|
96
|
+
* The retention policy status (enabled or disabled)
|
|
97
|
+
* @default "disabled"
|
|
98
|
+
*/
|
|
99
|
+
readonly status?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Trust policy for Container Registry
|
|
103
|
+
*/
|
|
104
|
+
export interface ContainerRegistryTrustPolicy {
|
|
105
|
+
/**
|
|
106
|
+
* The trust policy type (Notary)
|
|
107
|
+
* @default "Notary"
|
|
108
|
+
*/
|
|
109
|
+
readonly type?: string;
|
|
110
|
+
/**
|
|
111
|
+
* The trust policy status (enabled or disabled)
|
|
112
|
+
* @default "disabled"
|
|
113
|
+
*/
|
|
114
|
+
readonly status?: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Export policy for Container Registry
|
|
118
|
+
*/
|
|
119
|
+
export interface ContainerRegistryExportPolicy {
|
|
120
|
+
/**
|
|
121
|
+
* The export policy status (enabled or disabled)
|
|
122
|
+
* @default "enabled"
|
|
123
|
+
*/
|
|
124
|
+
readonly status?: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Soft delete policy for Container Registry
|
|
128
|
+
*/
|
|
129
|
+
export interface ContainerRegistrySoftDeletePolicy {
|
|
130
|
+
/**
|
|
131
|
+
* Number of days after which a soft-deleted item is permanently deleted
|
|
132
|
+
* @default 7
|
|
133
|
+
*/
|
|
134
|
+
readonly retentionDays?: number;
|
|
135
|
+
/**
|
|
136
|
+
* The soft delete policy status (enabled or disabled)
|
|
137
|
+
* @default "disabled"
|
|
138
|
+
*/
|
|
139
|
+
readonly status?: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Policy configuration for Container Registry
|
|
143
|
+
*/
|
|
144
|
+
export interface ContainerRegistryPolicies {
|
|
145
|
+
/**
|
|
146
|
+
* Retention policy for untagged manifests
|
|
147
|
+
*/
|
|
148
|
+
readonly retentionPolicy?: ContainerRegistryRetentionPolicy;
|
|
149
|
+
/**
|
|
150
|
+
* Trust policy for content trust
|
|
151
|
+
*/
|
|
152
|
+
readonly trustPolicy?: ContainerRegistryTrustPolicy;
|
|
153
|
+
/**
|
|
154
|
+
* Export policy for the registry
|
|
155
|
+
*/
|
|
156
|
+
readonly exportPolicy?: ContainerRegistryExportPolicy;
|
|
157
|
+
/**
|
|
158
|
+
* Soft delete policy for the registry
|
|
159
|
+
*/
|
|
160
|
+
readonly softDeletePolicy?: ContainerRegistrySoftDeletePolicy;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Identity configuration for Container Registry
|
|
164
|
+
*/
|
|
165
|
+
export interface ContainerRegistryIdentity {
|
|
166
|
+
/**
|
|
167
|
+
* The type of identity (SystemAssigned, UserAssigned, SystemAssigned,UserAssigned)
|
|
168
|
+
*/
|
|
169
|
+
readonly type: string;
|
|
170
|
+
/**
|
|
171
|
+
* User assigned identity IDs
|
|
172
|
+
*/
|
|
173
|
+
readonly userAssignedIdentities?: {
|
|
174
|
+
[key: string]: any;
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Properties for the unified Azure Container Registry
|
|
179
|
+
*
|
|
180
|
+
* Extends AzapiResourceProps with Container Registry specific properties
|
|
181
|
+
*/
|
|
182
|
+
export interface ContainerRegistryProps extends AzapiResourceProps {
|
|
183
|
+
/**
|
|
184
|
+
* The SKU (pricing tier) for the Container Registry
|
|
185
|
+
* @example { name: "Standard" }
|
|
186
|
+
*/
|
|
187
|
+
readonly sku: ContainerRegistrySku;
|
|
188
|
+
/**
|
|
189
|
+
* Whether the admin user is enabled
|
|
190
|
+
* @default false
|
|
191
|
+
*/
|
|
192
|
+
readonly adminUserEnabled?: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Whether public network access is enabled
|
|
195
|
+
* @default "Enabled"
|
|
196
|
+
*/
|
|
197
|
+
readonly publicNetworkAccess?: string;
|
|
198
|
+
/**
|
|
199
|
+
* Network rule set configuration (Premium SKU only)
|
|
200
|
+
*/
|
|
201
|
+
readonly networkRuleSet?: ContainerRegistryNetworkRuleSet;
|
|
202
|
+
/**
|
|
203
|
+
* Encryption settings with customer-managed keys (Premium SKU only)
|
|
204
|
+
*/
|
|
205
|
+
readonly encryption?: ContainerRegistryEncryption;
|
|
206
|
+
/**
|
|
207
|
+
* Policy configuration for the registry
|
|
208
|
+
*/
|
|
209
|
+
readonly policies?: ContainerRegistryPolicies;
|
|
210
|
+
/**
|
|
211
|
+
* Managed identity configuration
|
|
212
|
+
*/
|
|
213
|
+
readonly identity?: ContainerRegistryIdentity;
|
|
214
|
+
/**
|
|
215
|
+
* Whether zone redundancy is enabled (Premium SKU only)
|
|
216
|
+
* @default "Disabled"
|
|
217
|
+
*/
|
|
218
|
+
readonly zoneRedundancy?: string;
|
|
219
|
+
/**
|
|
220
|
+
* Whether to enable a dedicated data endpoint (Premium SKU only)
|
|
221
|
+
* @default false
|
|
222
|
+
*/
|
|
223
|
+
readonly dataEndpointEnabled?: boolean;
|
|
224
|
+
/**
|
|
225
|
+
* Whether anonymous pull is enabled (Standard or Premium SKU)
|
|
226
|
+
* @default false
|
|
227
|
+
*/
|
|
228
|
+
readonly anonymousPullEnabled?: boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Whether to allow trusted Azure Services to bypass network rules
|
|
231
|
+
* @default "AzureServices"
|
|
232
|
+
*/
|
|
233
|
+
readonly networkRuleBypassOptions?: string;
|
|
234
|
+
/**
|
|
235
|
+
* The lifecycle rules to ignore changes
|
|
236
|
+
* @example ["tags"]
|
|
237
|
+
*/
|
|
238
|
+
readonly ignoreChanges?: string[];
|
|
239
|
+
/**
|
|
240
|
+
* Resource group ID where the Container Registry will be created
|
|
241
|
+
*/
|
|
242
|
+
readonly resourceGroupId?: string;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Unified Azure Container Registry implementation
|
|
246
|
+
*
|
|
247
|
+
* This class provides a single, version-aware implementation that replaces all
|
|
248
|
+
* version-specific Container Registry classes. It automatically handles version
|
|
249
|
+
* resolution, schema validation, and property transformation while maintaining
|
|
250
|
+
* full backward compatibility.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* // Basic usage with automatic version resolution:
|
|
254
|
+
* const registry = new ContainerRegistry(this, "acr", {
|
|
255
|
+
* name: "mycontainerregistry",
|
|
256
|
+
* location: "eastus",
|
|
257
|
+
* resourceGroupId: resourceGroup.id,
|
|
258
|
+
* sku: { name: "Standard" },
|
|
259
|
+
* });
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* // Premium registry with advanced features:
|
|
263
|
+
* const registry = new ContainerRegistry(this, "acr", {
|
|
264
|
+
* name: "mycontainerregistry",
|
|
265
|
+
* location: "eastus",
|
|
266
|
+
* resourceGroupId: resourceGroup.id,
|
|
267
|
+
* sku: { name: "Premium" },
|
|
268
|
+
* publicNetworkAccess: "Disabled",
|
|
269
|
+
* zoneRedundancy: "Enabled",
|
|
270
|
+
* dataEndpointEnabled: true,
|
|
271
|
+
* policies: {
|
|
272
|
+
* retentionPolicy: { days: 30, status: "enabled" },
|
|
273
|
+
* softDeletePolicy: { retentionDays: 14, status: "enabled" },
|
|
274
|
+
* },
|
|
275
|
+
* });
|
|
276
|
+
*
|
|
277
|
+
* @stability stable
|
|
278
|
+
*/
|
|
279
|
+
export declare class ContainerRegistry extends AzapiResource {
|
|
280
|
+
readonly props: ContainerRegistryProps;
|
|
281
|
+
readonly idOutput: cdktf.TerraformOutput;
|
|
282
|
+
readonly locationOutput: cdktf.TerraformOutput;
|
|
283
|
+
readonly nameOutput: cdktf.TerraformOutput;
|
|
284
|
+
readonly tagsOutput: cdktf.TerraformOutput;
|
|
285
|
+
readonly loginServerOutput: cdktf.TerraformOutput;
|
|
286
|
+
/**
|
|
287
|
+
* Creates a new Azure Container Registry using the VersionedAzapiResource framework
|
|
288
|
+
*
|
|
289
|
+
* @param scope - The scope in which to define this construct
|
|
290
|
+
* @param id - The unique identifier for this instance
|
|
291
|
+
* @param props - Configuration properties for the Container Registry
|
|
292
|
+
*/
|
|
293
|
+
constructor(scope: Construct, id: string, props: ContainerRegistryProps);
|
|
294
|
+
/**
|
|
295
|
+
* Gets the default API version to use when no explicit version is specified
|
|
296
|
+
*/
|
|
297
|
+
protected defaultVersion(): string;
|
|
298
|
+
/**
|
|
299
|
+
* Gets the Azure resource type for Container Registries
|
|
300
|
+
*/
|
|
301
|
+
protected resourceType(): string;
|
|
302
|
+
/**
|
|
303
|
+
* Gets the API schema for the resolved version
|
|
304
|
+
*/
|
|
305
|
+
protected apiSchema(): ApiSchema;
|
|
306
|
+
/**
|
|
307
|
+
* Indicates that location is required for Container Registries
|
|
308
|
+
*/
|
|
309
|
+
protected requiresLocation(): boolean;
|
|
310
|
+
/**
|
|
311
|
+
* Creates the resource body for the Azure API call
|
|
312
|
+
*/
|
|
313
|
+
protected createResourceBody(props: any): any;
|
|
314
|
+
/**
|
|
315
|
+
* Get the login server URL for the Container Registry
|
|
316
|
+
*/
|
|
317
|
+
get loginServer(): string;
|
|
318
|
+
/**
|
|
319
|
+
* Add a tag to the Container Registry
|
|
320
|
+
*/
|
|
321
|
+
addTag(key: string, value: string): void;
|
|
322
|
+
/**
|
|
323
|
+
* Remove a tag from the Container Registry
|
|
324
|
+
*/
|
|
325
|
+
removeTag(key: string): void;
|
|
326
|
+
/**
|
|
327
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
328
|
+
*/
|
|
329
|
+
private _applyIgnoreChanges;
|
|
330
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ContainerRegistry = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Unified Azure Container Registry implementation using VersionedAzapiResource framework
|
|
8
|
+
*
|
|
9
|
+
* This class provides a single, version-aware implementation for Azure Container Registry
|
|
10
|
+
* that automatically handles version management, schema validation, and property transformation
|
|
11
|
+
* across all supported API versions.
|
|
12
|
+
*
|
|
13
|
+
* Supported API Versions:
|
|
14
|
+
* - 2023-07-01 (Maintenance)
|
|
15
|
+
* - 2025-04-01 (Active, Latest)
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Automatic latest version resolution when no version is specified
|
|
19
|
+
* - Explicit version pinning for stability requirements
|
|
20
|
+
* - Schema-driven validation and transformation
|
|
21
|
+
* - JSII compliance for multi-language support
|
|
22
|
+
*/
|
|
23
|
+
const cdktf = require("cdktf");
|
|
24
|
+
const container_registry_schemas_1 = require("./container-registry-schemas");
|
|
25
|
+
const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
|
|
26
|
+
/**
|
|
27
|
+
* Unified Azure Container Registry implementation
|
|
28
|
+
*
|
|
29
|
+
* This class provides a single, version-aware implementation that replaces all
|
|
30
|
+
* version-specific Container Registry classes. It automatically handles version
|
|
31
|
+
* resolution, schema validation, and property transformation while maintaining
|
|
32
|
+
* full backward compatibility.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // Basic usage with automatic version resolution:
|
|
36
|
+
* const registry = new ContainerRegistry(this, "acr", {
|
|
37
|
+
* name: "mycontainerregistry",
|
|
38
|
+
* location: "eastus",
|
|
39
|
+
* resourceGroupId: resourceGroup.id,
|
|
40
|
+
* sku: { name: "Standard" },
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* // Premium registry with advanced features:
|
|
45
|
+
* const registry = new ContainerRegistry(this, "acr", {
|
|
46
|
+
* name: "mycontainerregistry",
|
|
47
|
+
* location: "eastus",
|
|
48
|
+
* resourceGroupId: resourceGroup.id,
|
|
49
|
+
* sku: { name: "Premium" },
|
|
50
|
+
* publicNetworkAccess: "Disabled",
|
|
51
|
+
* zoneRedundancy: "Enabled",
|
|
52
|
+
* dataEndpointEnabled: true,
|
|
53
|
+
* policies: {
|
|
54
|
+
* retentionPolicy: { days: 30, status: "enabled" },
|
|
55
|
+
* softDeletePolicy: { retentionDays: 14, status: "enabled" },
|
|
56
|
+
* },
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* @stability stable
|
|
60
|
+
*/
|
|
61
|
+
class ContainerRegistry extends azapi_resource_1.AzapiResource {
|
|
62
|
+
/**
|
|
63
|
+
* Creates a new Azure Container Registry using the VersionedAzapiResource framework
|
|
64
|
+
*
|
|
65
|
+
* @param scope - The scope in which to define this construct
|
|
66
|
+
* @param id - The unique identifier for this instance
|
|
67
|
+
* @param props - Configuration properties for the Container Registry
|
|
68
|
+
*/
|
|
69
|
+
constructor(scope, id, props) {
|
|
70
|
+
super(scope, id, props);
|
|
71
|
+
this.props = props;
|
|
72
|
+
// Create Terraform outputs
|
|
73
|
+
this.idOutput = new cdktf.TerraformOutput(this, "id", {
|
|
74
|
+
value: this.id,
|
|
75
|
+
description: "The ID of the Container Registry",
|
|
76
|
+
});
|
|
77
|
+
this.locationOutput = new cdktf.TerraformOutput(this, "location", {
|
|
78
|
+
value: `\${${this.terraformResource.fqn}.location}`,
|
|
79
|
+
description: "The location of the Container Registry",
|
|
80
|
+
});
|
|
81
|
+
this.nameOutput = new cdktf.TerraformOutput(this, "name", {
|
|
82
|
+
value: `\${${this.terraformResource.fqn}.name}`,
|
|
83
|
+
description: "The name of the Container Registry",
|
|
84
|
+
});
|
|
85
|
+
this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
|
|
86
|
+
value: `\${${this.terraformResource.fqn}.tags}`,
|
|
87
|
+
description: "The tags assigned to the Container Registry",
|
|
88
|
+
});
|
|
89
|
+
this.loginServerOutput = new cdktf.TerraformOutput(this, "login_server", {
|
|
90
|
+
value: `\${${this.terraformResource.fqn}.output.properties.loginServer}`,
|
|
91
|
+
description: "The login server URL of the Container Registry",
|
|
92
|
+
});
|
|
93
|
+
// Override logical IDs
|
|
94
|
+
this.idOutput.overrideLogicalId("id");
|
|
95
|
+
this.locationOutput.overrideLogicalId("location");
|
|
96
|
+
this.nameOutput.overrideLogicalId("name");
|
|
97
|
+
this.tagsOutput.overrideLogicalId("tags");
|
|
98
|
+
this.loginServerOutput.overrideLogicalId("login_server");
|
|
99
|
+
// Apply ignore changes if specified
|
|
100
|
+
this._applyIgnoreChanges();
|
|
101
|
+
}
|
|
102
|
+
// =============================================================================
|
|
103
|
+
// REQUIRED ABSTRACT METHODS FROM VersionedAzapiResource
|
|
104
|
+
// =============================================================================
|
|
105
|
+
/**
|
|
106
|
+
* Gets the default API version to use when no explicit version is specified
|
|
107
|
+
*/
|
|
108
|
+
defaultVersion() {
|
|
109
|
+
return "2025-04-01";
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets the Azure resource type for Container Registries
|
|
113
|
+
*/
|
|
114
|
+
resourceType() {
|
|
115
|
+
return container_registry_schemas_1.CONTAINER_REGISTRY_TYPE;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Gets the API schema for the resolved version
|
|
119
|
+
*/
|
|
120
|
+
apiSchema() {
|
|
121
|
+
return this.resolveSchema();
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Indicates that location is required for Container Registries
|
|
125
|
+
*/
|
|
126
|
+
requiresLocation() {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Creates the resource body for the Azure API call
|
|
131
|
+
*/
|
|
132
|
+
createResourceBody(props) {
|
|
133
|
+
const typedProps = props;
|
|
134
|
+
const properties = {
|
|
135
|
+
adminUserEnabled: typedProps.adminUserEnabled || false,
|
|
136
|
+
publicNetworkAccess: typedProps.publicNetworkAccess || "Enabled",
|
|
137
|
+
};
|
|
138
|
+
// Add optional properties if specified
|
|
139
|
+
if (typedProps.networkRuleSet) {
|
|
140
|
+
properties.networkRuleSet = typedProps.networkRuleSet;
|
|
141
|
+
}
|
|
142
|
+
if (typedProps.encryption) {
|
|
143
|
+
properties.encryption = typedProps.encryption;
|
|
144
|
+
}
|
|
145
|
+
if (typedProps.policies) {
|
|
146
|
+
properties.policies = typedProps.policies;
|
|
147
|
+
}
|
|
148
|
+
if (typedProps.zoneRedundancy) {
|
|
149
|
+
properties.zoneRedundancy = typedProps.zoneRedundancy;
|
|
150
|
+
}
|
|
151
|
+
if (typedProps.dataEndpointEnabled !== undefined) {
|
|
152
|
+
properties.dataEndpointEnabled = typedProps.dataEndpointEnabled;
|
|
153
|
+
}
|
|
154
|
+
if (typedProps.anonymousPullEnabled !== undefined) {
|
|
155
|
+
properties.anonymousPullEnabled = typedProps.anonymousPullEnabled;
|
|
156
|
+
}
|
|
157
|
+
if (typedProps.networkRuleBypassOptions) {
|
|
158
|
+
properties.networkRuleBypassOptions = typedProps.networkRuleBypassOptions;
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
location: this.location,
|
|
162
|
+
tags: this.allTags(),
|
|
163
|
+
sku: typedProps.sku,
|
|
164
|
+
properties: properties,
|
|
165
|
+
identity: typedProps.identity,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// =============================================================================
|
|
169
|
+
// PUBLIC METHODS FOR CONTAINER REGISTRY OPERATIONS
|
|
170
|
+
// =============================================================================
|
|
171
|
+
/**
|
|
172
|
+
* Get the login server URL for the Container Registry
|
|
173
|
+
*/
|
|
174
|
+
get loginServer() {
|
|
175
|
+
return `\${${this.terraformResource.fqn}.output.properties.loginServer}`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Add a tag to the Container Registry
|
|
179
|
+
*/
|
|
180
|
+
addTag(key, value) {
|
|
181
|
+
if (!this.props.tags) {
|
|
182
|
+
this.props.tags = {};
|
|
183
|
+
}
|
|
184
|
+
this.props.tags[key] = value;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Remove a tag from the Container Registry
|
|
188
|
+
*/
|
|
189
|
+
removeTag(key) {
|
|
190
|
+
if (this.props.tags && this.props.tags[key]) {
|
|
191
|
+
delete this.props.tags[key];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// =============================================================================
|
|
195
|
+
// PRIVATE HELPER METHODS
|
|
196
|
+
// =============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Applies ignore changes lifecycle rules if specified in props
|
|
199
|
+
*/
|
|
200
|
+
_applyIgnoreChanges() {
|
|
201
|
+
if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
|
|
202
|
+
this.terraformResource.addOverride("lifecycle", [
|
|
203
|
+
{
|
|
204
|
+
ignore_changes: this.props.ignoreChanges,
|
|
205
|
+
},
|
|
206
|
+
]);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.ContainerRegistry = ContainerRegistry;
|
|
211
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
212
|
+
ContainerRegistry[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ContainerRegistry", version: "1.10.0" };
|
|
213
|
+
// Static initializer runs once when the class is first loaded
|
|
214
|
+
(() => {
|
|
215
|
+
azapi_resource_1.AzapiResource.registerSchemas(container_registry_schemas_1.CONTAINER_REGISTRY_TYPE, container_registry_schemas_1.ALL_CONTAINER_REGISTRY_VERSIONS);
|
|
216
|
+
})();
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWNvbnRhaW5lcnJlZ2lzdHJ5L2xpYi9jb250YWluZXItcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILCtCQUErQjtBQUUvQiw2RUFHc0M7QUFDdEMsOEVBR21EO0FBa1FuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsOEJBQWE7SUFrQmxEOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLGtDQUFrQztTQUNoRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFlBQVk7WUFDbkQsV0FBVyxFQUFFLHdDQUF3QztTQUN0RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLG9D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TUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUM5QztvQkFDRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2lCQUN6QzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWpNSCw4Q0FrTUM7OztBQWpNQyw4REFBOEQ7QUFDOUQ7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FDM0Isb0RBQXVCLEVBQ3ZCLDREQUErQixDQUNoQyxDQUFDO0FBQ0osQ0FBQyxHQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVuaWZpZWQgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5IGltcGxlbWVudGF0aW9uIHVzaW5nIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiBmb3IgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKiB0aGF0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmQgcHJvcGVydHkgdHJhbnNmb3JtYXRpb25cbiAqIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDIzLTA3LTAxIChNYWludGVuYW5jZSlcbiAqIC0gMjAyNS0wNC0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIEF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uIHdoZW4gbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAqIC0gRXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIGZvciBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzXG4gKiAtIFNjaGVtYS1kcml2ZW4gdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gSlNJSSBjb21wbGlhbmNlIGZvciBtdWx0aS1sYW5ndWFnZSBzdXBwb3J0XG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQUxMX0NPTlRBSU5FUl9SRUdJU1RSWV9WRVJTSU9OUyxcbiAgQ09OVEFJTkVSX1JFR0lTVFJZX1RZUEUsXG59IGZyb20gXCIuL2NvbnRhaW5lci1yZWdpc3RyeS1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFNLVSBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeVNrdSB7XG4gIC8qKlxuICAgKiBUaGUgU0tVIG5hbWUgKEJhc2ljLCBTdGFuZGFyZCwgUHJlbWl1bSlcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJUCBydWxlIGZvciBuZXR3b3JrIHJ1bGUgc2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVnaXN0cnlJcFJ1bGUge1xuICAvKipcbiAgICogSVAgYWRkcmVzcyBvciBDSURSIHJhbmdlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIG9mIElQIEFDTCBydWxlIChBbGxvdylcbiAgICogQGRlZmF1bHQgXCJBbGxvd1wiXG4gICAqL1xuICByZWFkb25seSBhY3Rpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTmV0d29yayBydWxlIHNldCBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeU5ldHdvcmtSdWxlU2V0IHtcbiAgLyoqXG4gICAqIERlZmF1bHQgYWN0aW9uIHdoZW4gbm8gcnVsZSBtYXRjaGVzIChBbGxvdyBvciBEZW55KVxuICAgKiBAZGVmYXVsdCBcIkFsbG93XCJcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBY3Rpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElQIHJ1bGVzIGZvciB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSBpcFJ1bGVzPzogQ29udGFpbmVyUmVnaXN0cnlJcFJ1bGVbXTtcbn1cblxuLyoqXG4gKiBLZXkgdmF1bHQgcHJvcGVydGllcyBmb3IgZW5jcnlwdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5S2V5VmF1bHRQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgSUQgb2YgdGhlIGlkZW50aXR5IHVzZWQgdG8gYWNjZXNzIHRoZSBrZXkgdmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IGlkZW50aWZpZXIgb2YgdGhlIGtleSB2YXVsdCBrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleUlkZW50aWZpZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeUVuY3J5cHRpb24ge1xuICAvKipcbiAgICogS2V5IHZhdWx0IHByb3BlcnRpZXMgZm9yIGN1c3RvbWVyLW1hbmFnZWQga2V5IGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGtleVZhdWx0UHJvcGVydGllcz86IENvbnRhaW5lclJlZ2lzdHJ5S2V5VmF1bHRQcm9wZXJ0aWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBzdGF0dXMgKGVuYWJsZWQgb3IgZGlzYWJsZWQpXG4gICAqIEBkZWZhdWx0IFwiZGlzYWJsZWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldGVudGlvbiBwb2xpY3kgZm9yIENvbnRhaW5lciBSZWdpc3RyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5UmV0ZW50aW9uUG9saWN5IHtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBkYXlzIHRvIHJldGFpbiB1bnRhZ2dlZCBtYW5pZmVzdHNcbiAgICogQGRlZmF1bHQgN1xuICAgKi9cbiAgcmVhZG9ubHkgZGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJldGVudGlvbiBwb2xpY3kgc3RhdHVzIChlbmFibGVkIG9yIGRpc2FibGVkKVxuICAgKiBAZGVmYXVsdCBcImRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUcnVzdCBwb2xpY3kgZm9yIENvbnRhaW5lciBSZWdpc3RyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5VHJ1c3RQb2xpY3kge1xuICAvKipcbiAgICogVGhlIHRydXN0IHBvbGljeSB0eXBlIChOb3RhcnkpXG4gICAqIEBkZWZhdWx0IFwiTm90YXJ5XCJcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0cnVzdCBwb2xpY3kgc3RhdHVzIChlbmFibGVkIG9yIGRpc2FibGVkKVxuICAgKiBAZGVmYXVsdCBcImRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFeHBvcnQgcG9saWN5IGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeUV4cG9ydFBvbGljeSB7XG4gIC8qKlxuICAgKiBUaGUgZXhwb3J0IHBvbGljeSBzdGF0dXMgKGVuYWJsZWQgb3IgZGlzYWJsZWQpXG4gICAqIEBkZWZhdWx0IFwiZW5hYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU29mdCBkZWxldGUgcG9saWN5IGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeVNvZnREZWxldGVQb2xpY3kge1xuICAvKipcbiAgICogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggYSBzb2Z0LWRlbGV0ZWQgaXRlbSBpcyBwZXJtYW5lbnRseSBkZWxldGVkXG4gICAqIEBkZWZhdWx0IDdcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbkRheXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzb2Z0IGRlbGV0ZSBwb2xpY3kgc3RhdHVzIChlbmFibGVkIG9yIGRpc2FibGVkKVxuICAgKiBAZGVmYXVsdCBcImRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVnaXN0cnlQb2xpY2llcyB7XG4gIC8qKlxuICAgKiBSZXRlbnRpb24gcG9saWN5IGZvciB1bnRhZ2dlZCBtYW5pZmVzdHNcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvblBvbGljeT86IENvbnRhaW5lclJlZ2lzdHJ5UmV0ZW50aW9uUG9saWN5O1xuXG4gIC8qKlxuICAgKiBUcnVzdCBwb2xpY3kgZm9yIGNvbnRlbnQgdHJ1c3RcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5PzogQ29udGFpbmVyUmVnaXN0cnlUcnVzdFBvbGljeTtcblxuICAvKipcbiAgICogRXhwb3J0IHBvbGljeSBmb3IgdGhlIHJlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSBleHBvcnRQb2xpY3k/OiBDb250YWluZXJSZWdpc3RyeUV4cG9ydFBvbGljeTtcblxuICAvKipcbiAgICogU29mdCBkZWxldGUgcG9saWN5IGZvciB0aGUgcmVnaXN0cnlcbiAgICovXG4gIHJlYWRvbmx5IHNvZnREZWxldGVQb2xpY3k/OiBDb250YWluZXJSZWdpc3RyeVNvZnREZWxldGVQb2xpY3k7XG59XG5cbi8qKlxuICogSWRlbnRpdHkgY29uZmlndXJhdGlvbiBmb3IgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVnaXN0cnlJZGVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBpZGVudGl0eSAoU3lzdGVtQXNzaWduZWQsIFVzZXJBc3NpZ25lZCwgU3lzdGVtQXNzaWduZWQsVXNlckFzc2lnbmVkKVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2VyIGFzc2lnbmVkIGlkZW50aXR5IElEc1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFzc2lnbmVkSWRlbnRpdGllcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHVuaWZpZWQgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBDb250YWluZXIgUmVnaXN0cnkgc3BlY2lmaWMgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5UHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIFNLVSAocHJpY2luZyB0aWVyKSBmb3IgdGhlIENvbnRhaW5lciBSZWdpc3RyeVxuICAgKiBAZXhhbXBsZSB7IG5hbWU6IFwiU3RhbmRhcmRcIiB9XG4gICAqL1xuICByZWFkb25seSBza3U6IENvbnRhaW5lclJlZ2lzdHJ5U2t1O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhZG1pbiB1c2VyIGlzIGVuYWJsZWRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFkbWluVXNlckVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHB1YmxpYyBuZXR3b3JrIGFjY2VzcyBpcyBlbmFibGVkXG4gICAqIEBkZWZhdWx0IFwiRW5hYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNOZXR3b3JrQWNjZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOZXR3b3JrIHJ1bGUgc2V0IGNvbmZpZ3VyYXRpb24gKFByZW1pdW0gU0tVIG9ubHkpXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrUnVsZVNldD86IENvbnRhaW5lclJlZ2lzdHJ5TmV0d29ya1J1bGVTZXQ7XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRpb24gc2V0dGluZ3Mgd2l0aCBjdXN0b21lci1tYW5hZ2VkIGtleXMgKFByZW1pdW0gU0tVIG9ubHkpXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uPzogQ29udGFpbmVyUmVnaXN0cnlFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSBwb2xpY2llcz86IENvbnRhaW5lclJlZ2lzdHJ5UG9saWNpZXM7XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgaWRlbnRpdHkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBDb250YWluZXJSZWdpc3RyeUlkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHpvbmUgcmVkdW5kYW5jeSBpcyBlbmFibGVkIChQcmVtaXVtIFNLVSBvbmx5KVxuICAgKiBAZGVmYXVsdCBcIkRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHpvbmVSZWR1bmRhbmN5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBhIGRlZGljYXRlZCBkYXRhIGVuZHBvaW50IChQcmVtaXVtIFNLVSBvbmx5KVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YUVuZHBvaW50RW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYW5vbnltb3VzIHB1bGwgaXMgZW5hYmxlZCAoU3RhbmRhcmQgb3IgUHJlbWl1bSBTS1UpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbm9ueW1vdXNQdWxsRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdHJ1c3RlZCBBenVyZSBTZXJ2aWNlcyB0byBieXBhc3MgbmV0d29yayBydWxlc1xuICAgKiBAZGVmYXVsdCBcIkF6dXJlU2VydmljZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1J1bGVCeXBhc3NPcHRpb25zPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIEBleGFtcGxlIFtcInRhZ3NcIl1cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVzb3VyY2UgZ3JvdXAgSUQgd2hlcmUgdGhlIENvbnRhaW5lciBSZWdpc3RyeSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmlmaWVkIEF6dXJlIENvbnRhaW5lciBSZWdpc3RyeSBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW5nbGUsIHZlcnNpb24tYXdhcmUgaW1wbGVtZW50YXRpb24gdGhhdCByZXBsYWNlcyBhbGxcbiAqIHZlcnNpb24tc3BlY2lmaWMgQ29udGFpbmVyIFJlZ2lzdHJ5IGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbjpcbiAqIGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IENvbnRhaW5lclJlZ2lzdHJ5KHRoaXMsIFwiYWNyXCIsIHtcbiAqICAgbmFtZTogXCJteWNvbnRhaW5lcnJlZ2lzdHJ5XCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIHNrdTogeyBuYW1lOiBcIlN0YW5kYXJkXCIgfSxcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQcmVtaXVtIHJlZ2lzdHJ5IHdpdGggYWR2YW5jZWQgZmVhdHVyZXM6XG4gKiBjb25zdCByZWdpc3RyeSA9IG5ldyBDb250YWluZXJSZWdpc3RyeSh0aGlzLCBcImFjclwiLCB7XG4gKiAgIG5hbWU6IFwibXljb250YWluZXJyZWdpc3RyeVwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogICBza3U6IHsgbmFtZTogXCJQcmVtaXVtXCIgfSxcbiAqICAgcHVibGljTmV0d29ya0FjY2VzczogXCJEaXNhYmxlZFwiLFxuICogICB6b25lUmVkdW5kYW5jeTogXCJFbmFibGVkXCIsXG4gKiAgIGRhdGFFbmRwb2ludEVuYWJsZWQ6IHRydWUsXG4gKiAgIHBvbGljaWVzOiB7XG4gKiAgICAgcmV0ZW50aW9uUG9saWN5OiB7IGRheXM6IDMwLCBzdGF0dXM6IFwiZW5hYmxlZFwiIH0sXG4gKiAgICAgc29mdERlbGV0ZVBvbGljeTogeyByZXRlbnRpb25EYXlzOiAxNCwgc3RhdHVzOiBcImVuYWJsZWRcIiB9LFxuICogICB9LFxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRhaW5lclJlZ2lzdHJ5IGV4dGVuZHMgQXphcGlSZXNvdXJjZSB7XG4gIC8vIFN0YXRpYyBpbml0aWFsaXplciBydW5zIG9uY2Ugd2hlbiB0aGUgY2xhc3MgaXMgZmlyc3QgbG9hZGVkXG4gIHN0YXRpYyB7XG4gICAgQXphcGlSZXNvdXJjZS5yZWdpc3RlclNjaGVtYXMoXG4gICAgICBDT05UQUlORVJfUkVHSVNUUllfVFlQRSxcbiAgICAgIEFMTF9DT05UQUlORVJfUkVHSVNUUllfVkVSU0lPTlMsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogQ29udGFpbmVyUmVnaXN0cnlQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYXRpb25PdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3NPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2luU2VydmVyT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5IHVzaW5nIHRoZSBWZXJzaW9uZWRBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpbnN0YW5jZVxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBDb250YWluZXIgUmVnaXN0cnlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb250YWluZXJSZWdpc3RyeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcbiAgICB0aGlzLmlkT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImlkXCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmlkLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIElEIG9mIHRoZSBDb250YWluZXIgUmVnaXN0cnlcIixcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25PdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibG9jYXRpb25cIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubG9jYXRpb259YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsb2NhdGlvbiBvZiB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnRhZ3NPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwidGFnc1wiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS50YWdzfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgdGFncyBhc3NpZ25lZCB0byB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvZ2luU2VydmVyT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImxvZ2luX3NlcnZlclwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5sb2dpblNlcnZlcn1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGxvZ2luIHNlcnZlciBVUkwgb2YgdGhlIENvbnRhaW5lciBSZWdpc3RyeVwiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHNcbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImxvY2F0aW9uXCIpO1xuICAgIHRoaXMubmFtZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcIm5hbWVcIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcbiAgICB0aGlzLmxvZ2luU2VydmVyT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9naW5fc2VydmVyXCIpO1xuXG4gICAgLy8gQXBwbHkgaWdub3JlIGNoYW5nZXMgaWYgc3BlY2lmaWVkXG4gICAgdGhpcy5fYXBwbHlJZ25vcmVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSRVFVSVJFRCBBQlNUUkFDVCBNRVRIT0RTIEZST00gVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG5vIGV4cGxpY2l0IHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCIyMDI1LTA0LTAxXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSBmb3IgQ29udGFpbmVyIFJlZ2lzdHJpZXNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ09OVEFJTkVSX1JFR0lTVFJZX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgbG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIENvbnRhaW5lciBSZWdpc3RyaWVzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVxdWlyZXNMb2NhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSByZXNvdXJjZSBib2R5IGZvciB0aGUgQXp1cmUgQVBJIGNhbGxcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIENvbnRhaW5lclJlZ2lzdHJ5UHJvcHM7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgYWRtaW5Vc2VyRW5hYmxlZDogdHlwZWRQcm9wcy5hZG1pblVzZXJFbmFibGVkIHx8IGZhbHNlLFxuICAgICAgcHVibGljTmV0d29ya0FjY2VzczogdHlwZWRQcm9wcy5wdWJsaWNOZXR3b3JrQWNjZXNzIHx8IFwiRW5hYmxlZFwiLFxuICAgIH07XG5cbiAgICAvLyBBZGQgb3B0aW9uYWwgcHJvcGVydGllcyBpZiBzcGVjaWZpZWRcbiAgICBpZiAodHlwZWRQcm9wcy5uZXR3b3JrUnVsZVNldCkge1xuICAgICAgcHJvcGVydGllcy5uZXR3b3JrUnVsZVNldCA9IHR5cGVkUHJvcHMubmV0d29ya1J1bGVTZXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuZW5jcnlwdGlvbikge1xuICAgICAgcHJvcGVydGllcy5lbmNyeXB0aW9uID0gdHlwZWRQcm9wcy5lbmNyeXB0aW9uO1xuICAgIH1cblxuICAgIGlmICh0eXBlZFByb3BzLnBvbGljaWVzKSB7XG4gICAgICBwcm9wZXJ0aWVzLnBvbGljaWVzID0gdHlwZWRQcm9wcy5wb2xpY2llcztcbiAgICB9XG5cbiAgICBpZiAodHlwZWRQcm9wcy56b25lUmVkdW5kYW5jeSkge1xuICAgICAgcHJvcGVydGllcy56b25lUmVkdW5kYW5jeSA9IHR5cGVkUHJvcHMuem9uZVJlZHVuZGFuY3k7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuZGF0YUVuZHBvaW50RW5hYmxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0aWVzLmRhdGFFbmRwb2ludEVuYWJsZWQgPSB0eXBlZFByb3BzLmRhdGFFbmRwb2ludEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuYW5vbnltb3VzUHVsbEVuYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcGVydGllcy5hbm9ueW1vdXNQdWxsRW5hYmxlZCA9IHR5cGVkUHJvcHMuYW5vbnltb3VzUHVsbEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMubmV0d29ya1J1bGVCeXBhc3NPcHRpb25zKSB7XG4gICAgICBwcm9wZXJ0aWVzLm5ldHdvcmtSdWxlQnlwYXNzT3B0aW9ucyA9IHR5cGVkUHJvcHMubmV0d29ya1J1bGVCeXBhc3NPcHRpb25zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgc2t1OiB0eXBlZFByb3BzLnNrdSxcbiAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG4gICAgICBpZGVudGl0eTogdHlwZWRQcm9wcy5pZGVudGl0eSxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFVCTElDIE1FVEhPRFMgRk9SIENPTlRBSU5FUiBSRUdJU1RSWSBPUEVSQVRJT05TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbG9naW4gc2VydmVyIFVSTCBmb3IgdGhlIENvbnRhaW5lciBSZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIGdldCBsb2dpblNlcnZlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLmxvZ2luU2VydmVyfWA7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFnIHRvIHRoZSBDb250YWluZXIgUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBDb250YWluZXIgUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyByZW1vdmVUYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50YWdzICYmIHRoaXMucHJvcHMudGFnc1trZXldKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9wcy50YWdzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVIgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlcyBpZiBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./container-registry-schemas"), exports);
|
|
18
|
+
__exportStar(require("./container-registry"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtY29udGFpbmVycmVnaXN0cnkvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrREFBNkM7QUFDN0MsdURBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29udGFpbmVyLXJlZ2lzdHJ5LXNjaGVtYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnRhaW5lci1yZWdpc3RyeVwiO1xuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test for Azure Container Registry
|
|
3
|
+
*
|
|
4
|
+
* This test demonstrates usage of the ContainerRegistry construct
|
|
5
|
+
* and validates deployment, idempotency, and cleanup.
|
|
6
|
+
*
|
|
7
|
+
* Run with: npm run integration:nostream
|
|
8
|
+
*/
|
|
9
|
+
import "cdktf/lib/testing/adapters/jest";
|