@drunk-pulumi/azure-components 1.1.1 → 1.1.2

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.
@@ -4,6 +4,7 @@ import * as pulumi from '@pulumi/pulumi';
4
4
  import * as types from '../types';
5
5
  import { AppRegistration } from '../azAd';
6
6
  import { BaseResourceComponent, CommonBaseArgs } from '../base';
7
+ import { ArgoCDExtensionArgs } from './helpers';
7
8
  type AgentPoolProfile = inputs.containerservice.ManagedClusterAgentPoolProfileArgs & {
8
9
  vmSize: pulumi.Input<string>;
9
10
  vnetSubnetID: pulumi.Input<string>;
@@ -29,12 +30,16 @@ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEn
29
30
  agentPoolProfiles: AgentPoolProfile[];
30
31
  extraAgentPoolProfiles?: AgentPoolProfile[];
31
32
  attachToAcr?: types.ResourceInputs;
33
+ extensions?: {
34
+ argoCd?: Omit<ArgoCDExtensionArgs, 'aks' | 'groupRoles' | 'identity' | 'rsGroup'>;
35
+ };
32
36
  features: {
33
37
  enablePrivateCluster: boolean;
34
38
  enablePrivateClusterPublicFQDN?: boolean;
35
39
  enableVerticalPodAutoscaler?: boolean;
36
40
  /** KEDA (Kubernetes Event-driven Autoscaling) settings for the workload auto-scaler profile. */
37
41
  enableKeda?: boolean;
42
+ /** Enable workload identity and OIDC issuer for the AKS cluster */
38
43
  enableWorkloadIdentity?: boolean;
39
44
  enablePodIdentity?: boolean;
40
45
  enableAzurePolicy?: boolean;
@@ -66,6 +71,7 @@ export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs
66
71
  readonly keyVaultSecretProviderIdentity?: types.IdentityOutputs;
67
72
  readonly kubeletIdentity?: types.IdentityOutputs;
68
73
  readonly systemIdentityId?: pulumi.Output<string>;
74
+ readonly oidcIssuerUrl?: pulumi.Output<string>;
69
75
  constructor(name: string, args: AzKubernetesArgs, opts?: pulumi.ComponentResourceOptions);
70
76
  getOutputs(): {
71
77
  id: pulumi.Output<string>;
@@ -84,6 +90,7 @@ export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs
84
90
  keyVaultSecretProviderIdentity: types.AsOutput<types.IdentityType> | undefined;
85
91
  kubeletIdentity: types.AsOutput<types.IdentityType> | undefined;
86
92
  systemIdentityId: pulumi.Output<string> | undefined;
93
+ oidcIssuerUrl: pulumi.Output<string> | undefined;
87
94
  };
88
95
  private createIdentity;
89
96
  private createUserNameAndSshKeys;
@@ -92,6 +99,7 @@ export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs
92
99
  private createExtraAgentPoolProfiles;
93
100
  private createNameSpaces;
94
101
  private createMaintenance;
102
+ private createExtensions;
95
103
  private getExtraAksOutputs;
96
104
  private assignPermission;
97
105
  private getPrivateDNSZone;
@@ -75,12 +75,14 @@ class AzKubernetes extends base_1.BaseResourceComponent {
75
75
  keyVaultSecretProviderIdentity;
76
76
  kubeletIdentity;
77
77
  systemIdentityId;
78
+ oidcIssuerUrl;
78
79
  constructor(name, args, opts) {
79
80
  super('AzKubernetes', name, args, opts);
80
81
  const app = this.createIdentity();
81
82
  const cluster = this.createCluster(app);
82
83
  this.createExtraAgentPoolProfiles(cluster);
83
84
  this.createMaintenance(cluster);
85
+ this.createExtensions(cluster, app);
84
86
  const nss = this.createNameSpaces(cluster);
85
87
  this.namespaces = helpers_1.rsHelpers.dictReduce(nss, (n, ns) => ({
86
88
  id: ns.id,
@@ -101,6 +103,9 @@ class AzKubernetes extends base_1.BaseResourceComponent {
101
103
  }))
102
104
  : undefined;
103
105
  this.kubeletIdentity = this.getExtraAksOutputs(cluster);
106
+ this.oidcIssuerUrl = args.features?.enableWorkloadIdentity
107
+ ? cluster.oidcIssuerProfile.apply((o) => o?.issuerURL)
108
+ : undefined;
104
109
  this.assignPermission(cluster);
105
110
  this.registerOutputs();
106
111
  }
@@ -115,13 +120,18 @@ class AzKubernetes extends base_1.BaseResourceComponent {
115
120
  keyVaultSecretProviderIdentity: this.keyVaultSecretProviderIdentity,
116
121
  kubeletIdentity: this.kubeletIdentity,
117
122
  systemIdentityId: this.systemIdentityId,
123
+ oidcIssuerUrl: this.oidcIssuerUrl,
118
124
  };
119
125
  }
120
126
  createIdentity() {
121
127
  const { rsGroup, vaultInfo, groupRoles } = this.args;
122
128
  return new azAd_1.AppRegistration(`${this.name}-identity`, {
123
129
  vaultInfo,
124
- memberof: groupRoles ? [groupRoles.readOnly] : undefined,
130
+ //memberof: groupRoles ? [groupRoles.readOnly] : undefined,
131
+ servicePrincipal: {
132
+ appRoleAssignmentRequired: true,
133
+ assignedGroupIds: groupRoles ? [groupRoles.readOnly.objectId] : undefined,
134
+ },
125
135
  roleAssignments: [
126
136
  {
127
137
  scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
@@ -368,6 +378,18 @@ class AzKubernetes extends base_1.BaseResourceComponent {
368
378
  }, { dependsOn: aks, deletedWith: aks, deleteBeforeReplace: true, parent: this });
369
379
  return { default: defaultMaintenance, autoUpgrade: autoUpgradeMaintenance, nodeOS: nodeOSMaintenance };
370
380
  }
381
+ createExtensions(aks, identity) {
382
+ const { extensions, rsGroup, groupRoles } = this.args;
383
+ if (extensions?.argoCd && groupRoles) {
384
+ (0, helpers_2.createArgoCDExtension)(`${this.name}-argocd`, {
385
+ ...extensions.argoCd,
386
+ aks,
387
+ rsGroup,
388
+ groupRoles,
389
+ identity,
390
+ }, { parent: this, retainOnDelete: true });
391
+ }
392
+ }
371
393
  getExtraAksOutputs(aks) {
372
394
  const { rsGroup } = this.args;
373
395
  const aksInfo = (0, helpers_2.getAksClusterOutput)({ resourceGroupName: rsGroup.resourceGroupName, resourceName: aks.name });
@@ -378,24 +400,23 @@ class AzKubernetes extends base_1.BaseResourceComponent {
378
400
  }));
379
401
  }
380
402
  assignPermission(aks) {
381
- const { rsGroup, attachToAcr } = this.args;
403
+ const { attachToAcr } = this.args;
382
404
  if (attachToAcr && this.kubeletIdentity) {
383
405
  pulumi.output(this.kubeletIdentity).apply((p) => {
384
- new azAd_1.RoleAssignment(`${this.name}-aks-acr`, {
406
+ new azAd_1.RoleAssignment(`${this.name}-aks-acr-pull`, {
385
407
  principalId: p.objectId,
386
408
  principalType: 'ServicePrincipal',
387
409
  roleName: 'AcrPull',
388
410
  scope: attachToAcr.id,
389
411
  }, { dependsOn: aks, deletedWith: aks, parent: this });
412
+ new azAd_1.RoleAssignment(`${this.name}-aks-acr-read`, {
413
+ principalId: p.objectId,
414
+ principalType: 'ServicePrincipal',
415
+ roleName: 'Container Registry Repository Reader',
416
+ scope: attachToAcr.id,
417
+ }, { dependsOn: aks, deletedWith: aks, parent: this });
390
418
  });
391
419
  }
392
- //Allows AKS to have Contributor role on the resource group
393
- aks.identity.apply((id) => new azAd_1.RoleAssignment(`${this.name}-aks-identity`, {
394
- principalId: id.principalId,
395
- principalType: 'ServicePrincipal',
396
- roleName: 'Contributor',
397
- scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
398
- }, { dependsOn: aks, deletedWith: aks, parent: this }));
399
420
  }
400
421
  getPrivateDNSZone(aks) {
401
422
  const { features } = this.args;
@@ -438,4 +459,4 @@ class AzKubernetes extends base_1.BaseResourceComponent {
438
459
  }
439
460
  }
440
461
  exports.AzKubernetes = AzKubernetes;
441
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpLdWJlcm5ldGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Frcy9Bekt1YmVybmV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBRTdELHVEQUF5QztBQUd6QyxrQ0FBMEQ7QUFDMUQsa0NBQWdFO0FBQ2hFLHdDQUE2RDtBQUU3RCw4QkFBMEM7QUFDMUMsc0NBQXlDO0FBQ3pDLHVDQUFnRDtBQUNoRCw2Q0FBNEQ7QUFtQjVELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxXQUF3QyxFQUF3QyxFQUFFO0lBQ2pILElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsT0FBTyxZQUFZLElBQUksV0FBVyxJQUFJLGdCQUFnQixJQUFJLFdBQVcsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHLENBQUMsV0FBd0MsRUFBcUMsRUFBRTtJQUNoSCxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25DLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDN0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxXQUF3QyxFQUF1QyxFQUFFO0lBQzdHLElBQUksQ0FBQyxXQUFXLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0UsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBd0MsRUFBdUMsRUFBRTtJQUN4RyxJQUFJLENBQUMsV0FBVyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNFLE9BQU8sV0FBVyxD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
462
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpLdWJlcm5ldGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Frcy9Bekt1YmVybmV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBRTdELHVEQUF5QztBQUd6QyxrQ0FBMEQ7QUFDMUQsa0NBQWdFO0FBQ2hFLHdDQUE2RDtBQUU3RCw4QkFBMEM7QUFDMUMsc0NBQXlDO0FBQ3pDLHVDQUE0RjtBQUM1Riw2Q0FBNEQ7QUFtQjVELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxXQUF3QyxFQUF3QyxFQUFFO0lBQ2pILElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsT0FBTyxZQUFZLElBQUksV0FBVyxJQUFJLGdCQUFnQixJQUFJLFdBQVcsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHLENBQUMsV0FBd0MsRUFBcUMsRUFBRTtJQUNoSCxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25DLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDN0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxXQUF3QyxFQUF1QyxFQUFFO0lBQzdHLElBQUksQ0FBQyxXQUFXLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0UsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBd0MsRUFBdUMsRUFBRTtJQUN4RyxJQUFJLENBQUMsV0FBVyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNFLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUM1QixDQUFDLENBQUM7QUEwREYsTUFBYSxZQUFhLFNBQVEsNEJBQXVDO0lBQ3ZELEVBQUUsQ0FBd0I7SUFDMUIsWUFBWSxDQUF3QjtJQUNwQyxVQUFVLENBQXdDO0lBQ2xELGNBQWMsQ0FBeUI7SUFDdkMsZ0JBQWdCLENBQXFDO0lBQ3JELGFBQWEsQ0FBNEM7SUFDekQsOEJBQThCLENBQXlCO0lBQ3ZELGVBQWUsQ0FBeUI7SUFDeEMsZ0JBQWdCLENBQXlCO0lBQ3pDLGFBQWEsQ0FBeUI7SUFFdEQsWUFBWSxJQUFZLEVBQUUsSUFBc0IsRUFBRSxJQUFzQztRQUN0RixLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ1QsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFFLENBQUM7U0FDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLEVBQUUsV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7UUFFckQsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUVqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUI7WUFDckUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQyxFQUFFLEVBQUUsRUFBRyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxVQUFXO2dCQUN6RCxRQUFRLEVBQUUsRUFBRyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxRQUFTO2dCQUM3RCxRQUFRLEVBQUUsRUFBRyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxRQUFTO2FBQzlELENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsc0JBQXNCO1lBQ3hELENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBVSxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLDhCQUE4QixFQUFFLElBQUksQ0FBQyw4QkFBOEI7WUFDbkUsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXJELE9BQU8sSUFBSSxzQkFBZSxDQUN4QixHQUFHLElBQUksQ0FBQyxJQUFJLFdBQVcsRUFDdkI7WUFDRSxTQUFTO1lBQ1QsMkRBQTJEO1lBQzNELGdCQUFnQixFQUFFO2dCQUNoQix5QkFBeUIsRUFBRSxJQUFJO2dCQUMvQixnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUMxRTtZQUNELGVBQWUsRUFBRTtnQkFDZjtvQkFDRSxLQUFLLEVBQUUsbUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7b0JBQzFDLFFBQVEsRUFBRSxRQUFRO29CQUNsQixXQUFXLEVBQUUsbURBQW1EO2lCQUNqRTthQUNGO1NBQ0YsRUFDRCxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ2xELENBQUM7SUFDSixDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuRyxHQUFHLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDM0MsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxxQkFBWSxDQUMxQixHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sRUFDbEI7WUFDRSxTQUFTO1lBQ1QsUUFBUTtTQUNULEVBQ0QsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNsRCxDQUFDO1FBRUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5RyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDeEMsSUFBSSxpQkFBaUI7WUFBRSxPQUFPLGlCQUFpQixDQUFDO1FBRWhELE9BQU8sSUFBSSxzQkFBaUIsQ0FDMUIsR0FBRyxJQUFJLENBQUMsSUFBSSxzQkFBc0IsRUFDbEM7WUFDRSxPQUFPO1lBQ1AsU0FBUztZQUNULGtCQUFrQjtZQUNsQixVQUFVO1lBQ1YsY0FBYyxFQUFFLDZDQUE2QztTQUM5RCxFQUNELEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDbEQsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQXNCO1FBQzFDLE1BQU0sRUFDSixPQUFPLEVBQ1AsU0FBUyxFQUNULFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsT0FBTyxFQUNQLFlBQVksRUFDWixHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLFdBQVcsRUFDWCxVQUFVLEVBQ1YsR0FBRyxLQUFLLEVBQ1QsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2QsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsUUFBUSxDQUFDO1FBQzNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFFekQsdURBQXVEO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxHQUFHLElBQUk7WUFDUCxpQkFBaUIsRUFBRSxvQkFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FDdEUsQ0FBQyxDQUFDLENBQUM7UUFFSixPQUFPLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FDM0IsSUFBSSxDQUFDLElBQUksRUFDVDtZQUNFLEdBQUcsS0FBSztZQUNSLEdBQUcsT0FBTztZQUNWLGlCQUFpQixFQUFFLGNBQWM7WUFDakMsVUFBVSxFQUFFLFVBQVU7Z0JBQ3BCLENBQUMsQ0FBQztvQkFDRSxlQUFlLEVBQUUsSUFBSTtvQkFDckIsT0FBTyxFQUFFLElBQUk7b0JBQ2IsbUJBQW1CLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztvQkFDaEQsUUFBUSxFQUFFLGtCQUFRLENBQUMsUUFBUTtpQkFDNUI7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFFYixhQUFhLEVBQUU7Z0JBQ2IsNEJBQTRCLEVBQUU7b0JBQzVCLE1BQU0sRUFBRSxRQUFRLEVBQUUsbUJBQW1CO3dCQUNuQyxDQUFDLENBQUM7NEJBQ0Usb0JBQW9CLEVBQUUsTUFBTTt5QkFDN0I7d0JBQ0gsQ0FBQyxDQUFDLFNBQVM7b0JBQ2IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUM7aUJBQ2hEO2dCQUVELFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLElBQUksS0FBSyxFQUFFO2dCQUM5RCxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO2dCQUNqQyxzQkFBc0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7Z0JBQzFDLGlCQUFpQixFQUFFO29CQUNqQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQztvQkFDaEQsTUFBTSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQ25HO2dCQUNELCtCQUErQjtnQkFDL0IsZ0RBQWdEO2dCQUNoRCxxQ0FBcUM7Z0JBQ3JDLFVBQVU7Z0JBQ1YsMENBQTBDO2dCQUMxQyw4REFBOEQ7Z0JBQzlELFVBQVU7Z0JBQ1YsbUJBQW1CO2dCQUNuQixLQUFLO2dCQUNMLFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7b0JBQ2xDLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRTt3QkFDdEIsQ0FBQyxDQUFDOzRCQUNFLCtCQUErQixFQUFFLFlBQVksQ0FBQyxFQUFFO3lCQUNqRDt3QkFDSCxDQUFDLENBQUMsU0FBUztpQkFDZDthQUNGO1lBRUQsc0JBQXNCLEVBQUU7Z0JBQ3RCLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxFQUFFLENBQUM7Z0JBQ3BHLGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQ3BELDJGQUEyRjtnQkFDM0YsOEJBQThCLEVBQUUsUUFBUSxFQUFFLDhCQUE4QixJQUFJLElBQUk7Z0JBQ2hGLGNBQWMsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDckUscUNBQXFDO2FBQ3RDO1lBRUQsaUJBQWlCLEVBQUUsaUJBQWlCLElBQUk7Z0JBQ3RDLHdCQUF3QixFQUFFLE9BQU87Z0JBQ2pDLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixrQkFBa0IsRUFBRSxJQUFJO2dCQUN4Qix5QkFBeUIsRUFBRSxLQUFLO2dCQUNoQyxvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQix5QkFBeUIsRUFBRSxJQUFJO2dCQUMvQixrQkFBa0IsRUFBRSxJQUFJO2dCQUN4QixtQkFBbUIsRUFBRSxHQUFHO2dCQUN4QixzQkFBc0IsRUFBRSxLQUFLO2dCQUM3Qix5QkFBeUIsRUFBRSxLQUFLO2dCQUNoQywwQkFBMEIsRUFBRSxJQUFJO2dCQUNoQyxxQkFBcUIsRUFBRSxLQUFLO2dCQUM1QixvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQiw2QkFBNkIsRUFBRSxLQUFLO2dCQUNwQyxZQUFZLEVBQUUsS0FBSztnQkFDbkIseUJBQXlCLEVBQUUsT0FBTztnQkFDbEMsdUJBQXVCLEVBQUUsTUFBTTthQUNoQztZQUVELGtCQUFrQixFQUFFO2dCQUNsQixvQkFBb0IsRUFBRSxHQUFHLENBQUMsb0JBQW9CLENBQUMsU0FBUztnQkFDeEQsY0FBYyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTTthQUMxQztZQUVELG9CQUFvQixFQUFFLElBQUk7WUFDMUIsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsRUFBRTtZQUMxQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxHQUFHLGtCQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbkUsVUFBVSxFQUFFLElBQUk7WUFFaEIsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxHQUFHLENBQUMsb0JBQW9CLENBQUMsY0FBYztnQkFDN0MsNkdBQTZHO2dCQUM3RyxtRkFBbUY7YUFDcEY7WUFFRCxzQ0FBc0M7WUFDdEMsNEVBQTRFO1lBQzVFLGlCQUFpQjtZQUVqQixZQUFZLEVBQUU7Z0JBQ1osYUFBYSxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUM3QixHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTthQUN2RDtZQUVELGNBQWMsRUFBRTtnQkFDZCxHQUFHLE9BQU87Z0JBQ1YsMkNBQTJDO2dCQUMzQyxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLO2dCQUN0QyxhQUFhLEVBQUUsT0FBTyxFQUFFLGFBQWEsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU07Z0JBQ2pFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxhQUFhLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU07Z0JBQ3ZFLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPO2dCQUVoRCxlQUFlLEVBQUUsVUFBVTtnQkFDM0IsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxrQkFBa0I7YUFDM0U7WUFFRCxpQkFBaUIsRUFBRSxNQUFNO1lBQ3pCLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsRUFBRTtZQUN6RSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsaUJBQWlCO2dCQUM3QyxDQUFDLENBQUM7b0JBQ0UsT0FBTyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUI7b0JBQ25DLHFDQUFxQztvQkFDckMseUJBQXlCLEVBQUUsS0FBSztpQkFDakM7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFFYixlQUFlLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlO29CQUNyQyxDQUFDLENBQUM7d0JBQ0UsK0JBQStCLEVBQUUsWUFBWSxDQUFDLEVBQUU7d0JBQ2hELGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtxQkFDdEM7b0JBQ0gsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO2dCQUNsRCxnQkFBZ0IsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUM7aUJBQ25EO2FBQ0Y7WUFFRCx1QkFBdUIsRUFBRTtnQkFDdkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLFlBQVk7YUFDM0I7WUFFRCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJO2dCQUNwQyxJQUFJLEVBQUUsR0FBRzthQUNWO1lBRUQsY0FBYyxFQUFFLFNBQVM7WUFDekIseUJBQXlCLEVBQUU7Z0JBQ3pCLHFCQUFxQixFQUFFO29CQUNyQixPQUFPLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixJQUFJLEtBQUs7aUJBQ3hEO2dCQUNELElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxJQUFJLEtBQUssRUFBRTthQUNqRDtZQUVELGdEQUFnRDtZQUNoRCx5RkFBeUY7WUFDekYsZ0NBQWdDO1NBQ2pDLEVBQ0Q7WUFDRSxHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osU0FBUyxFQUFFLEtBQUs7WUFDaEIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sNEJBQTRCLENBQUMsR0FBdUI7UUFDMUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEQsSUFBSSxDQUFDLHNCQUFzQixJQUFJLHNCQUFzQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUUzRSxPQUFPLHNCQUFzQixDQUFDLEdBQUcsQ0FDL0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FDZixHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxFQUM5QjtZQUNFLEdBQUcsT0FBTztZQUNWLEdBQUcsT0FBTztZQUNWLGlCQUFpQixFQUFFLG9CQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUN4RSxZQUFZLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFDdEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1NBQzVCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNuRCxDQUNKLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsR0FBdUI7UUFDOUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxFQUFtQyxDQUFDO1FBRTVELE9BQU8sbUJBQVMsQ0FBQyxVQUFVLENBQ3pCLFVBQVUsRUFDVixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNYLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FDZixHQUFHLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQ3RCO1lBQ0UsR0FBRyxPQUFPO1lBQ1YsWUFBWSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ3RCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUN2RCxDQUNKLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBdUI7UUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNDLE1BQU0sc0JBQXNCLEdBQUcseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEUsTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNsRyxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFFeEYsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyx3QkFBd0IsQ0FDekQsR0FBRyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsRUFDdkM7WUFDRSxHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsU0FBUztZQUNyQixZQUFZLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFDdEIsVUFBVSxFQUFFLHNCQUFzQixFQUFFLFVBQVUsSUFBSTtnQkFDaEQ7b0JBQ0UsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTTtvQkFDdkIsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDbkI7YUFDRjtZQUNELGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxjQUFjO1NBQ3ZELEVBQ0QsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDOUUsQ0FBQztRQUVGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQzdELEdBQUcsSUFBSSxDQUFDLElBQUksc0JBQXNCLEVBQ2xDO1lBQ0UsR0FBRyxPQUFPO1lBQ1YsVUFBVSxFQUFFLGlCQUFpQixDQUFDLFVBQVUsSUFBSSwrQkFBK0I7WUFDM0UsWUFBWSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ3RCLGlCQUFpQixFQUFFLGlCQUFpQjtTQUNyQyxFQUNELEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzlFLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLHdCQUF3QixDQUN4RCxHQUFHLElBQUksQ0FBQyxJQUFJLHdCQUF3QixFQUNwQztZQUNFLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVSxJQUFJLGlDQUFpQztZQUN4RSxZQUFZLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFDdEIsaUJBQWlCLEVBQUUsWUFBWTtTQUNoQyxFQUNELEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzlFLENBQUM7UUFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztJQUN6RyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsR0FBdUIsRUFBRSxRQUF5QjtRQUN6RSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RELElBQUksVUFBVSxFQUFFLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFBLCtCQUFxQixFQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFDckI7Z0JBQ0UsR0FBRyxVQUFVLENBQUMsTUFBTTtnQkFDcEIsR0FBRztnQkFDSCxPQUFPO2dCQUNQLFVBQVU7Z0JBQ1YsUUFBUTthQUNULEVBQ0QsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FDdkMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBdUI7UUFDaEQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBQSw2QkFBbUIsRUFBQyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUcsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsRUFBRSxFQUFFLENBQUUsQ0FBQyxlQUFlLENBQUMsVUFBVztZQUNsQyxRQUFRLEVBQUUsQ0FBRSxDQUFDLGVBQWUsQ0FBQyxRQUFTO1lBQ3RDLFFBQVEsRUFBRSxDQUFFLENBQUMsZUFBZSxDQUFDLFFBQVM7U0FDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsR0FBdUI7UUFDOUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFbEMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxxQkFBYyxDQUNoQixHQUFHLElBQUksQ0FBQyxJQUFJLGVBQWUsRUFDM0I7b0JBQ0UsV0FBVyxFQUFFLENBQUUsQ0FBQyxRQUFTO29CQUN6QixhQUFhLEVBQUUsa0JBQWtCO29CQUNqQyxRQUFRLEVBQUUsU0FBUztvQkFDbkIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFO2lCQUN0QixFQUNELEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDbkQsQ0FBQztnQkFDRixJQUFJLHFCQUFjLENBQ2hCLEdBQUcsSUFBSSxDQUFDLElBQUksZUFBZSxFQUMzQjtvQkFDRSxXQUFXLEVBQUUsQ0FBRSxDQUFDLFFBQVM7b0JBQ3pCLGFBQWEsRUFBRSxrQkFBa0I7b0JBQ2pDLFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRTtpQkFDdEIsRUFDRCxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ25ELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBdUI7UUFDL0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsaUJBQWlCLENBQUM7UUFDdEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFBLGtCQUFrQixrQkFBUSxDQUFDLGNBQWMsbUJBQW1CLE9BQU8sZ0RBQWdELFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1Syw2Q0FBNkM7UUFDN0MsTUFBTSxFQUFFLEdBQUcsSUFBQSxtQ0FBeUIsRUFBQztZQUNuQyxlQUFlLEVBQUUsU0FBUyxDQUFDLGVBQWU7WUFDMUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBRSxDQUFDO1lBQzNDLHFCQUFxQixFQUFFLFNBQVMsQ0FBQyxrQkFBa0I7WUFDbkQsVUFBVSxFQUFFLEdBQUc7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDLGVBQWUsRUFBRTtZQUM1RCxnQkFBZ0IsRUFBRSxFQUFHLENBQUMsUUFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pHLENBQUM7SUFDSixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxPQUFPO1lBQ0wsUUFBUSxFQUFFO2dCQUNSLE1BQU0sRUFBRTtvQkFDTixTQUFTLEVBQUUsUUFBUTtvQkFDbkIsYUFBYSxFQUFFLENBQUM7aUJBQ2pCO2FBQ0Y7WUFDRCxhQUFhLEVBQUUsQ0FBQztZQUNoQixTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTLEVBQUUsT0FBTztZQUNsQixTQUFTO1NBQ1YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQW5nQkQsb0NBbWdCQyJ9
package/aks/helpers.d.ts CHANGED
@@ -1,5 +1,8 @@
1
+ import * as azure from '@pulumi/azure-native';
1
2
  import * as pulumi from '@pulumi/pulumi';
2
3
  import { AksOutputType } from './types';
4
+ import { AppRegistration } from '../azAd';
5
+ import * as types from '../types';
3
6
  export declare const aksRequiredOutboundPorts: string[];
4
7
  export declare const getAksConfig: ({ resourceName, resourceGroupName, disableLocalAccounts, }: {
5
8
  resourceName: string;
@@ -10,3 +13,12 @@ export declare const getAksClusterOutput: ({ resourceName, resourceGroupName, }:
10
13
  resourceName: pulumi.Input<string>;
11
14
  resourceGroupName: pulumi.Input<string>;
12
15
  }) => pulumi.Output<AksOutputType>;
16
+ export type ArgoCDExtensionArgs = Required<types.WithGroupRolesArgs> & types.WithResourceGroupInputs & {
17
+ namespace: pulumi.Input<string>;
18
+ argoCdDomain: pulumi.Input<string>;
19
+ workloadIdentityClientId: pulumi.Input<string>;
20
+ aks: azure.containerservice.ManagedCluster;
21
+ identity: AppRegistration;
22
+ releaseTrain?: 'preview' | pulumi.Input<string>;
23
+ };
24
+ export declare const createArgoCDExtension: (name: string, { argoCdDomain, namespace, workloadIdentityClientId, aks, identity, groupRoles, rsGroup, releaseTrain, }: ArgoCDExtensionArgs, opts?: pulumi.ComponentResourceOptions) => import("@pulumi/azure-native/kubernetesconfiguration/extension").Extension;
package/aks/helpers.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getAksClusterOutput = exports.getAksConfig = exports.aksRequiredOutboundPorts = void 0;
36
+ exports.createArgoCDExtension = exports.getAksClusterOutput = exports.getAksConfig = exports.aksRequiredOutboundPorts = void 0;
37
37
  const azure = __importStar(require("@pulumi/azure-native"));
38
38
  const helpers_1 = require("../helpers");
39
39
  const pulumi = __importStar(require("@pulumi/pulumi"));
@@ -70,4 +70,53 @@ const getAksClusterOutput = ({ resourceName, resourceGroupName, }) => {
70
70
  });
71
71
  };
72
72
  exports.getAksClusterOutput = getAksClusterOutput;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ha3MvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBOEM7QUFDOUMsd0NBQXNDO0FBQ3RDLHVEQUF5QztBQUc1QixRQUFBLHdCQUF3QixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU1RSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsRUFDakMsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixvQkFBb0IsR0FLckIsRUFBbUIsRUFBRTtJQUNwQixNQUFNLEdBQUcsR0FBRyxvQkFBb0I7UUFDOUIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlDQUFpQyxDQUFDO1lBQzdELFlBQVk7WUFDWixpQkFBaUI7U0FDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQztZQUM5RCxZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCLENBQUMsQ0FBQztJQUVQLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBcEJXLFFBQUEsWUFBWSxnQkFvQnZCO0FBRUssTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQ2xDLFlBQVksRUFDWixpQkFBaUIsR0FJbEIsRUFBZ0MsRUFBRTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFBLDhDQUE4QyxrQkFBUSxDQUFDLGNBQWMsbUJBQW1CLGlCQUFpQix5REFBeUQsWUFBWSx5QkFBeUIsQ0FBQztJQUN0Tyw0Q0FBNEM7SUFDNUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDNUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNoQyxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsVUFBVSxLQUFLLENBQUMsS0FBSyxFQUFFO2FBQ3ZDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFxQixDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBeEJXLFFBQUEsbUJBQW1CLHVCQXdCOUIifQ==
73
+ const createArgoCDExtension = (name, { argoCdDomain, namespace, workloadIdentityClientId, aks, identity, groupRoles, rsGroup, releaseTrain, }, opts) => {
74
+ const oidcConfig = pulumi.interpolate `
75
+ name: Azure
76
+ issuer: https://login.microsoftonline.com/${helpers_1.azureEnv.tenantId}/v2.0
77
+ clientID: ${identity.clientId}
78
+ azure:
79
+ useWorkloadIdentity: true
80
+ requestedIDTokenClaims:
81
+ groups:
82
+ essential: true
83
+ requestedScopes:
84
+ - openid
85
+ - profile
86
+ - email
87
+ `;
88
+ const defaultPolicy = 'role:readonly';
89
+ const policy = `
90
+ p, role:org-admin, applications, *, */*, allow
91
+ p, role:org-admin, clusters, get, *, allow
92
+ p, role:org-admin, repositories, get, *, allow
93
+ p, role:org-admin, repositories, create, *, allow
94
+ p, role:org-admin, repositories, update, *, allow
95
+ p, role:org-admin, repositories, delete, *, allow
96
+ g, ${groupRoles.admin.objectId}, role:org-admin
97
+ g, ${groupRoles.readOnly.objectId}, role:readonly
98
+ `;
99
+ return new azure.kubernetesconfiguration.Extension(name, {
100
+ autoUpgradeMinorVersion: true,
101
+ clusterName: aks.name,
102
+ resourceGroupName: rsGroup.resourceGroupName,
103
+ clusterResourceName: 'managedClusters',
104
+ clusterRp: 'Microsoft.ContainerService',
105
+ extensionType: 'Microsoft.ArgoCD',
106
+ releaseTrain: releaseTrain ?? 'preview',
107
+ configurationSettings: {
108
+ deployWithHighAvailability: 'false',
109
+ namespaceInstall: 'true',
110
+ 'workloadIdentity.enable': 'true',
111
+ 'workloadIdentity.clientId': workloadIdentityClientId,
112
+ 'workloadIdentity.entraSSOClientId': identity.clientId,
113
+ 'config-maps.argocd-cm.data.oidc\\.config': oidcConfig,
114
+ 'config-maps.argocd-cm.data.url': pulumi.interpolate `https://${argoCdDomain}/`,
115
+ 'config-maps.argocd-rbac-cm.data.policy\\.default': defaultPolicy,
116
+ 'config-maps.argocd-rbac-cm.data.policy\\.csv': policy,
117
+ 'config-maps.argocd-cmd-params-cm.data.application\\.namespaces': namespace,
118
+ },
119
+ }, { ...opts, dependsOn: [aks, identity] });
120
+ };
121
+ exports.createArgoCDExtension = createArgoCDExtension;
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ha3MvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBOEM7QUFDOUMsd0NBQXNDO0FBQ3RDLHVEQUF5QztBQUs1QixRQUFBLHdCQUF3QixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU1RSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsRUFDakMsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixvQkFBb0IsR0FLckIsRUFBbUIsRUFBRTtJQUNwQixNQUFNLEdBQUcsR0FBRyxvQkFBb0I7UUFDOUIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlDQUFpQyxDQUFDO1lBQzdELFlBQVk7WUFDWixpQkFBaUI7U0FDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQztZQUM5RCxZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCLENBQUMsQ0FBQztJQUVQLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBcEJXLFFBQUEsWUFBWSxnQkFvQnZCO0FBRUssTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQ2xDLFlBQVksRUFDWixpQkFBaUIsR0FJbEIsRUFBZ0MsRUFBRTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFBLDhDQUE4QyxrQkFBUSxDQUFDLGNBQWMsbUJBQW1CLGlCQUFpQix5REFBeUQsWUFBWSx5QkFBeUIsQ0FBQztJQUN0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
@@ -14,9 +14,12 @@ export interface AppRegistrationArgs extends WithVaultInfo, WithMemberOfArgs, Pa
14
14
  info?: Pick<azAd.ApplicationArgs, 'description' | 'displayName' | 'logoImage' | 'marketingUrl' | 'notes' | 'privacyStatementUrl'>;
15
15
  groupMembershipClaims?: pulumi.Input<GroupMembershipClaimsTypes[]>;
16
16
  identifierUris?: pulumi.Input<pulumi.Input<string>[]>;
17
- servicePrincipal?: Pick<azAd.ServicePrincipalArgs, 'notificationEmailAddresses' | 'preferredSingleSignOnMode' | 'samlSingleSignOn' | 'appRoleAssignmentRequired'>;
17
+ servicePrincipal?: Pick<azAd.ServicePrincipalArgs, 'notificationEmailAddresses' | 'preferredSingleSignOnMode' | 'samlSingleSignOn'> & {
18
+ appRoleAssignmentRequired?: pulumi.Input<boolean>;
19
+ assignedGroupIds?: pulumi.Input<string>[];
20
+ };
18
21
  appType?: 'web' | 'singlePageApplication' | 'native';
19
- /** This is require when the appType is 'web' or 'singlePageApplication' */
22
+ /** This is required when the appType is 'web' or 'singlePageApplication' */
20
23
  redirectUris?: pulumi.Input<pulumi.Input<string>[]>;
21
24
  /** This option is for the appType is 'web' */
22
25
  homepageUrl?: pulumi.Input<string>;
@@ -27,6 +30,7 @@ export interface AppRegistrationArgs extends WithVaultInfo, WithMemberOfArgs, Pa
27
30
  accessTokenIssuanceEnabled?: pulumi.Input<boolean>;
28
31
  idTokenIssuanceEnabled?: pulumi.Input<boolean>;
29
32
  }>;
33
+ /** Role assignments to be created for the Service Principal */
30
34
  roleAssignments?: Array<Omit<RoleAssignmentArgs, 'roleAssignmentName' | 'principalId' | 'principalType'>>;
31
35
  }
32
36
  export declare class AppRegistration extends BaseComponent<AppRegistrationArgs> {
@@ -109,9 +109,10 @@ class AppRegistration extends base_1.BaseComponent {
109
109
  return { app, clientSecret: clientSecret.value };
110
110
  }
111
111
  createServicePrincipal(app) {
112
+ const { servicePrincipal } = this.args;
112
113
  //Service Principal
113
114
  const sp = new azAd.ServicePrincipal(`${this.name}-sp`, {
114
- ...this.args.servicePrincipal,
115
+ ...servicePrincipal,
115
116
  description: this.name,
116
117
  clientId: app.clientId,
117
118
  owners: this.args.owners,
@@ -120,6 +121,13 @@ class AppRegistration extends base_1.BaseComponent {
120
121
  displayName: this.name,
121
122
  servicePrincipalId: pulumi.interpolate `/servicePrincipals/${sp.objectId}`,
122
123
  }, { dependsOn: sp, deletedWith: app, parent: this });
124
+ if (servicePrincipal?.assignedGroupIds) {
125
+ pulumi.output(servicePrincipal?.assignedGroupIds).apply((ids) => ids.map((id) => new azAd.AppRoleAssignment(`${this.name}-sp-appRole-${id}`, {
126
+ appRoleId: '00000000-0000-0000-0000-000000000000',
127
+ resourceObjectId: sp.objectId,
128
+ principalObjectId: id,
129
+ }, { dependsOn: sp, retainOnDelete: true, parent: this })));
130
+ }
123
131
  this.addRoleAssignments(sp);
124
132
  this.addMemberOf(sp);
125
133
  return {
@@ -164,4 +172,4 @@ class AppRegistration extends base_1.BaseComponent {
164
172
  }
165
173
  }
166
174
  exports.AppRegistration = AppRegistration;
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwUmVnaXN0cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6QWQvQXBwUmVnaXN0cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFFekMscURBQXNFO0FBR3RFLGtDQUF3QztBQUN4QyxvQ0FBd0M7QUFDeEMsNkNBQTJEO0FBQzNELHdDQUFpRDtBQUVqRCxJQUFZLDBCQU1YO0FBTkQsV0FBWSwwQkFBMEI7SUFDcEMsMkNBQWEsQ0FBQTtJQUNiLDZEQUErQixDQUFBO0lBQy9CLDZEQUErQixDQUFBO0lBQy9CLG1FQUFxQyxDQUFBO0lBQ3JDLHlDQUFXLENBQUE7QUFDYixDQUFDLEVBTlcsMEJBQTBCLDBDQUExQiwwQkFBMEIsUUFNckM7QUE0Q0QsTUFBYSxlQUFnQixTQUFRLG9CQUFrQztJQUNyRCxRQUFRLENBQXdCO0lBQ2hDLFFBQVEsQ0FBd0I7SUFDaEMsWUFBWSxDQUF3QjtJQUNwQyxrQkFBa0IsQ0FBd0I7SUFDMUMsd0JBQXdCLENBQXdCO0lBQ3hELFlBQVksR0FBMkMsRUFBRSxDQUFDO0lBRWxFLFlBQVksSUFBWSxFQUFFLE9BQTRCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQXNDO1FBQ2pILEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyRSxhQUFhO1FBQ2IsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUNo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
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwUmVnaXN0cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6QWQvQXBwUmVnaXN0cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFFekMscURBQXNFO0FBR3RFLGtDQUF3QztBQUN4QyxvQ0FBd0M7QUFDeEMsNkNBQTJEO0FBQzNELHdDQUFpRDtBQUVqRCxJQUFZLDBCQU1YO0FBTkQsV0FBWSwwQkFBMEI7SUFDcEMsMkNBQWEsQ0FBQTtJQUNiLDZEQUErQixDQUFBO0lBQy9CLDZEQUErQixDQUFBO0lBQy9CLG1FQUFxQyxDQUFBO0lBQ3JDLHlDQUFXLENBQUE7QUFDYixDQUFDLEVBTlcsMEJBQTBCLDBDQUExQiwwQkFBMEIsUUFNckM7QUFpREQsTUFBYSxlQUFnQixTQUFRLG9CQUFrQztJQUNyRCxRQUFRLENBQXdCO0lBQ2hDLFFBQVEsQ0FBd0I7SUFDaEMsWUFBWSxDQUF3QjtJQUNwQyxrQkFBa0IsQ0FBd0I7SUFDMUMsd0JBQXdCLENBQXdCO0lBQ3hELFlBQVksR0FBMkMsRUFBRSxDQUFDO0lBRWxFLFlBQVksSUFBWSxFQUFFLE9BQTRCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQXNDO1FBQ2pILEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyRSxhQUFhO1FBQ2IsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUNo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
@@ -23,7 +23,7 @@ export declare abstract class BaseComponent<TArgs extends pulumi.Inputs> extends
23
23
  * @param args - Configuration arguments for this component
24
24
  * @param opts - Optional Pulumi resource options to control component behavior
25
25
  */
26
- constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
26
+ protected constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
27
27
  /**
28
28
  * Registers component outputs with the Pulumi engine.
29
29
  * This method should be overridden by derived classes to ensure proper output registration.
@@ -7,6 +7,7 @@ import { BaseComponent } from './BaseComponent';
7
7
  import { EncryptionKey } from '../vault/EncryptionKey';
8
8
  import { ResourceLocker } from '../common/ResourceLocker';
9
9
  import { RoleAssignment } from '../azAd/RoleAssignment';
10
+ import * as enums from '@pulumi/azure-native/types/enums';
10
11
  /**
11
12
  * Base interface for resource component arguments that combines vault information
12
13
  * and Azure AD group role requirements.
@@ -57,7 +58,7 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
57
58
  * @param args - Arguments containing vault and resource group information
58
59
  * @param opts - Optional component resource options
59
60
  */
60
- constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
61
+ protected constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
61
62
  /**
62
63
  * Adds a managed identity to a specified Azure AD group role
63
64
  * @param type - The type of group role to add the identity to (from GroupRoleTypes enum)
@@ -112,4 +113,15 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
112
113
  * Creates vault secrets if any secrets were added during component creation
113
114
  */
114
115
  private postCreated;
116
+ /** Assigns a role to a principal at the scope of this resource.
117
+ * @param roleName The name of the role to assign (e.g., "Contributor", "Reader").
118
+ * @param principalType The type of the principal (e.g., "User", "Group", "ServicePrincipal").
119
+ * @param principalId The ID of the principal to whom the role is assigned.
120
+ * @returns A RoleAssignment resource representing the role assignment.
121
+ * */
122
+ roleAssignment({ roleName, principalType, principalId }: {
123
+ roleName: pulumi.Input<string>;
124
+ principalId: pulumi.Input<string>;
125
+ principalType: enums.authorization.PrincipalType;
126
+ }): pulumi.Output<RoleAssignment>;
115
127
  }
@@ -191,6 +191,24 @@ class BaseResourceComponent extends BaseComponent_1.BaseComponent {
191
191
  }, { dependsOn: this.opts?.dependsOn, parent: this });
192
192
  this.vaultSecrets = rs.results;
193
193
  }
194
+ /** Assigns a role to a principal at the scope of this resource.
195
+ * @param roleName The name of the role to assign (e.g., "Contributor", "Reader").
196
+ * @param principalType The type of the principal (e.g., "User", "Group", "ServicePrincipal").
197
+ * @param principalId The ID of the principal to whom the role is assigned.
198
+ * @returns A RoleAssignment resource representing the role assignment.
199
+ * */
200
+ roleAssignment({ roleName, principalType, principalId }) {
201
+ const resourceId = this.getOutputs()?.id;
202
+ if (!resourceId) {
203
+ throw new Error(`Resource ID is not available for role assignment in component "${this.type}:${this.name}"`);
204
+ }
205
+ return pulumi.output([roleName, principalId]).apply(([role, id]) => new RoleAssignment_1.RoleAssignment(`${this.name}-${role}-${id}`, {
206
+ principalId: id,
207
+ principalType,
208
+ roleName: role,
209
+ scope: resourceId,
210
+ }, { parent: this, deletedWith: this }));
211
+ }
194
212
  }
195
213
  exports.BaseResourceComponent = BaseResourceComponent;
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVJlc291cmNlQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2UvQmFzZVJlc291cmNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFHekMsNkRBQThFO0FBQzlFLHlEQUF3RTtBQUN4RSx3REFBd0U7QUFFeEUsbURBQWdEO0FBQ2hELDBEQUF1RDtBQUN2RCw2REFBMEQ7QUFDMUQsMkRBQXdEO0FBRXhELHVDQUFxRDtBQWtCckQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFzQixxQkFBOEMsU0FBUSw2QkFBb0I7SUFhM0U7SUFDRDtJQUNHO0lBQ0E7SUFmZCxZQUFZLENBQXdDO0lBQ25ELFFBQVEsR0FBNEMsRUFBRSxDQUFDO0lBQ3ZELG9CQUFvQixHQUFZLEtBQUssQ0FBQztJQUU5Qzs7Ozs7O09BTUc7SUFDSCxZQUNtQixJQUFZLEVBQ2IsSUFBWSxFQUNULElBQVcsRUFDWCxJQUFzQztRQUV6RCxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBTHZDLFNBQUksR0FBSixJQUFJLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1QsU0FBSSxHQUFKLElBQUksQ0FBTztRQUNYLFNBQUksR0FBSixJQUFJLENBQWtDO0lBRzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGlCQUFpQixDQUN0QixJQUEwQixFQUMxQixRQUF5RTtRQUV6RSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFeEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FB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
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVJlc291cmNlQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2UvQmFzZVJlc291cmNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFHekMsNkRBQThFO0FBQzlFLHlEQUF3RTtBQUN4RSx3REFBd0U7QUFFeEUsbURBQWdEO0FBQ2hELDBEQUF1RDtBQUN2RCw2REFBMEQ7QUFDMUQsMkRBQXdEO0FBRXhELHVDQUFxRDtBQW1CckQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFzQixxQkFBOEMsU0FBUSw2QkFBb0I7SUFhM0U7SUFDRDtJQUNHO0lBQ0E7SUFmZCxZQUFZLENBQXdDO0lBQ25ELFFBQVEsR0FBNEMsRUFBRSxDQUFDO0lBQ3ZELG9CQUFvQixHQUFZLEtBQUssQ0FBQztJQUU5Qzs7Ozs7O09BTUc7SUFDSCxZQUNtQixJQUFZLEVBQ2IsSUFBWSxFQUNULElBQVcsRUFDWCxJQUFzQztRQUV6RCxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBTHZDLFNBQUksR0FBSixJQUFJLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1QsU0FBSSxHQUFKLElBQUksQ0FBTztRQUNYLFNBQUksR0FBSixJQUFJLENBQWtDO0lBRzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGlCQUFpQixDQUN0QixJQUEwQixFQUMxQixRQUF5RTtRQUV6RSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFeEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drunk-pulumi/azure-components",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "The custom components for Pulumi Azure",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -22,8 +22,8 @@
22
22
  "@drunk-pulumi/azure-providers": "^1.0.10",
23
23
  "@pulumi/azure-native": "^3.12.0",
24
24
  "@pulumi/azuread": "^6.8.0",
25
- "@pulumi/pulumi": "^3.214.0",
26
- "@pulumi/random": "^4.18.4",
25
+ "@pulumi/pulumi": "^3.214.1",
26
+ "@pulumi/random": "^4.18.5",
27
27
  "lodash": "^4.17.21",
28
28
  "netmask": "^2.0.2",
29
29
  "openpgp": "^6.3.0"
@@ -27,7 +27,7 @@ export declare function allowsCloudflareTunnels({ name, priority, sourceAddresse
27
27
  internalDestinationPorts?: pulumi.Input<string>[];
28
28
  }): import("..").RulePolicyArgs;
29
29
  /** These rules are not required for Private AKS */
30
- export declare function allowsAksPolicies({ name, priority, subnetAddressSpaces, privateCluster, }: {
30
+ export declare function allowsAksPolicies({ name, priority, subnetAddressSpaces, privateCluster, allowsAcrs, }: {
31
31
  name?: string;
32
32
  priority: number;
33
33
  privateCluster?: boolean;
@@ -1,4 +1,37 @@
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.allAzurePorts = void 0;
4
37
  exports.newFirewallPolicy = newFirewallPolicy;
@@ -6,6 +39,7 @@ exports.defaultAllowedPolicies = defaultAllowedPolicies;
6
39
  exports.defaultDeniedPolicies = defaultDeniedPolicies;
7
40
  exports.allowsCloudflareTunnels = allowsCloudflareTunnels;
8
41
  exports.allowsAksPolicies = allowsAksPolicies;
42
+ const pulumi = __importStar(require("@pulumi/pulumi"));
9
43
  const helpers_1 = require("../../helpers");
10
44
  const FirewallPolicyBuilder_1 = require("./FirewallPolicyBuilder");
11
45
  exports.allAzurePorts = [
@@ -422,7 +456,7 @@ function allowsCloudflareTunnels({ name = 'cf-tunnels', priority, sourceAddresse
422
456
  return builder.build();
423
457
  }
424
458
  /** These rules are not required for Private AKS */
425
- function allowsAksPolicies({ name = 'aks', priority, subnetAddressSpaces, privateCluster, }) {
459
+ function allowsAksPolicies({ name = 'aks', priority, subnetAddressSpaces, privateCluster, allowsAcrs, }) {
426
460
  const builder = new FirewallPolicyBuilder_1.FirewallPolicyBuilder(name, { priority, action: 'Allow' });
427
461
  if (!privateCluster) {
428
462
  builder
@@ -465,37 +499,43 @@ function allowsAksPolicies({ name = 'aks', priority, subnetAddressSpaces, privat
465
499
  destinationAddresses: ['AzureMonitor'],
466
500
  destinationPorts: ['443'],
467
501
  });
502
+ const targetFqdns = [
503
+ `*.hcp.${helpers_1.azureEnv.currentRegionCode}.azmk8s.io`,
504
+ 'mcr.microsoft.com',
505
+ '*.data.mcr.microsoft.com',
506
+ 'mcr-0001.mcr-msedge.net',
507
+ 'management.azure.com',
508
+ 'login.microsoftonline.com',
509
+ 'packages.microsoft.com',
510
+ 'acs-mirror.azureedge.net',
511
+ 'packages.aks.azure.com',
512
+ //Defender for Containers and Monitoring
513
+ '*.ods.opinsights.azure.com',
514
+ '*.oms.opinsights.azure.com',
515
+ '*.cloud.defender.microsoft.com',
516
+ '*.in.applicationinsights.azure.com',
517
+ '*.monitoring.azure.com',
518
+ 'global.handler.control.monitor.azure.com',
519
+ '*.ingest.monitor.azure.com',
520
+ '*.metrics.ingest.monitor.azure.com',
521
+ `${helpers_1.azureEnv.currentRegionCode}.handler.control.monitor.azure.com`,
522
+ //Key Vault
523
+ 'vault.azure.net',
524
+ '*.vault.usgovcloudapi.net',
525
+ //Storage for container
526
+ '*.blob.core.windows.net',
527
+ ];
528
+ if (allowsAcrs) {
529
+ allowsAcrs.map(acr => targetFqdns.push(pulumi.interpolate `${acr}.azurecr.io`));
530
+ }
468
531
  builder
469
532
  //App
470
533
  .addAppRule('acrs', {
471
534
  description: 'Allows pods to access AzureKubernetesService',
472
535
  sourceAddresses: subnetAddressSpaces,
473
- targetFqdns: [
474
- `*.hcp.${helpers_1.azureEnv.currentRegionCode}.azmk8s.io`,
475
- 'mcr.microsoft.com',
476
- '*.data.mcr.microsoft.com',
477
- 'mcr-0001.mcr-msedge.net',
478
- 'management.azure.com',
479
- 'login.microsoftonline.com',
480
- 'packages.microsoft.com',
481
- 'acs-mirror.azureedge.net',
482
- 'packages.aks.azure.com',
483
- //Defender for Containers and Monitoring
484
- '*.ods.opinsights.azure.com',
485
- '*.oms.opinsights.azure.com',
486
- '*.cloud.defender.microsoft.com',
487
- '*.in.applicationinsights.azure.com',
488
- '*.monitoring.azure.com',
489
- 'global.handler.control.monitor.azure.com',
490
- '*.ingest.monitor.azure.com',
491
- '*.metrics.ingest.monitor.azure.com',
492
- `${helpers_1.azureEnv.currentRegionCode}.handler.control.monitor.azure.com`,
493
- //Key Vault
494
- 'vault.azure.net',
495
- '*.vault.usgovcloudapi.net',
496
- ],
536
+ targetFqdns,
497
537
  protocols: [{ protocolType: 'Https', port: 443 }],
498
538
  });
499
539
  return builder;
500
540
  }
501
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uUG9saWNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdm5ldC9GaXJld2FsbFBvbGljaWVzL2NvbW1vblBvbGljaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNCQSw4Q0FFQztBQUVELHdEQWlXQztBQUVELHNEQWFDO0FBRUQsMERBaUVDO0FBR0QsOENBMEZDO0FBemlCRCwyQ0FBeUM7QUFDekMsbUVBQWdFO0FBRW5ELFFBQUEsYUFBYSxHQUFHO0lBQzNCLElBQUk7SUFDSixLQUFLO0lBQ0wsS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sT0FBTztDQUNSLENBQUM7QUFFRixTQUFnQixpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFrRDtJQUNsSCxPQUFPLElBQUksNkNBQXFCLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLHNCQUFzQixDQUFDLEVBQ3JDLElBQUksR0FBRyxnQkFBZ0IsRUFDdkIsUUFBUSxHQUFHLEdBQUcsRUFDZCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLG1CQUFtQixHQVdwQjtJQUNDLE1BQU0sT0FBTyxHQUFHLElBQUksNkNBQXFCLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRS9FLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRTtZQUNyQyxXQUFXLEVBQUUsK0JBQStCO1lBQzVDLGVBQWU7WUFDZixXQUFX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
541
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uUG9saWNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdm5ldC9GaXJld2FsbFBvbGljaWVzL2NvbW1vblBvbGljaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSw4Q0FFQztBQUVELHdEQWlXQztBQUVELHNEQWFDO0FBRUQsMERBaUVDO0FBR0QsOENBbUdDO0FBbmpCRCx1REFBeUM7QUFDekMsMkNBQXlDO0FBQ3pDLG1FQUFnRTtBQUVuRCxRQUFBLGFBQWEsR0FBRztJQUMzQixJQUFJO0lBQ0osS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87Q0FDUixDQUFDO0FBRUYsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBa0Q7SUFDbEgsT0FBTyxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxFQUNyQyxJQUFJLEdBQUcsZ0JBQWdCLEVBQ3ZCLFFBQVEsR0FBRyxHQUFHLEVBQ2QsZUFBZSxFQUNmLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixtQkFBbUIsR0FXcEI7SUFDQyxNQUFNLE9BQU8sR0FBRyxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUUvRSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVB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