@microsoft/terraform-cdk-constructs 1.8.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.
Files changed (201) hide show
  1. package/.jsii +60376 -32133
  2. package/API.md +72290 -37038
  3. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  4. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  5. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  6. package/lib/azure-applicationinsights/index.d.ts +7 -0
  7. package/lib/azure-applicationinsights/index.js +24 -0
  8. package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
  9. package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
  10. package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
  11. package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
  12. package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
  13. package/lib/azure-applicationinsights/lib/index.js +22 -0
  14. package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
  15. package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
  16. package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
  17. package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
  18. package/lib/azure-containerapps/index.d.ts +1 -0
  19. package/lib/azure-containerapps/index.js +18 -0
  20. package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
  21. package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
  22. package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
  23. package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
  24. package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
  25. package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
  26. package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
  27. package/lib/azure-containerapps/lib/container-app.js +320 -0
  28. package/lib/azure-containerapps/lib/index.d.ts +4 -0
  29. package/lib/azure-containerapps/lib/index.js +21 -0
  30. package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
  31. package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
  32. package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
  33. package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
  34. package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
  35. package/lib/azure-containerapps/test/container-app.integ.js +119 -0
  36. package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
  37. package/lib/azure-containerapps/test/container-app.spec.js +839 -0
  38. package/lib/azure-containerregistry/index.d.ts +1 -0
  39. package/lib/azure-containerregistry/index.js +18 -0
  40. package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
  41. package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
  42. package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
  43. package/lib/azure-containerregistry/lib/container-registry.js +217 -0
  44. package/lib/azure-containerregistry/lib/index.d.ts +2 -0
  45. package/lib/azure-containerregistry/lib/index.js +19 -0
  46. package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
  47. package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
  48. package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
  49. package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
  50. package/lib/azure-cosmosdb/index.d.ts +1 -0
  51. package/lib/azure-cosmosdb/index.js +18 -0
  52. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
  53. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
  54. package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
  55. package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
  56. package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
  57. package/lib/azure-cosmosdb/lib/index.js +19 -0
  58. package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
  59. package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
  60. package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
  61. package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
  62. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  63. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  64. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  65. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  66. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  67. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  68. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  69. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  70. package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
  71. package/lib/azure-functionapp/index.d.ts +1 -0
  72. package/lib/azure-functionapp/index.js +18 -0
  73. package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
  74. package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
  75. package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
  76. package/lib/azure-functionapp/lib/function-app.js +223 -0
  77. package/lib/azure-functionapp/lib/index.d.ts +2 -0
  78. package/lib/azure-functionapp/lib/index.js +19 -0
  79. package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
  80. package/lib/azure-functionapp/test/function-app.integ.js +134 -0
  81. package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
  82. package/lib/azure-functionapp/test/function-app.spec.js +566 -0
  83. package/lib/azure-keyvault/index.d.ts +1 -0
  84. package/lib/azure-keyvault/index.js +18 -0
  85. package/lib/azure-keyvault/lib/index.d.ts +2 -0
  86. package/lib/azure-keyvault/lib/index.js +19 -0
  87. package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
  88. package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
  89. package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
  90. package/lib/azure-keyvault/lib/key-vault.js +243 -0
  91. package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
  92. package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
  93. package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
  94. package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
  95. package/lib/azure-loganalyticsworkspace/index.d.ts +6 -0
  96. package/lib/azure-loganalyticsworkspace/index.js +23 -0
  97. package/lib/azure-loganalyticsworkspace/lib/index.d.ts +5 -0
  98. package/lib/azure-loganalyticsworkspace/lib/index.js +22 -0
  99. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.d.ts +51 -0
  100. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.js +255 -0
  101. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +301 -0
  102. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +213 -0
  103. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +9 -0
  104. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +71 -0
  105. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.d.ts +8 -0
  106. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +504 -0
  107. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  108. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  109. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  110. package/lib/azure-networkwatcher/index.d.ts +14 -0
  111. package/lib/azure-networkwatcher/index.js +31 -0
  112. package/lib/azure-networkwatcher/lib/index.d.ts +5 -0
  113. package/lib/azure-networkwatcher/lib/index.js +22 -0
  114. package/lib/azure-networkwatcher/lib/network-watcher-schemas.d.ts +47 -0
  115. package/lib/azure-networkwatcher/lib/network-watcher-schemas.js +167 -0
  116. package/lib/azure-networkwatcher/lib/network-watcher.d.ts +181 -0
  117. package/lib/azure-networkwatcher/lib/network-watcher.js +187 -0
  118. package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +12 -0
  119. package/lib/azure-networkwatcher/test/network-watcher.integ.js +84 -0
  120. package/lib/azure-networkwatcher/test/network-watcher.spec.d.ts +8 -0
  121. package/lib/azure-networkwatcher/test/network-watcher.spec.js +312 -0
  122. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  123. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  124. package/lib/azure-policysetdefinition/index.d.ts +10 -0
  125. package/lib/azure-policysetdefinition/index.js +27 -0
  126. package/lib/azure-policysetdefinition/lib/index.d.ts +5 -0
  127. package/lib/azure-policysetdefinition/lib/index.js +22 -0
  128. package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.d.ts +50 -0
  129. package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.js +255 -0
  130. package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +426 -0
  131. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +255 -0
  132. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +9 -0
  133. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +56 -0
  134. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.d.ts +8 -0
  135. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +745 -0
  136. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  137. package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
  138. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  139. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  140. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  141. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  142. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  143. package/lib/azure-sreagent/index.d.ts +1 -0
  144. package/lib/azure-sreagent/index.js +18 -0
  145. package/lib/azure-sreagent/lib/index.d.ts +2 -0
  146. package/lib/azure-sreagent/lib/index.js +19 -0
  147. package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
  148. package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
  149. package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
  150. package/lib/azure-sreagent/lib/sre-agent.js +217 -0
  151. package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
  152. package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
  153. package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
  154. package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
  155. package/lib/azure-staticwebapp/index.d.ts +1 -0
  156. package/lib/azure-staticwebapp/index.js +18 -0
  157. package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
  158. package/lib/azure-staticwebapp/lib/index.js +19 -0
  159. package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
  160. package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
  161. package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
  162. package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
  163. package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
  164. package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
  165. package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
  166. package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
  167. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  168. package/lib/azure-subnet/lib/subnet.js +1 -1
  169. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  170. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  171. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
  172. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +4 -2
  173. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +8 -5
  174. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +109 -1
  175. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  176. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  177. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  178. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  179. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  180. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  181. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  182. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  183. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  184. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  185. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
  186. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  187. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  188. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  189. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  190. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  191. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  192. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  193. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  194. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  195. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  196. package/lib/index.d.ts +25 -0
  197. package/lib/index.js +27 -2
  198. package/lib/testing/index.js +2 -2
  199. package/lib/testing/lib/cleanup.js +1 -1
  200. package/lib/testing/lib/metadata.js +1 -1
  201. package/package.json +1 -1
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Azure SRE Agent (Microsoft.App/agents) construct using the
3
+ * VersionedAzapiResource framework.
4
+ *
5
+ * Azure SRE Agent provides AI-powered Site Reliability Engineering agents
6
+ * that can be configured with knowledge graphs, actions, incident
7
+ * management integration and a default AI model.
8
+ *
9
+ * Supported API Versions:
10
+ * - 2026-01-01 (Active, Latest, Stable)
11
+ *
12
+ * Reference:
13
+ * https://github.com/Azure/azure-rest-api-specs/tree/main/specification/app/resource-manager/Microsoft.App/SreAgent
14
+ */
15
+ import * as cdktf from "cdktf";
16
+ import { Construct } from "constructs";
17
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
18
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
19
+ /**
20
+ * Managed Service Identity configuration for the SRE Agent.
21
+ *
22
+ * Mirrors the ManagedServiceIdentity shape used by Azure ARM resources.
23
+ */
24
+ export interface SreAgentManagedIdentity {
25
+ /**
26
+ * The type of managed service identity.
27
+ *
28
+ * Allowed values: "None", "SystemAssigned", "UserAssigned",
29
+ * "SystemAssigned,UserAssigned".
30
+ */
31
+ readonly type: string;
32
+ /**
33
+ * Set of user assigned identities, keyed by their ARM resource IDs.
34
+ */
35
+ readonly userAssignedIdentities?: {
36
+ [key: string]: any;
37
+ };
38
+ }
39
+ /**
40
+ * Agent identity configuration.
41
+ *
42
+ * Used by the SRE Agent runtime to obtain credentials for accessing
43
+ * external systems on behalf of the agent.
44
+ */
45
+ export interface SreAgentIdentity {
46
+ /**
47
+ * Initial sponsor group ID (required by the Azure API)
48
+ */
49
+ readonly initialSponsorGroupId: string;
50
+ }
51
+ /**
52
+ * Properties for the Azure SRE Agent construct
53
+ */
54
+ export interface SreAgentProps extends AzapiResourceProps {
55
+ /**
56
+ * The ARM resource ID of the parent resource group.
57
+ *
58
+ * If omitted, the resource will be scoped to the subscription, which
59
+ * is typically not valid for tracked resources.
60
+ */
61
+ readonly resourceGroupId?: string;
62
+ /**
63
+ * The ARM resource ID of the Agent Space (Microsoft.App/agentSpaces)
64
+ * that this Agent belongs to. Optional.
65
+ */
66
+ readonly agentSpaceId?: string;
67
+ /**
68
+ * Managed service identity configuration assigned to the SRE Agent.
69
+ */
70
+ readonly identity?: SreAgentManagedIdentity;
71
+ /**
72
+ * Agent identity configuration used by the SRE Agent runtime to
73
+ * access external systems.
74
+ */
75
+ readonly agentIdentity?: SreAgentIdentity;
76
+ /**
77
+ * Default AI model configuration for the SRE Agent.
78
+ *
79
+ * Free-form object passed directly to the Azure REST API. Fields vary
80
+ * depending on the chosen model provider (e.g. model name, deployment
81
+ * name, endpoint).
82
+ */
83
+ readonly defaultModel?: {
84
+ [key: string]: any;
85
+ };
86
+ /**
87
+ * Knowledge graph configuration.
88
+ */
89
+ readonly knowledgeGraphConfiguration?: {
90
+ [key: string]: any;
91
+ };
92
+ /**
93
+ * Action configuration.
94
+ */
95
+ readonly actionConfiguration?: {
96
+ [key: string]: any;
97
+ };
98
+ /**
99
+ * Log configuration.
100
+ */
101
+ readonly logConfiguration?: {
102
+ [key: string]: any;
103
+ };
104
+ /**
105
+ * Incident management configuration.
106
+ */
107
+ readonly incidentManagementConfiguration?: {
108
+ [key: string]: any;
109
+ };
110
+ /**
111
+ * Upgrade channel for the SRE Agent.
112
+ */
113
+ readonly upgradeChannel?: string;
114
+ /**
115
+ * Lifecycle ignore_changes rules.
116
+ *
117
+ * @example ["tags"]
118
+ */
119
+ readonly ignoreChanges?: string[];
120
+ }
121
+ /**
122
+ * Resource body for Azure SRE Agent API calls.
123
+ *
124
+ * Matches the Microsoft.App/agents Azure REST API schema.
125
+ */
126
+ export interface SreAgentBody {
127
+ readonly location: string;
128
+ readonly tags?: {
129
+ [key: string]: string;
130
+ };
131
+ readonly identity?: SreAgentManagedIdentity;
132
+ readonly properties?: {
133
+ [key: string]: any;
134
+ };
135
+ }
136
+ /**
137
+ * Azure SRE Agent (Microsoft.App/agents) construct.
138
+ *
139
+ * @example
140
+ * // Basic SRE Agent
141
+ * const agent = new SreAgent(this, "sre-agent", {
142
+ * name: "my-sre-agent",
143
+ * location: "eastus",
144
+ * resourceGroupId: resourceGroup.id,
145
+ * identity: { type: "SystemAssigned" },
146
+ * agentIdentity: {
147
+ * initialSponsorGroupId: "00000000-0000-0000-0000-000000000000",
148
+ * },
149
+ * });
150
+ *
151
+ * @stability stable
152
+ */
153
+ export declare class SreAgent extends AzapiResource {
154
+ /**
155
+ * Input properties for this SRE Agent instance.
156
+ */
157
+ readonly props: SreAgentProps;
158
+ readonly idOutput: cdktf.TerraformOutput;
159
+ readonly locationOutput: cdktf.TerraformOutput;
160
+ readonly nameOutput: cdktf.TerraformOutput;
161
+ readonly tagsOutput: cdktf.TerraformOutput;
162
+ readonly agentEndpointOutput: cdktf.TerraformOutput;
163
+ readonly provisioningStateOutput: cdktf.TerraformOutput;
164
+ readonly powerStateOutput: cdktf.TerraformOutput;
165
+ constructor(scope: Construct, id: string, props: SreAgentProps);
166
+ protected defaultVersion(): string;
167
+ protected resourceType(): string;
168
+ protected apiSchema(): ApiSchema;
169
+ protected requiresLocation(): boolean;
170
+ /**
171
+ * Disable AZAPI provider schema validation for this resource.
172
+ *
173
+ * The Azure SRE Agent resource type (`Microsoft.App/agents`) was introduced
174
+ * after the AZAPI provider version currently pinned by this repository and
175
+ * is therefore not yet present in the provider's embedded schema. Disabling
176
+ * schema validation lets the resource be applied against the live Azure API
177
+ * (which is the source of truth) without requiring a provider upgrade.
178
+ *
179
+ * `ignoreMissingProperty` is also enabled because the API returns a number
180
+ * of computed/read-only fields that aren't part of the request body.
181
+ */
182
+ protected customizeResourceConfig(config: any): any;
183
+ /**
184
+ * Build the resource body for the Microsoft.App/agents Azure REST API.
185
+ */
186
+ protected createResourceBody(props: any): any;
187
+ /**
188
+ * The data plane endpoint of the SRE Agent (populated after creation).
189
+ */
190
+ get agentEndpoint(): string;
191
+ /**
192
+ * The provisioning state of the SRE Agent (populated after creation).
193
+ */
194
+ get provisioningState(): string;
195
+ /**
196
+ * The power state of the SRE Agent (populated after creation).
197
+ */
198
+ get powerState(): string;
199
+ /**
200
+ * Add a tag to the SRE Agent.
201
+ */
202
+ addSreAgentTag(key: string, value: string): void;
203
+ /**
204
+ * Remove a tag from the SRE Agent.
205
+ */
206
+ removeSreAgentTag(key: string): void;
207
+ private _applyIgnoreChanges;
208
+ }
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SreAgent = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Azure SRE Agent (Microsoft.App/agents) construct using the
8
+ * VersionedAzapiResource framework.
9
+ *
10
+ * Azure SRE Agent provides AI-powered Site Reliability Engineering agents
11
+ * that can be configured with knowledge graphs, actions, incident
12
+ * management integration and a default AI model.
13
+ *
14
+ * Supported API Versions:
15
+ * - 2026-01-01 (Active, Latest, Stable)
16
+ *
17
+ * Reference:
18
+ * https://github.com/Azure/azure-rest-api-specs/tree/main/specification/app/resource-manager/Microsoft.App/SreAgent
19
+ */
20
+ const cdktf = require("cdktf");
21
+ const sre_agent_schemas_1 = require("./sre-agent-schemas");
22
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
23
+ /**
24
+ * Azure SRE Agent (Microsoft.App/agents) construct.
25
+ *
26
+ * @example
27
+ * // Basic SRE Agent
28
+ * const agent = new SreAgent(this, "sre-agent", {
29
+ * name: "my-sre-agent",
30
+ * location: "eastus",
31
+ * resourceGroupId: resourceGroup.id,
32
+ * identity: { type: "SystemAssigned" },
33
+ * agentIdentity: {
34
+ * initialSponsorGroupId: "00000000-0000-0000-0000-000000000000",
35
+ * },
36
+ * });
37
+ *
38
+ * @stability stable
39
+ */
40
+ class SreAgent extends azapi_resource_1.AzapiResource {
41
+ constructor(scope, id, props) {
42
+ super(scope, id, props);
43
+ this.props = props;
44
+ // Create Terraform outputs
45
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
46
+ value: this.id,
47
+ description: "The ID of the SRE Agent",
48
+ });
49
+ this.locationOutput = new cdktf.TerraformOutput(this, "location", {
50
+ value: `\${${this.terraformResource.fqn}.location}`,
51
+ description: "The location of the SRE Agent",
52
+ });
53
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
54
+ value: `\${${this.terraformResource.fqn}.name}`,
55
+ description: "The name of the SRE Agent",
56
+ });
57
+ this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
58
+ value: `\${${this.terraformResource.fqn}.tags}`,
59
+ description: "The tags assigned to the SRE Agent",
60
+ });
61
+ this.agentEndpointOutput = new cdktf.TerraformOutput(this, "agent_endpoint", {
62
+ value: `\${${this.terraformResource.fqn}.output.properties.agentEndpoint}`,
63
+ description: "The data plane endpoint of the SRE Agent",
64
+ });
65
+ this.provisioningStateOutput = new cdktf.TerraformOutput(this, "provisioning_state", {
66
+ value: `\${${this.terraformResource.fqn}.output.properties.provisioningState}`,
67
+ description: "The provisioning state of the SRE Agent",
68
+ });
69
+ this.powerStateOutput = new cdktf.TerraformOutput(this, "power_state", {
70
+ value: `\${${this.terraformResource.fqn}.output.properties.powerState}`,
71
+ description: "The power state of the SRE Agent (Running or Stopped)",
72
+ });
73
+ // Override logical IDs to keep output names consistent
74
+ this.idOutput.overrideLogicalId("id");
75
+ this.locationOutput.overrideLogicalId("location");
76
+ this.nameOutput.overrideLogicalId("name");
77
+ this.tagsOutput.overrideLogicalId("tags");
78
+ this.agentEndpointOutput.overrideLogicalId("agent_endpoint");
79
+ this.provisioningStateOutput.overrideLogicalId("provisioning_state");
80
+ this.powerStateOutput.overrideLogicalId("power_state");
81
+ this._applyIgnoreChanges();
82
+ }
83
+ // =============================================================================
84
+ // REQUIRED ABSTRACT METHODS
85
+ // =============================================================================
86
+ defaultVersion() {
87
+ return "2026-01-01";
88
+ }
89
+ resourceType() {
90
+ return sre_agent_schemas_1.SRE_AGENT_TYPE;
91
+ }
92
+ apiSchema() {
93
+ return this.resolveSchema();
94
+ }
95
+ requiresLocation() {
96
+ return true;
97
+ }
98
+ /**
99
+ * Disable AZAPI provider schema validation for this resource.
100
+ *
101
+ * The Azure SRE Agent resource type (`Microsoft.App/agents`) was introduced
102
+ * after the AZAPI provider version currently pinned by this repository and
103
+ * is therefore not yet present in the provider's embedded schema. Disabling
104
+ * schema validation lets the resource be applied against the live Azure API
105
+ * (which is the source of truth) without requiring a provider upgrade.
106
+ *
107
+ * `ignoreMissingProperty` is also enabled because the API returns a number
108
+ * of computed/read-only fields that aren't part of the request body.
109
+ */
110
+ customizeResourceConfig(config) {
111
+ return {
112
+ ...config,
113
+ schemaValidationEnabled: false,
114
+ ignoreMissingProperty: true,
115
+ };
116
+ }
117
+ /**
118
+ * Build the resource body for the Microsoft.App/agents Azure REST API.
119
+ */
120
+ createResourceBody(props) {
121
+ const typedProps = props;
122
+ const properties = {};
123
+ if (typedProps.agentSpaceId !== undefined) {
124
+ properties.agentSpaceId = typedProps.agentSpaceId;
125
+ }
126
+ if (typedProps.agentIdentity !== undefined) {
127
+ properties.agentIdentity = typedProps.agentIdentity;
128
+ }
129
+ if (typedProps.defaultModel !== undefined) {
130
+ properties.defaultModel = typedProps.defaultModel;
131
+ }
132
+ if (typedProps.knowledgeGraphConfiguration !== undefined) {
133
+ properties.knowledgeGraphConfiguration =
134
+ typedProps.knowledgeGraphConfiguration;
135
+ }
136
+ if (typedProps.actionConfiguration !== undefined) {
137
+ properties.actionConfiguration = typedProps.actionConfiguration;
138
+ }
139
+ if (typedProps.logConfiguration !== undefined) {
140
+ properties.logConfiguration = typedProps.logConfiguration;
141
+ }
142
+ if (typedProps.incidentManagementConfiguration !== undefined) {
143
+ properties.incidentManagementConfiguration =
144
+ typedProps.incidentManagementConfiguration;
145
+ }
146
+ if (typedProps.upgradeChannel !== undefined) {
147
+ properties.upgradeChannel = typedProps.upgradeChannel;
148
+ }
149
+ const body = {
150
+ location: this.location,
151
+ tags: this.allTags(),
152
+ identity: typedProps.identity,
153
+ properties: Object.keys(properties).length > 0 ? properties : undefined,
154
+ };
155
+ return body;
156
+ }
157
+ // =============================================================================
158
+ // PUBLIC READ-ONLY OUTPUTS
159
+ // =============================================================================
160
+ /**
161
+ * The data plane endpoint of the SRE Agent (populated after creation).
162
+ */
163
+ get agentEndpoint() {
164
+ return `\${${this.terraformResource.fqn}.output.properties.agentEndpoint}`;
165
+ }
166
+ /**
167
+ * The provisioning state of the SRE Agent (populated after creation).
168
+ */
169
+ get provisioningState() {
170
+ return `\${${this.terraformResource.fqn}.output.properties.provisioningState}`;
171
+ }
172
+ /**
173
+ * The power state of the SRE Agent (populated after creation).
174
+ */
175
+ get powerState() {
176
+ return `\${${this.terraformResource.fqn}.output.properties.powerState}`;
177
+ }
178
+ // =============================================================================
179
+ // TAG MANAGEMENT
180
+ // =============================================================================
181
+ /**
182
+ * Add a tag to the SRE Agent.
183
+ */
184
+ addSreAgentTag(key, value) {
185
+ if (!this.props.tags) {
186
+ this.props.tags = {};
187
+ }
188
+ this.props.tags[key] = value;
189
+ }
190
+ /**
191
+ * Remove a tag from the SRE Agent.
192
+ */
193
+ removeSreAgentTag(key) {
194
+ if (this.props.tags && this.props.tags[key]) {
195
+ delete this.props.tags[key];
196
+ }
197
+ }
198
+ // =============================================================================
199
+ // PRIVATE HELPERS
200
+ // =============================================================================
201
+ _applyIgnoreChanges() {
202
+ if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
203
+ this.terraformResource.addOverride("lifecycle", [
204
+ {
205
+ ignore_changes: this.props.ignoreChanges,
206
+ },
207
+ ]);
208
+ }
209
+ }
210
+ }
211
+ exports.SreAgent = SreAgent;
212
+ _a = JSII_RTTI_SYMBOL_1;
213
+ SreAgent[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SreAgent", version: "1.10.0" };
214
+ (() => {
215
+ azapi_resource_1.AzapiResource.registerSchemas(sre_agent_schemas_1.SRE_AGENT_TYPE, sre_agent_schemas_1.ALL_SRE_AGENT_VERSIONS);
216
+ })();
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JlLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXNyZWFnZW50L2xpYi9zcmUtYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsK0JBQStCO0FBRS9CLDJEQUE2RTtBQUM3RSw4RUFHbUQ7QUF1SG5EOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsOEJBQWE7SUFtQnpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLHlCQUF5QjtTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFlBQVk7WUFDbkQsV0FBVyxFQUFFLCtCQUErQjtTQUM3QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLDJCQUEyQjtTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUs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OUM7b0JBQ0UsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtpQkFDekM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFoT0gsNEJBaU9DOzs7QUFoT0M7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FBQyxrQ0FBYyxFQUFFLDBDQUFzQixDQUFDLENBQUM7QUFDeEUsQ0FBQyxHQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF6dXJlIFNSRSBBZ2VudCAoTWljcm9zb2Z0LkFwcC9hZ2VudHMpIGNvbnN0cnVjdCB1c2luZyB0aGVcbiAqIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrLlxuICpcbiAqIEF6dXJlIFNSRSBBZ2VudCBwcm92aWRlcyBBSS1wb3dlcmVkIFNpdGUgUmVsaWFiaWxpdHkgRW5naW5lZXJpbmcgYWdlbnRzXG4gKiB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdpdGgga25vd2xlZGdlIGdyYXBocywgYWN0aW9ucywgaW5jaWRlbnRcbiAqIG1hbmFnZW1lbnQgaW50ZWdyYXRpb24gYW5kIGEgZGVmYXVsdCBBSSBtb2RlbC5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDI2LTAxLTAxIChBY3RpdmUsIExhdGVzdCwgU3RhYmxlKVxuICpcbiAqIFJlZmVyZW5jZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9henVyZS1yZXN0LWFwaS1zcGVjcy90cmVlL21haW4vc3BlY2lmaWNhdGlvbi9hcHAvcmVzb3VyY2UtbWFuYWdlci9NaWNyb3NvZnQuQXBwL1NyZUFnZW50XG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQUxMX1NSRV9BR0VOVF9WRVJTSU9OUywgU1JFX0FHRU5UX1RZUEUgfSBmcm9tIFwiLi9zcmUtYWdlbnQtc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgQXphcGlSZXNvdXJjZSxcbiAgQXphcGlSZXNvdXJjZVByb3BzLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmltcG9ydCB7IEFwaVNjaGVtYSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLyoqXG4gKiBNYW5hZ2VkIFNlcnZpY2UgSWRlbnRpdHkgY29uZmlndXJhdGlvbiBmb3IgdGhlIFNSRSBBZ2VudC5cbiAqXG4gKiBNaXJyb3JzIHRoZSBNYW5hZ2VkU2VydmljZUlkZW50aXR5IHNoYXBlIHVzZWQgYnkgQXp1cmUgQVJNIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcmVBZ2VudE1hbmFnZWRJZGVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBtYW5hZ2VkIHNlcnZpY2UgaWRlbnRpdHkuXG4gICAqXG4gICAqIEFsbG93ZWQgdmFsdWVzOiBcIk5vbmVcIiwgXCJTeXN0ZW1Bc3NpZ25lZFwiLCBcIlVzZXJBc3NpZ25lZFwiLFxuICAgKiBcIlN5c3RlbUFzc2lnbmVkLFVzZXJBc3NpZ25lZFwiLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXQgb2YgdXNlciBhc3NpZ25lZCBpZGVudGl0aWVzLCBrZXllZCBieSB0aGVpciBBUk0gcmVzb3VyY2UgSURzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFzc2lnbmVkSWRlbnRpdGllcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogQWdlbnQgaWRlbnRpdHkgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBVc2VkIGJ5IHRoZSBTUkUgQWdlbnQgcnVudGltZSB0byBvYnRhaW4gY3JlZGVudGlhbHMgZm9yIGFjY2Vzc2luZ1xuICogZXh0ZXJuYWwgc3lzdGVtcyBvbiBiZWhhbGYgb2YgdGhlIGFnZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNyZUFnZW50SWRlbnRpdHkge1xuICAvKipcbiAgICogSW5pdGlhbCBzcG9uc29yIGdyb3VwIElEIChyZXF1aXJlZCBieSB0aGUgQXp1cmUgQVBJKVxuICAgKi9cbiAgcmVhZG9ubHkgaW5pdGlhbFNwb25zb3JHcm91cElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIEF6dXJlIFNSRSBBZ2VudCBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcmVBZ2VudFByb3BzIGV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk0gcmVzb3VyY2UgSUQgb2YgdGhlIHBhcmVudCByZXNvdXJjZSBncm91cC5cbiAgICpcbiAgICogSWYgb21pdHRlZCwgdGhlIHJlc291cmNlIHdpbGwgYmUgc2NvcGVkIHRvIHRoZSBzdWJzY3JpcHRpb24sIHdoaWNoXG4gICAqIGlzIHR5cGljYWxseSBub3QgdmFsaWQgZm9yIHRyYWNrZWQgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJNIHJlc291cmNlIElEIG9mIHRoZSBBZ2VudCBTcGFjZSAoTWljcm9zb2Z0LkFwcC9hZ2VudFNwYWNlcylcbiAgICogdGhhdCB0aGlzIEFnZW50IGJlbG9uZ3MgdG8uIE9wdGlvbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRTcGFjZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYW5hZ2VkIHNlcnZpY2UgaWRlbnRpdHkgY29uZmlndXJhdGlvbiBhc3NpZ25lZCB0byB0aGUgU1JFIEFnZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBTcmVBZ2VudE1hbmFnZWRJZGVudGl0eTtcblxuICAvKipcbiAgICogQWdlbnQgaWRlbnRpdHkgY29uZmlndXJhdGlvbiB1c2VkIGJ5IHRoZSBTUkUgQWdlbnQgcnVudGltZSB0b1xuICAgKiBhY2Nlc3MgZXh0ZXJuYWwgc3lzdGVtcy5cbiAgICovXG4gIHJlYWRvbmx5IGFnZW50SWRlbnRpdHk/OiBTcmVBZ2VudElkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IEFJIG1vZGVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTUkUgQWdlbnQuXG4gICAqXG4gICAqIEZyZWUtZm9ybSBvYmplY3QgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBBenVyZSBSRVNUIEFQSS4gRmllbGRzIHZhcnlcbiAgICogZGVwZW5kaW5nIG9uIHRoZSBjaG9zZW4gbW9kZWwgcHJvdmlkZXIgKGUuZy4gbW9kZWwgbmFtZSwgZGVwbG95bWVudFxuICAgKiBuYW1lLCBlbmRwb2ludCkuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0TW9kZWw/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBLbm93bGVkZ2UgZ3JhcGggY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGtub3dsZWRnZUdyYXBoQ29uZmlndXJhdGlvbj86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIEFjdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uQ29uZmlndXJhdGlvbj86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIExvZyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nQ29uZmlndXJhdGlvbj86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIEluY2lkZW50IG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGluY2lkZW50TWFuYWdlbWVudENvbmZpZ3VyYXRpb24/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBVcGdyYWRlIGNoYW5uZWwgZm9yIHRoZSBTUkUgQWdlbnQuXG4gICAqL1xuICByZWFkb25seSB1cGdyYWRlQ2hhbm5lbD86IHN0cmluZztcblxuICAvKipcbiAgICogTGlmZWN5Y2xlIGlnbm9yZV9jaGFuZ2VzIHJ1bGVzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBbXCJ0YWdzXCJdXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDaGFuZ2VzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVzb3VyY2UgYm9keSBmb3IgQXp1cmUgU1JFIEFnZW50IEFQSSBjYWxscy5cbiAqXG4gKiBNYXRjaGVzIHRoZSBNaWNyb3NvZnQuQXBwL2FnZW50cyBBenVyZSBSRVNUIEFQSSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3JlQWdlbnRCb2R5IHtcbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IGlkZW50aXR5PzogU3JlQWdlbnRNYW5hZ2VkSWRlbnRpdHk7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIEF6dXJlIFNSRSBBZ2VudCAoTWljcm9zb2Z0LkFwcC9hZ2VudHMpIGNvbnN0cnVjdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgU1JFIEFnZW50XG4gKiBjb25zdCBhZ2VudCA9IG5ldyBTcmVBZ2VudCh0aGlzLCBcInNyZS1hZ2VudFwiLCB7XG4gKiAgIG5hbWU6IFwibXktc3JlLWFnZW50XCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGlkZW50aXR5OiB7IHR5cGU6IFwiU3lzdGVtQXNzaWduZWRcIiB9LFxuICogICBhZ2VudElkZW50aXR5OiB7XG4gKiAgICAgaW5pdGlhbFNwb25zb3JHcm91cElkOiBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICogICB9LFxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFNyZUFnZW50IGV4dGVuZHMgQXphcGlSZXNvdXJjZSB7XG4gIHN0YXRpYyB7XG4gICAgQXphcGlSZXNvdXJjZS5yZWdpc3RlclNjaGVtYXMoU1JFX0FHRU5UX1RZUEUsIEFMTF9TUkVfQUdFTlRfVkVSU0lPTlMpO1xuICB9XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnRpZXMgZm9yIHRoaXMgU1JFIEFnZW50IGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBTcmVBZ2VudFByb3BzO1xuXG4gIC8vIE91dHB1dCBwcm9wZXJ0aWVzIGZvciBlYXN5IGFjY2VzcyBhbmQgcmVmZXJlbmNpbmdcbiAgcHVibGljIHJlYWRvbmx5IGlkT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhdGlvbk91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZU91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgdGFnc091dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRFbmRwb2ludE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHBvd2VyU3RhdGVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3JlQWdlbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgLy8gQ3JlYXRlIFRlcnJhZm9ybSBvdXRwdXRzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgU1JFIEFnZW50XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImxvY2F0aW9uXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LmxvY2F0aW9ufWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbG9jYXRpb24gb2YgdGhlIFNSRSBBZ2VudFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcIm5hbWVcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubmFtZX1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIG5hbWUgb2YgdGhlIFNSRSBBZ2VudFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWdzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcInRhZ3NcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0udGFnc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHRhZ3MgYXNzaWduZWQgdG8gdGhlIFNSRSBBZ2VudFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZ2VudEVuZHBvaW50T3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBcImFnZW50X2VuZHBvaW50XCIsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLmFnZW50RW5kcG9pbnR9YCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGRhdGEgcGxhbmUgZW5kcG9pbnQgb2YgdGhlIFNSRSBBZ2VudFwiLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5wcm92aXNpb25pbmdTdGF0ZU91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJwcm92aXNpb25pbmdfc3RhdGVcIixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMucHJvdmlzaW9uaW5nU3RhdGV9YCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHByb3Zpc2lvbmluZyBzdGF0ZSBvZiB0aGUgU1JFIEFnZW50XCIsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnBvd2VyU3RhdGVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwicG93ZXJfc3RhdGVcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMucG93ZXJTdGF0ZX1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHBvd2VyIHN0YXRlIG9mIHRoZSBTUkUgQWdlbnQgKFJ1bm5pbmcgb3IgU3RvcHBlZClcIixcbiAgICB9KTtcblxuICAgIC8vIE92ZXJyaWRlIGxvZ2ljYWwgSURzIHRvIGtlZXAgb3V0cHV0IG5hbWVzIGNvbnNpc3RlbnRcbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImxvY2F0aW9uXCIpO1xuICAgIHRoaXMubmFtZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcIm5hbWVcIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcbiAgICB0aGlzLmFnZW50RW5kcG9pbnRPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJhZ2VudF9lbmRwb2ludFwiKTtcbiAgICB0aGlzLnByb3Zpc2lvbmluZ1N0YXRlT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwicHJvdmlzaW9uaW5nX3N0YXRlXCIpO1xuICAgIHRoaXMucG93ZXJTdGF0ZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcInBvd2VyX3N0YXRlXCIpO1xuXG4gICAgdGhpcy5fYXBwbHlJZ25vcmVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSRVFVSVJFRCBBQlNUUkFDVCBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiMjAyNi0wMS0wMVwiO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc291cmNlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTUkVfQUdFTlRfVFlQRTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVxdWlyZXNMb2NhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIEFaQVBJIHByb3ZpZGVyIHNjaGVtYSB2YWxpZGF0aW9uIGZvciB0aGlzIHJlc291cmNlLlxuICAgKlxuICAgKiBUaGUgQXp1cmUgU1JFIEFnZW50IHJlc291cmNlIHR5cGUgKGBNaWNyb3NvZnQuQXBwL2FnZW50c2ApIHdhcyBpbnRyb2R1Y2VkXG4gICAqIGFmdGVyIHRoZSBBWkFQSSBwcm92aWRlciB2ZXJzaW9uIGN1cnJlbnRseSBwaW5uZWQgYnkgdGhpcyByZXBvc2l0b3J5IGFuZFxuICAgKiBpcyB0aGVyZWZvcmUgbm90IHlldCBwcmVzZW50IGluIHRoZSBwcm92aWRlcidzIGVtYmVkZGVkIHNjaGVtYS4gRGlzYWJsaW5nXG4gICAqIHNjaGVtYSB2YWxpZGF0aW9uIGxldHMgdGhlIHJlc291cmNlIGJlIGFwcGxpZWQgYWdhaW5zdCB0aGUgbGl2ZSBBenVyZSBBUElcbiAgICogKHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGgpIHdpdGhvdXQgcmVxdWlyaW5nIGEgcHJvdmlkZXIgdXBncmFkZS5cbiAgICpcbiAgICogYGlnbm9yZU1pc3NpbmdQcm9wZXJ0eWAgaXMgYWxzbyBlbmFibGVkIGJlY2F1c2UgdGhlIEFQSSByZXR1cm5zIGEgbnVtYmVyXG4gICAqIG9mIGNvbXB1dGVkL3JlYWQtb25seSBmaWVsZHMgdGhhdCBhcmVuJ3QgcGFydCBvZiB0aGUgcmVxdWVzdCBib2R5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGN1c3RvbWl6ZVJlc291cmNlQ29uZmlnKGNvbmZpZzogYW55KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgc2NoZW1hVmFsaWRhdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgICAgaWdub3JlTWlzc2luZ1Byb3BlcnR5OiB0cnVlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIHJlc291cmNlIGJvZHkgZm9yIHRoZSBNaWNyb3NvZnQuQXBwL2FnZW50cyBBenVyZSBSRVNUIEFQSS5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIFNyZUFnZW50UHJvcHM7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgaWYgKHR5cGVkUHJvcHMuYWdlbnRTcGFjZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMuYWdlbnRTcGFjZUlkID0gdHlwZWRQcm9wcy5hZ2VudFNwYWNlSWQ7XG4gICAgfVxuICAgIGlmICh0eXBlZFByb3BzLmFnZW50SWRlbnRpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcGVydGllcy5hZ2VudElkZW50aXR5ID0gdHlwZWRQcm9wcy5hZ2VudElkZW50aXR5O1xuICAgIH1cbiAgICBpZiAodHlwZWRQcm9wcy5kZWZhdWx0TW9kZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcGVydGllcy5kZWZhdWx0TW9kZWwgPSB0eXBlZFByb3BzLmRlZmF1bHRNb2RlbDtcbiAgICB9XG4gICAgaWYgKHR5cGVkUHJvcHMua25vd2xlZGdlR3JhcGhDb25maWd1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMua25vd2xlZGdlR3JhcGhDb25maWd1cmF0aW9uID1cbiAgICAgICAgdHlwZWRQcm9wcy5rbm93bGVkZ2VHcmFwaENvbmZpZ3VyYXRpb247XG4gICAgfVxuICAgIGlmICh0eXBlZFByb3BzLmFjdGlvbkNvbmZpZ3VyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcGVydGllcy5hY3Rpb25Db25maWd1cmF0aW9uID0gdHlwZWRQcm9wcy5hY3Rpb25Db25maWd1cmF0aW9uO1xuICAgIH1cbiAgICBpZiAodHlwZWRQcm9wcy5sb2dDb25maWd1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMubG9nQ29uZmlndXJhdGlvbiA9IHR5cGVkUHJvcHMubG9nQ29uZmlndXJhdGlvbjtcbiAgICB9XG4gICAgaWYgKHR5cGVkUHJvcHMuaW5jaWRlbnRNYW5hZ2VtZW50Q29uZmlndXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0aWVzLmluY2lkZW50TWFuYWdlbWVudENvbmZpZ3VyYXRpb24gPVxuICAgICAgICB0eXBlZFByb3BzLmluY2lkZW50TWFuYWdlbWVudENvbmZpZ3VyYXRpb247XG4gICAgfVxuICAgIGlmICh0eXBlZFByb3BzLnVwZ3JhZGVDaGFubmVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3BlcnRpZXMudXBncmFkZUNoYW5uZWwgPSB0eXBlZFByb3BzLnVwZ3JhZGVDaGFubmVsO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHk6IFNyZUFnZW50Qm9keSA9IHtcbiAgICAgIGxvY2F0aW9uOiB0aGlzLmxvY2F0aW9uISxcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgaWRlbnRpdHk6IHR5cGVkUHJvcHMuaWRlbnRpdHksXG4gICAgICBwcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5sZW5ndGggPiAwID8gcHJvcGVydGllcyA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgUkVBRC1PTkxZIE9VVFBVVFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogVGhlIGRhdGEgcGxhbmUgZW5kcG9pbnQgb2YgdGhlIFNSRSBBZ2VudCAocG9wdWxhdGVkIGFmdGVyIGNyZWF0aW9uKS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWdlbnRFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLmFnZW50RW5kcG9pbnR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcHJvdmlzaW9uaW5nIHN0YXRlIG9mIHRoZSBTUkUgQWdlbnQgKHBvcHVsYXRlZCBhZnRlciBjcmVhdGlvbikuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByb3Zpc2lvbmluZ1N0YXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMucHJvdmlzaW9uaW5nU3RhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcG93ZXIgc3RhdGUgb2YgdGhlIFNSRSBBZ2VudCAocG9wdWxhdGVkIGFmdGVyIGNyZWF0aW9uKS5cbiAgICovXG4gIHB1YmxpYyBnZXQgcG93ZXJTdGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLnBvd2VyU3RhdGV9YDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFRBRyBNQU5BR0VNRU5UXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhZyB0byB0aGUgU1JFIEFnZW50LlxuICAgKi9cbiAgcHVibGljIGFkZFNyZUFnZW50VGFnKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnRhZ3MpIHtcbiAgICAgICh0aGlzLnByb3BzIGFzIGFueSkudGFncyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3BzLnRhZ3MhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0YWcgZnJvbSB0aGUgU1JFIEFnZW50LlxuICAgKi9cbiAgcHVibGljIHJlbW92ZVNyZUFnZW50VGFnKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMudGFncyAmJiB0aGlzLnByb3BzLnRhZ3Nba2V5XSkge1xuICAgICAgZGVsZXRlIHRoaXMucHJvcHMudGFnc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Integration test for Azure SRE Agent (Microsoft.App/agents)
3
+ *
4
+ * Validates deployment, idempotency, and cleanup of an SRE Agent inside
5
+ * a freshly-created resource group.
6
+ *
7
+ * Run with: npm run integration:nostream
8
+ */
9
+ import "cdktf/lib/testing/adapters/jest";
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /**
3
+ * Integration test for Azure SRE Agent (Microsoft.App/agents)
4
+ *
5
+ * Validates deployment, idempotency, and cleanup of an SRE Agent inside
6
+ * a freshly-created resource group.
7
+ *
8
+ * Run with: npm run integration:nostream
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const cdktf_1 = require("cdktf");
12
+ require("cdktf/lib/testing/adapters/jest");
13
+ const resource_group_1 = require("../../azure-resourcegroup/lib/resource-group");
14
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
15
+ const testing_1 = require("../../testing");
16
+ const metadata_1 = require("../../testing/lib/metadata");
17
+ const sre_agent_1 = require("../lib/sre-agent");
18
+ // Generate unique test run metadata for this test suite
19
+ const testMetadata = new metadata_1.TestRunMetadata("sreagent-integration", {
20
+ maxAgeHours: 4,
21
+ });
22
+ /**
23
+ * Example stack demonstrating SRE Agent usage.
24
+ */
25
+ class SreAgentExampleStack extends testing_1.BaseTestStack {
26
+ constructor(scope, id) {
27
+ super(scope, id, {
28
+ testRunOptions: {
29
+ maxAgeHours: testMetadata.maxAgeHours,
30
+ autoCleanup: testMetadata.autoCleanup,
31
+ cleanupPolicy: testMetadata.cleanupPolicy,
32
+ },
33
+ });
34
+ new provider_1.AzapiProvider(this, "azapi", {});
35
+ const resourceGroupName = this.generateResourceName("Microsoft.Resources/resourceGroups", "sreagent");
36
+ const agentName = this.generateResourceName("Microsoft.App/agents", "sreagent");
37
+ const resourceGroup = new resource_group_1.ResourceGroup(this, "test-rg", {
38
+ name: resourceGroupName,
39
+ location: "eastus2",
40
+ tags: {
41
+ ...this.systemTags(),
42
+ purpose: "sre-agent-testing",
43
+ },
44
+ });
45
+ // NOTE: initialSponsorGroupId must be a valid Azure AD object id for the
46
+ // deployment to succeed. In integration scenarios this should be supplied
47
+ // through the testing environment (e.g. an env var). The placeholder GUID
48
+ // below is sufficient for synthesis and plan validation.
49
+ new sre_agent_1.SreAgent(this, "sre-agent", {
50
+ name: agentName,
51
+ location: "eastus2",
52
+ resourceGroupId: resourceGroup.id,
53
+ identity: { type: "SystemAssigned" },
54
+ agentIdentity: {
55
+ initialSponsorGroupId: process.env.SRE_AGENT_SPONSOR_GROUP_ID ||
56
+ "00000000-0000-0000-0000-000000000000",
57
+ },
58
+ upgradeChannel: "Stable",
59
+ tags: {
60
+ ...this.systemTags(),
61
+ example: "complete",
62
+ environment: "test",
63
+ },
64
+ });
65
+ }
66
+ }
67
+ describe("SreAgent Integration Test", () => {
68
+ it("should deploy the SRE Agent, validate idempotency, and cleanup", () => {
69
+ const app = cdktf_1.Testing.app();
70
+ const stack = new SreAgentExampleStack(app, "test-sreagent");
71
+ const synthesized = cdktf_1.Testing.fullSynth(stack);
72
+ // 1. Run terraform apply to deploy the SRE Agent
73
+ // 2. Run terraform plan to check idempotency (no changes expected)
74
+ // 3. Run terraform destroy to cleanup resources
75
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
76
+ }, 600000);
77
+ });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JlLWFnZW50LmludGVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXNyZWFnZW50L3Rlc3Qvc3JlLWFnZW50LmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQUVILGlDQUFnQztBQUVoQywyQ0FBeUM7QUFDekMsaUZBQTZFO0FBQzdFLGtGQUFvRjtBQUNwRiwyQ0FBNkU7QUFDN0UseURBQTZEO0FBQzdELGdEQUE0QztBQUU1Qyx3REFBd0Q7QUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBZSxDQUFDLHNCQUFzQixFQUFFO0lBQy9ELFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLG9CQUFxQixTQUFRLHVCQUFhO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsY0FBYyxFQUFFO2dCQUNkLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxhQUFhLEVBQUUsWUFBWSxDQUFDLGFBQWE7YUFDMUM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLHdCQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVyQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDakQsb0NBQW9DLEVBQ3BDLFVBQVUsQ0FDWCxDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN6QyxzQkFBc0IsRUFDdEIsVUFBVSxDQUNYLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLDhCQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN2RCxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLFFBQVEsRUFBRSxTQUFTO1lBQ25CLElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxtQkFBbUI7YUFDN0I7U0FDRixDQUFDLENBQUM7UUFFSCx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLDBFQUEwRTtRQUMxRSx5REFBeUQ7UUFDekQsSUFBSSxvQkFBUSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDOUIsSUFBSSxFQUFFLFNBQVM7WUFDZixRQUFRLEVBQUUsU0FBUztZQUNuQixlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BDLGFBQWEsRUFBRTtnQkFDYixxQkFBcUIsRUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEI7b0JBQ3RDLHNDQUFzQzthQUN6QztZQUNELGNBQWMsRUFBRSxRQUFRO1lBQ3hCLElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixXQUFXLEVBQUUsTUFBTTthQUNwQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDekMsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsRUFBRTtRQUN4RSxNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxpREFBaUQ7UUFDakQsbUVBQW1FO1FBQ25FLGdEQUFnRDtRQUNoRCxJQUFBLHVDQUE2QixFQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNiLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnRlZ3JhdGlvbiB0ZXN0IGZvciBBenVyZSBTUkUgQWdlbnQgKE1pY3Jvc29mdC5BcHAvYWdlbnRzKVxuICpcbiAqIFZhbGlkYXRlcyBkZXBsb3ltZW50LCBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgb2YgYW4gU1JFIEFnZW50IGluc2lkZVxuICogYSBmcmVzaGx5LWNyZWF0ZWQgcmVzb3VyY2UgZ3JvdXAuXG4gKlxuICogUnVuIHdpdGg6IG5wbSBydW4gaW50ZWdyYXRpb246bm9zdHJlYW1cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCIuLi8uLi9henVyZS1yZXNvdXJjZWdyb3VwL2xpYi9yZXNvdXJjZS1ncm91cFwiO1xuaW1wb3J0IHsgQXphcGlQcm92aWRlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9wcm92aWRlcnMtYXphcGkvcHJvdmlkZXJcIjtcbmltcG9ydCB7IEJhc2VUZXN0U3RhY2ssIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95IH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmdcIjtcbmltcG9ydCB7IFRlc3RSdW5NZXRhZGF0YSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nL2xpYi9tZXRhZGF0YVwiO1xuaW1wb3J0IHsgU3JlQWdlbnQgfSBmcm9tIFwiLi4vbGliL3NyZS1hZ2VudFwiO1xuXG4vLyBHZW5lcmF0ZSB1bmlxdWUgdGVzdCBydW4gbWV0YWRhdGEgZm9yIHRoaXMgdGVzdCBzdWl0ZVxuY29uc3QgdGVzdE1ldGFkYXRhID0gbmV3IFRlc3RSdW5NZXRhZGF0YShcInNyZWFnZW50LWludGVncmF0aW9uXCIsIHtcbiAgbWF4QWdlSG91cnM6IDQsXG59KTtcblxuLyoqXG4gKiBFeGFtcGxlIHN0YWNrIGRlbW9uc3RyYXRpbmcgU1JFIEFnZW50IHVzYWdlLlxuICovXG5jbGFzcyBTcmVBZ2VudEV4YW1wbGVTdGFjayBleHRlbmRzIEJhc2VUZXN0U3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXN0UnVuT3B0aW9uczoge1xuICAgICAgICBtYXhBZ2VIb3VyczogdGVzdE1ldGFkYXRhLm1heEFnZUhvdXJzLFxuICAgICAgICBhdXRvQ2xlYW51cDogdGVzdE1ldGFkYXRhLmF1dG9DbGVhbnVwLFxuICAgICAgICBjbGVhbnVwUG9saWN5OiB0ZXN0TWV0YWRhdGEuY2xlYW51cFBvbGljeSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgQXphcGlQcm92aWRlcih0aGlzLCBcImF6YXBpXCIsIHt9KTtcblxuICAgIGNvbnN0IHJlc291cmNlR3JvdXBOYW1lID0gdGhpcy5nZW5lcmF0ZVJlc291cmNlTmFtZShcbiAgICAgIFwiTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3Vwc1wiLFxuICAgICAgXCJzcmVhZ2VudFwiLFxuICAgICk7XG4gICAgY29uc3QgYWdlbnROYW1lID0gdGhpcy5nZW5lcmF0ZVJlc291cmNlTmFtZShcbiAgICAgIFwiTWljcm9zb2Z0LkFwcC9hZ2VudHNcIixcbiAgICAgIFwic3JlYWdlbnRcIixcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsIFwidGVzdC1yZ1wiLCB7XG4gICAgICBuYW1lOiByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1czJcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwic3JlLWFnZW50LXRlc3RpbmdcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBOT1RFOiBpbml0aWFsU3BvbnNvckdyb3VwSWQgbXVzdCBiZSBhIHZhbGlkIEF6dXJlIEFEIG9iamVjdCBpZCBmb3IgdGhlXG4gICAgLy8gZGVwbG95bWVudCB0byBzdWNjZWVkLiBJbiBpbnRlZ3JhdGlvbiBzY2VuYXJpb3MgdGhpcyBzaG91bGQgYmUgc3VwcGxpZWRcbiAgICAvLyB0aHJvdWdoIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50IChlLmcuIGFuIGVudiB2YXIpLiBUaGUgcGxhY2Vob2xkZXIgR1VJRFxuICAgIC8vIGJlbG93IGlzIHN1ZmZpY2llbnQgZm9yIHN5bnRoZXNpcyBhbmQgcGxhbiB2YWxpZGF0aW9uLlxuICAgIG5ldyBTcmVBZ2VudCh0aGlzLCBcInNyZS1hZ2VudFwiLCB7XG4gICAgICBuYW1lOiBhZ2VudE5hbWUsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXMyXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICBpZGVudGl0eTogeyB0eXBlOiBcIlN5c3RlbUFzc2lnbmVkXCIgfSxcbiAgICAgIGFnZW50SWRlbnRpdHk6IHtcbiAgICAgICAgaW5pdGlhbFNwb25zb3JHcm91cElkOlxuICAgICAgICAgIHByb2Nlc3MuZW52LlNSRV9BR0VOVF9TUE9OU09SX0dST1VQX0lEIHx8XG4gICAgICAgICAgXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0sXG4gICAgICB1cGdyYWRlQ2hhbm5lbDogXCJTdGFibGVcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIGV4YW1wbGU6IFwiY29tcGxldGVcIixcbiAgICAgICAgZW52aXJvbm1lbnQ6IFwidGVzdFwiLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5kZXNjcmliZShcIlNyZUFnZW50IEludGVncmF0aW9uIFRlc3RcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBkZXBsb3kgdGhlIFNSRSBBZ2VudCwgdmFsaWRhdGUgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFNyZUFnZW50RXhhbXBsZVN0YWNrKGFwcCwgXCJ0ZXN0LXNyZWFnZW50XCIpO1xuICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spO1xuXG4gICAgLy8gMS4gUnVuIHRlcnJhZm9ybSBhcHBseSB0byBkZXBsb3kgdGhlIFNSRSBBZ2VudFxuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXNcbiAgICBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveShzeW50aGVzaXplZCwgeyB2ZXJpZnlDbGVhbnVwOiB0cnVlIH0pO1xuICB9LCA2MDAwMDApO1xufSk7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Unit tests for the Azure SRE Agent (Microsoft.App/agents) construct.
3
+ */
4
+ export {};