@drunk-pulumi/azure-components 0.0.6

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 (181) hide show
  1. package/PulumiPlugin.yaml +1 -0
  2. package/README.md +1 -0
  3. package/ResourceBuilder.d.ts +54 -0
  4. package/ResourceBuilder.js +71 -0
  5. package/aks/AzKubernetes.d.ts +55 -0
  6. package/aks/AzKubernetes.js +288 -0
  7. package/aks/ContainerRegistry.d.ts +19 -0
  8. package/aks/ContainerRegistry.js +119 -0
  9. package/aks/helpers.d.ts +6 -0
  10. package/aks/helpers.js +52 -0
  11. package/aks/index.d.ts +3 -0
  12. package/aks/index.js +43 -0
  13. package/app/AppCert.d.ts +15 -0
  14. package/app/AppCert.js +74 -0
  15. package/app/AppConfig.d.ts +18 -0
  16. package/app/AppConfig.js +124 -0
  17. package/app/AppService.d.ts +69 -0
  18. package/app/AppService.js +122 -0
  19. package/app/IoTHub.d.ts +15 -0
  20. package/app/IoTHub.js +80 -0
  21. package/app/LogicApp.d.ts +19 -0
  22. package/app/LogicApp.js +77 -0
  23. package/app/SignalR.d.ts +45 -0
  24. package/app/SignalR.js +125 -0
  25. package/app/index.d.ts +6 -0
  26. package/app/index.js +23 -0
  27. package/azAd/AppRegistration.d.ts +52 -0
  28. package/azAd/AppRegistration.js +165 -0
  29. package/azAd/AzRole.d.ts +14 -0
  30. package/azAd/AzRole.js +72 -0
  31. package/azAd/CustomRoles.d.ts +10 -0
  32. package/azAd/CustomRoles.js +73 -0
  33. package/azAd/GroupRole.d.ts +29 -0
  34. package/azAd/GroupRole.js +107 -0
  35. package/azAd/RoleAssignment.d.ts +15 -0
  36. package/azAd/RoleAssignment.js +63 -0
  37. package/azAd/UserAssignedIdentity.d.ts +17 -0
  38. package/azAd/UserAssignedIdentity.js +76 -0
  39. package/azAd/helpers/graphBuiltIn.d.ts +14 -0
  40. package/azAd/helpers/graphBuiltIn.js +5134 -0
  41. package/azAd/helpers/index.d.ts +3 -0
  42. package/azAd/helpers/index.js +39 -0
  43. package/azAd/helpers/rolesBuiltIn.d.ts +90 -0
  44. package/azAd/helpers/rolesBuiltIn.js +18601 -0
  45. package/azAd/helpers/rsRoleDefinition.d.ts +62 -0
  46. package/azAd/helpers/rsRoleDefinition.js +120 -0
  47. package/azAd/index.d.ts +7 -0
  48. package/azAd/index.js +24 -0
  49. package/base/BaseComponent.d.ts +53 -0
  50. package/base/BaseComponent.js +98 -0
  51. package/base/BaseResourceComponent.d.ts +108 -0
  52. package/base/BaseResourceComponent.js +180 -0
  53. package/base/helpers.d.ts +12 -0
  54. package/base/helpers.js +29 -0
  55. package/base/index.d.ts +3 -0
  56. package/base/index.js +43 -0
  57. package/common/PGPGenerator.d.ts +26 -0
  58. package/common/PGPGenerator.js +72 -0
  59. package/common/RandomPassword.d.ts +21 -0
  60. package/common/RandomPassword.js +84 -0
  61. package/common/RandomString.d.ts +20 -0
  62. package/common/RandomString.js +74 -0
  63. package/common/ResourceLocker.d.ts +9 -0
  64. package/common/ResourceLocker.js +52 -0
  65. package/common/RsGroup.d.ts +20 -0
  66. package/common/RsGroup.js +85 -0
  67. package/common/SshGenerator.d.ts +17 -0
  68. package/common/SshGenerator.js +66 -0
  69. package/common/index.d.ts +5 -0
  70. package/common/index.js +22 -0
  71. package/database/AzSql.d.ts +71 -0
  72. package/database/AzSql.js +283 -0
  73. package/database/MySql.d.ts +35 -0
  74. package/database/MySql.js +181 -0
  75. package/database/Postgres.d.ts +32 -0
  76. package/database/Postgres.js +171 -0
  77. package/database/Redis.d.ts +26 -0
  78. package/database/Redis.js +125 -0
  79. package/database/helpers.d.ts +7 -0
  80. package/database/helpers.js +52 -0
  81. package/database/index.d.ts +5 -0
  82. package/database/index.js +45 -0
  83. package/helpers/Location/LocationBuiltIn.d.ts +6 -0
  84. package/helpers/Location/LocationBuiltIn.js +493 -0
  85. package/helpers/Location/index.d.ts +3 -0
  86. package/helpers/Location/index.js +25 -0
  87. package/helpers/autoTags.d.ts +1 -0
  88. package/helpers/autoTags.js +27 -0
  89. package/helpers/azureEnv.d.ts +21 -0
  90. package/helpers/azureEnv.js +102 -0
  91. package/helpers/configHelper.d.ts +5 -0
  92. package/helpers/configHelper.js +54 -0
  93. package/helpers/index.d.ts +4 -0
  94. package/helpers/index.js +41 -0
  95. package/helpers/rsHelpers.d.ts +18 -0
  96. package/helpers/rsHelpers.js +92 -0
  97. package/helpers/stackEnv.d.ts +4 -0
  98. package/helpers/stackEnv.js +54 -0
  99. package/index.d.ts +14 -0
  100. package/index.js +53 -0
  101. package/logs/Logs.d.ts +48 -0
  102. package/logs/Logs.js +154 -0
  103. package/logs/helpers.d.ts +1 -0
  104. package/logs/helpers.js +38 -0
  105. package/logs/index.d.ts +1 -0
  106. package/logs/index.js +18 -0
  107. package/package.json +34 -0
  108. package/services/Automation.d.ts +16 -0
  109. package/services/Automation.js +85 -0
  110. package/services/AzSearch.d.ts +20 -0
  111. package/services/AzSearch.js +113 -0
  112. package/services/ServiceBus.d.ts +42 -0
  113. package/services/ServiceBus.js +256 -0
  114. package/services/index.d.ts +3 -0
  115. package/services/index.js +20 -0
  116. package/storage/StorageAccount.d.ts +53 -0
  117. package/storage/StorageAccount.js +261 -0
  118. package/storage/helpers.d.ts +24 -0
  119. package/storage/helpers.js +89 -0
  120. package/storage/index.d.ts +2 -0
  121. package/storage/index.js +42 -0
  122. package/types.d.ts +125 -0
  123. package/types.js +3 -0
  124. package/vault/EncryptionKey.d.ts +21 -0
  125. package/vault/EncryptionKey.js +73 -0
  126. package/vault/KeyVault.d.ts +31 -0
  127. package/vault/KeyVault.js +110 -0
  128. package/vault/VaultSecret.d.ts +23 -0
  129. package/vault/VaultSecret.js +72 -0
  130. package/vault/VaultSecrets.d.ts +25 -0
  131. package/vault/VaultSecrets.js +31 -0
  132. package/vault/helpers.d.ts +1 -0
  133. package/vault/helpers.js +13 -0
  134. package/vault/index.d.ts +5 -0
  135. package/vault/index.js +45 -0
  136. package/vm/DiskEncryptionSet.d.ts +16 -0
  137. package/vm/DiskEncryptionSet.js +74 -0
  138. package/vm/VirtualMachine.d.ts +45 -0
  139. package/vm/VirtualMachine.js +192 -0
  140. package/vm/helpers.d.ts +16 -0
  141. package/vm/helpers.js +15 -0
  142. package/vm/index.d.ts +3 -0
  143. package/vm/index.js +43 -0
  144. package/vnet/AzCdn.d.ts +44 -0
  145. package/vnet/AzCdn.js +276 -0
  146. package/vnet/Basion.d.ts +19 -0
  147. package/vnet/Basion.js +78 -0
  148. package/vnet/DnsZone.d.ts +36 -0
  149. package/vnet/DnsZone.js +113 -0
  150. package/vnet/Firewall.d.ts +53 -0
  151. package/vnet/Firewall.js +136 -0
  152. package/vnet/FirewallPolicies/FirewallPolicyBuilder.d.ts +18 -0
  153. package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +91 -0
  154. package/vnet/FirewallPolicies/commonPolicies.d.ts +10 -0
  155. package/vnet/FirewallPolicies/commonPolicies.js +55 -0
  156. package/vnet/FirewallPolicies/index.d.ts +0 -0
  157. package/vnet/FirewallPolicies/index.js +2 -0
  158. package/vnet/IpAddresses.d.ts +36 -0
  159. package/vnet/IpAddresses.js +74 -0
  160. package/vnet/NetworkPeering.d.ts +21 -0
  161. package/vnet/NetworkPeering.js +85 -0
  162. package/vnet/PrivateDnsZone.d.ts +38 -0
  163. package/vnet/PrivateDnsZone.js +111 -0
  164. package/vnet/PrivateEndpoint.d.ts +43 -0
  165. package/vnet/PrivateEndpoint.js +181 -0
  166. package/vnet/RouteTable.d.ts +22 -0
  167. package/vnet/RouteTable.js +75 -0
  168. package/vnet/VirtualNetwork.d.ts +99 -0
  169. package/vnet/VirtualNetwork.js +311 -0
  170. package/vnet/VpnGateway.d.ts +18 -0
  171. package/vnet/VpnGateway.js +90 -0
  172. package/vnet/helpers.d.ts +16 -0
  173. package/vnet/helpers.js +47 -0
  174. package/vnet/index.d.ts +13 -0
  175. package/vnet/index.js +53 -0
  176. package/vnet/securityRules/SecurityRuleBuilder.d.ts +12 -0
  177. package/vnet/securityRules/SecurityRuleBuilder.js +55 -0
  178. package/vnet/securityRules/commonRules.d.ts +9 -0
  179. package/vnet/securityRules/commonRules.js +94 -0
  180. package/vnet/securityRules/index.d.ts +2 -0
  181. package/vnet/securityRules/index.js +19 -0
@@ -0,0 +1,77 @@
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.LogicApp = void 0;
37
+ const logic = __importStar(require("@pulumi/azure-native/logic"));
38
+ const base_1 = require("../base");
39
+ class LogicApp extends base_1.BaseResourceComponent {
40
+ id;
41
+ resourceName;
42
+ constructor(name, args, opts) {
43
+ super('LogicApp', name, args, opts);
44
+ const { rsGroup, defaultUAssignedId, integrationAccount, workflow } = args;
45
+ const account = new logic.IntegrationAccount(name, {
46
+ ...integrationAccount,
47
+ ...rsGroup,
48
+ sku: { name: integrationAccount.sku },
49
+ }, { dependsOn: opts?.dependsOn, parent: this });
50
+ const wf = new logic.Workflow(name, {
51
+ ...rsGroup,
52
+ ...workflow,
53
+ identity: {
54
+ type: defaultUAssignedId?.id
55
+ ? logic.ManagedServiceIdentityType.UserAssigned
56
+ : logic.ManagedServiceIdentityType.SystemAssigned,
57
+ userAssignedIdentities: defaultUAssignedId?.id ? [defaultUAssignedId.id] : undefined,
58
+ },
59
+ integrationAccount: { id: account.id },
60
+ }, {
61
+ ...opts,
62
+ dependsOn: account,
63
+ parent: this,
64
+ });
65
+ this.id = wf.id;
66
+ this.resourceName = wf.name;
67
+ this.registerOutputs();
68
+ }
69
+ getOutputs() {
70
+ return {
71
+ id: this.id,
72
+ resourceName: this.resourceName,
73
+ };
74
+ }
75
+ }
76
+ exports.LogicApp = LogicApp;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naWNBcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL0xvZ2ljQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtFQUFvRDtBQUVwRCxrQ0FBZ0U7QUFjaEUsTUFBYSxRQUFTLFNBQVEsNEJBQW1DO0lBQy9DLEVBQUUsQ0FBd0I7SUFDMUIsWUFBWSxDQUF3QjtJQUVwRCxZQUFZLElBQVksRUFBRSxJQUFrQixFQUFFLElBQXNDO1FBQ2xGLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMzRSxNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FDMUMsSUFBSSxFQUNKO1lBQ0UsR0FBRyxrQkFBa0I7WUFDckIsR0FBRyxPQUFPO1lBQ1YsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtTQUN0QyxFQUNELEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUM3QyxDQUFDO1FBRUYsTUFBTSxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUMzQixJQUFJLEVBQ0o7WUFDRSxHQUFHLE9BQU87WUFDVixHQUFHLFFBQVE7WUFDWCxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEVBQUU7b0JBQzFCLENBQUMsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsWUFBWTtvQkFDL0MsQ0FBQyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxjQUFjO2dCQUVuRCxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDckY7WUFDRCxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1NBQ3ZDLEVBQ0Q7WUFDRSxHQUFHLElBQUk7WUFDUCxTQUFTLEVBQUUsT0FBTztZQUNsQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFFNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbkRELDRCQW1EQyJ9
@@ -0,0 +1,45 @@
1
+ import * as ss from '@pulumi/azure-native/signalrservice';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseResourceComponent, CommonBaseArgs } from '../base';
4
+ import * as types from '../types';
5
+ export interface SignalRArgs extends CommonBaseArgs, types.WithUserAssignedIdentity, Pick<ss.SignalRArgs, 'kind' | 'cors' | 'features' | 'tls' | 'identity'> {
6
+ sku: {
7
+ /**
8
+ * Optional, integer. The unit count of the resource.
9
+ * 1 for Free_F1/Standard_S1/Premium_P1, 100 for Premium_P2 by default.
10
+ *
11
+ * If present, following values are allowed:
12
+ * Free_F1: 1;
13
+ * Standard_S1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100;
14
+ * Premium_P1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100;
15
+ * Premium_P2: 100,200,300,400,500,600,700,800,900,1000;
16
+ */
17
+ capacity?: pulumi.Input<number>;
18
+ /**
19
+ * The name of the SKU. Required.
20
+ *
21
+ * Allowed values: Standard_S1, Free_F1, Premium_P1, Premium_P2
22
+ */
23
+ name: 'Standard_S1' | 'Free_F1' | 'Premium_P1' | 'Premium_P2';
24
+ /**
25
+ * Optional tier of this particular SKU. 'Standard' or 'Free'.
26
+ *
27
+ * `Basic` is deprecated, use `Standard` instead.
28
+ */
29
+ tier?: ss.SignalRSkuTier;
30
+ };
31
+ disableAadAuth?: boolean;
32
+ disableLocalAuth?: boolean;
33
+ network?: Pick<types.NetworkArgs, 'defaultAction' | 'ipRules' | 'privateLink' | 'publicNetworkAccess'>;
34
+ }
35
+ export declare class SignalR extends BaseResourceComponent<SignalRArgs> {
36
+ readonly id: pulumi.Output<string>;
37
+ readonly resourceName: pulumi.Output<string>;
38
+ constructor(name: string, args: SignalRArgs, opts?: pulumi.ComponentResourceOptions);
39
+ getOutputs(): {
40
+ id: pulumi.Output<string>;
41
+ resourceName: pulumi.Output<string>;
42
+ };
43
+ private createPrivateLink;
44
+ private addSecretsToVault;
45
+ }
package/app/SignalR.js ADDED
@@ -0,0 +1,125 @@
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SignalR = void 0;
37
+ const ss = __importStar(require("@pulumi/azure-native/signalrservice"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const base_1 = require("../base");
40
+ const vault = __importStar(require("../vault"));
41
+ const PrivateEndpoint_1 = require("../vnet/PrivateEndpoint");
42
+ class SignalR extends base_1.BaseResourceComponent {
43
+ id;
44
+ resourceName;
45
+ constructor(name, args, opts) {
46
+ super('SignalR', name, args, opts);
47
+ const { rsGroup, network, sku, ...props } = args;
48
+ const isFreeTier = sku.name === 'Free_F1';
49
+ const service = new ss.SignalR(name, {
50
+ ...props,
51
+ ...rsGroup,
52
+ sku,
53
+ publicNetworkAccess: network?.publicNetworkAccess ? 'Enabled' : network?.privateLink ? 'Disabled' : 'Enabled',
54
+ networkACLs: isFreeTier
55
+ ? undefined
56
+ : network?.privateLink
57
+ ? {
58
+ defaultAction: ss.ACLAction.Allow,
59
+ publicNetwork: {
60
+ allow: [ss.SignalRRequestType.ClientConnection],
61
+ deny: [ss.SignalRRequestType.ServerConnection, ss.SignalRRequestType.RESTAPI],
62
+ },
63
+ privateEndpoints: [
64
+ {
65
+ name: '',
66
+ allow: [ss.SignalRRequestType.ClientConnection, ss.SignalRRequestType.ServerConnection],
67
+ deny: [ss.SignalRRequestType.RESTAPI],
68
+ },
69
+ ],
70
+ }
71
+ : {
72
+ defaultAction: ss.ACLAction.Allow,
73
+ publicNetwork: {
74
+ allow: [ss.SignalRRequestType.ClientConnection, ss.SignalRRequestType.ServerConnection],
75
+ deny: [ss.SignalRRequestType.RESTAPI],
76
+ },
77
+ },
78
+ }, { ...opts, parent: this });
79
+ this.createPrivateLink(service);
80
+ this.addSecretsToVault(service);
81
+ this.id = service.id;
82
+ this.resourceName = service.name;
83
+ this.registerOutputs();
84
+ }
85
+ getOutputs() {
86
+ return {
87
+ id: this.id,
88
+ resourceName: this.resourceName,
89
+ };
90
+ }
91
+ createPrivateLink(service) {
92
+ const { rsGroup, network } = this.args;
93
+ if (!network?.privateLink)
94
+ return;
95
+ return new PrivateEndpoint_1.PrivateEndpoint(this.name, { ...network.privateLink, resourceInfo: service, rsGroup, type: 'signalR' }, { dependsOn: service, parent: this });
96
+ }
97
+ addSecretsToVault(service) {
98
+ const { rsGroup, disableLocalAuth, vaultInfo } = this.args;
99
+ if (disableLocalAuth || !vaultInfo)
100
+ return;
101
+ pulumi.output([service.name, rsGroup.resourceGroupName]).apply(async ([svName, rgName]) => {
102
+ if (!svName)
103
+ return;
104
+ const keys = await ss.listSignalRKeys({
105
+ resourceName: svName,
106
+ resourceGroupName: rgName,
107
+ });
108
+ new vault.VaultSecrets(this.name, {
109
+ vaultInfo,
110
+ secrets: {
111
+ [`${this.name}-primary-conn`]: {
112
+ value: keys.primaryConnectionString,
113
+ contentType: `SignalR Primary ConnectionString`,
114
+ },
115
+ [`${this.name}-secondary-conn`]: {
116
+ value: keys.secondaryConnectionString,
117
+ contentType: `SignalR Secondary ConnectionString`,
118
+ },
119
+ },
120
+ }, { dependsOn: service, parent: this });
121
+ });
122
+ }
123
+ }
124
+ exports.SignalR = SignalR;
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnbmFsUi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvU2lnbmFsUi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3RUFBMEQ7QUFDMUQsdURBQXlDO0FBQ3pDLGtDQUFnRTtBQUVoRSxnREFBa0M7QUFDbEMsNkRBQTBEO0FBcUMxRCxNQUFhLE9BQVEsU0FBUSw0QkFBa0M7SUFDN0MsRUFBRSxDQUF3QjtJQUMxQixZQUFZLENBQXdCO0lBRXBELFlBQVksSUFBWSxFQUFFLElBQWlCLEVBQUUsSUFBc0M7UUFDakYsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUNqRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztRQUUxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQzVCLElBQUksRUFDSjtZQUNFLEdBQUcsS0FBSztZQUNSLEdBQUcsT0FBTztZQUNWLEdBQUc7WUFDSCxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzdHLFdBQVcsRUFBRSxVQUFVO2dCQUNyQixDQUFDLENBQUMsU0FBUztnQkFDWCxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVc7b0JBQ3RCLENBQUMsQ0FBQzt3QkFDRSxhQUFhLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLO3dCQUNqQyxhQUFhLEVBQUU7NEJBQ2IsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFD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
package/app/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from './AppCert';
2
+ export * from './AppConfig';
3
+ export * from './AppService';
4
+ export * from './IoTHub';
5
+ export * from './LogicApp';
6
+ export * from './SignalR';
package/app/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./AppCert"), exports);
18
+ __exportStar(require("./AppConfig"), exports);
19
+ __exportStar(require("./AppService"), exports);
20
+ __exportStar(require("./IoTHub"), exports);
21
+ __exportStar(require("./LogicApp"), exports);
22
+ __exportStar(require("./SignalR"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsOENBQTRCO0FBQzVCLCtDQUE2QjtBQUM3QiwyQ0FBeUI7QUFDekIsNkNBQTJCO0FBQzNCLDRDQUEwQiJ9
@@ -0,0 +1,52 @@
1
+ import * as azAd from '@pulumi/azuread';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseComponent } from '../base/BaseComponent';
4
+ import { WithMemberOfArgs, WithVaultInfo } from '../types';
5
+ import { RoleAssignmentArgs } from './RoleAssignment';
6
+ export declare enum GroupMembershipClaimsTypes {
7
+ None = "None",
8
+ SecurityGroup = "SecurityGroup",
9
+ DirectoryRole = "DirectoryRole",
10
+ ApplicationGroup = "ApplicationGroup",
11
+ All = "All"
12
+ }
13
+ export interface AppRegistrationArgs extends WithVaultInfo, WithMemberOfArgs, Pick<azAd.ApplicationArgs, 'identifierUris' | 'oauth2PostResponseRequired' | 'optionalClaims' | 'featureTags' | 'api' | 'appRoles' | 'owners' | 'requiredResourceAccesses'> {
14
+ info?: Pick<azAd.ApplicationArgs, 'description' | 'displayName' | 'logoImage' | 'marketingUrl' | 'notes' | 'privacyStatementUrl'>;
15
+ groupMembershipClaims?: pulumi.Input<GroupMembershipClaimsTypes[]>;
16
+ identifierUris?: pulumi.Input<pulumi.Input<string>[]>;
17
+ enableClientSecret?: pulumi.Input<boolean>;
18
+ servicePrincipal?: Pick<azAd.ServicePrincipalArgs, 'notificationEmailAddresses' | 'preferredSingleSignOnMode' | 'samlSingleSignOn' | 'appRoleAssignmentRequired'> & {
19
+ enabled: boolean;
20
+ };
21
+ appType?: 'web' | 'singlePageApplication' | 'native';
22
+ /** This is require when the appType is 'web' or 'singlePageApplication' */
23
+ redirectUris?: pulumi.Input<pulumi.Input<string>[]>;
24
+ /** This option is for the appType is 'web' */
25
+ homepageUrl?: pulumi.Input<string>;
26
+ /** This option is for the appType is 'web' */
27
+ logoutUrl?: pulumi.Input<string>;
28
+ /** This option is for the appType is 'web' */
29
+ implicitGrant?: pulumi.Input<{
30
+ accessTokenIssuanceEnabled?: pulumi.Input<boolean>;
31
+ idTokenIssuanceEnabled?: pulumi.Input<boolean>;
32
+ }>;
33
+ roleAssignments?: Array<Omit<RoleAssignmentArgs, 'roleAssignmentName' | 'principalId' | 'principalType'>>;
34
+ }
35
+ export declare class AppRegistration extends BaseComponent<AppRegistrationArgs> {
36
+ readonly clientId: pulumi.Output<string>;
37
+ readonly clientSecret?: pulumi.Output<string>;
38
+ readonly servicePrincipalId?: pulumi.Output<string>;
39
+ readonly servicePrincipalPassword?: pulumi.Output<string>;
40
+ constructor(name: string, args?: AppRegistrationArgs, opts?: pulumi.ComponentResourceOptions);
41
+ getOutputs(): {
42
+ clientId: pulumi.Output<string>;
43
+ clientSecret: pulumi.Output<string> | undefined;
44
+ servicePrincipalId: pulumi.Output<string> | undefined;
45
+ servicePrincipalPassword: pulumi.Output<string> | undefined;
46
+ };
47
+ private createServicePrincipal;
48
+ private createClientSecret;
49
+ private addRoleAssignments;
50
+ private addMemberOf;
51
+ private addSecret;
52
+ }
@@ -0,0 +1,165 @@
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AppRegistration = exports.GroupMembershipClaimsTypes = void 0;
37
+ const azAd = __importStar(require("@pulumi/azuread"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const BaseComponent_1 = require("../base/BaseComponent");
40
+ const helpers_1 = require("../base/helpers");
41
+ const vault_1 = require("../vault");
42
+ const RoleAssignment_1 = require("./RoleAssignment");
43
+ var GroupMembershipClaimsTypes;
44
+ (function (GroupMembershipClaimsTypes) {
45
+ GroupMembershipClaimsTypes["None"] = "None";
46
+ GroupMembershipClaimsTypes["SecurityGroup"] = "SecurityGroup";
47
+ GroupMembershipClaimsTypes["DirectoryRole"] = "DirectoryRole";
48
+ GroupMembershipClaimsTypes["ApplicationGroup"] = "ApplicationGroup";
49
+ GroupMembershipClaimsTypes["All"] = "All";
50
+ })(GroupMembershipClaimsTypes || (exports.GroupMembershipClaimsTypes = GroupMembershipClaimsTypes = {}));
51
+ class AppRegistration extends BaseComponent_1.BaseComponent {
52
+ clientId;
53
+ clientSecret;
54
+ servicePrincipalId;
55
+ servicePrincipalPassword;
56
+ //private readonly _app: azAd.Application;
57
+ constructor(name, args = { appType: 'native' }, opts) {
58
+ super((0, helpers_1.getComponentResourceType)('AppRegistration'), name, args, opts);
59
+ const ops = args.info ?? {
60
+ displayName: name,
61
+ description: name,
62
+ };
63
+ //Application
64
+ const app = new azAd.Application(name, {
65
+ ...ops,
66
+ preventDuplicateNames: true,
67
+ signInAudience: 'AzureADMyOrg',
68
+ featureTags: args.featureTags,
69
+ oauth2PostResponseRequired: args.oauth2PostResponseRequired,
70
+ identifierUris: args.identifierUris,
71
+ requiredResourceAccesses: args.requiredResourceAccesses,
72
+ optionalClaims: args.optionalClaims,
73
+ groupMembershipClaims: args.groupMembershipClaims,
74
+ appRoles: args.appRoles,
75
+ //Expose the API
76
+ api: args.api,
77
+ owners: args.owners,
78
+ //Clients Apps
79
+ web: args.appType == 'web'
80
+ ? {
81
+ redirectUris: args.redirectUris,
82
+ logoutUrl: args.logoutUrl,
83
+ implicitGrant: args.implicitGrant,
84
+ homepageUrl: args.homepageUrl,
85
+ }
86
+ : undefined,
87
+ singlePageApplication: args.appType == 'singlePageApplication' ? { redirectUris: args.redirectUris } : undefined,
88
+ }, { ...opts, parent: this });
89
+ this.addSecret('client-id', app.clientId);
90
+ if (args.enableClientSecret) {
91
+ const secret = this.createClientSecret(app);
92
+ this.clientSecret = secret.clientSecret;
93
+ }
94
+ if (args.servicePrincipal?.enabled) {
95
+ const sp = this.createServicePrincipal(app);
96
+ this.servicePrincipalId = sp.servicePrincipalId;
97
+ this.servicePrincipalPassword = sp.servicePrincipalPassword;
98
+ }
99
+ this.addMemberOf(app);
100
+ this.clientId = app.clientId;
101
+ this.registerOutputs(this.getOutputs());
102
+ }
103
+ getOutputs() {
104
+ return {
105
+ clientId: this.clientId,
106
+ clientSecret: this.clientSecret,
107
+ servicePrincipalId: this.servicePrincipalId,
108
+ servicePrincipalPassword: this.servicePrincipalPassword,
109
+ };
110
+ }
111
+ createServicePrincipal(app) {
112
+ //Service Principal
113
+ const sp = new azAd.ServicePrincipal(`${this.name}-sp`, {
114
+ ...this.args.servicePrincipal,
115
+ description: this.name,
116
+ clientId: app.clientId,
117
+ owners: this.args.owners,
118
+ }, { dependsOn: app, parent: this });
119
+ var spPass = new azAd.ServicePrincipalPassword(`${this.name}-sp-pass`, {
120
+ displayName: this.name,
121
+ servicePrincipalId: pulumi.interpolate `/servicePrincipals/${sp.objectId}`,
122
+ }, { dependsOn: sp, parent: this });
123
+ this.addRoleAssignments(sp);
124
+ this.addSecret('sp-pass', spPass.value);
125
+ return {
126
+ servicePrincipalId: sp.id,
127
+ servicePrincipalPassword: spPass.value,
128
+ };
129
+ }
130
+ createClientSecret(app) {
131
+ const clientSecret = new azAd.ApplicationPassword(`${this.name}-client-secret`, {
132
+ displayName: this.name,
133
+ applicationId: app.id,
134
+ }, { dependsOn: app, parent: this });
135
+ this.addSecret('client-secret', clientSecret.value);
136
+ return {
137
+ clientSecret: clientSecret.value,
138
+ };
139
+ }
140
+ addRoleAssignments(sv) {
141
+ const { roleAssignments } = this.args;
142
+ if (!roleAssignments)
143
+ return;
144
+ return roleAssignments.map((role) => new RoleAssignment_1.RoleAssignment(`${this.name}-${role.roleName}`, { ...role, principalId: sv.objectId, principalType: 'ServicePrincipal' }, { dependsOn: sv, parent: this }));
145
+ }
146
+ addMemberOf(app) {
147
+ if (!this.args.memberof)
148
+ return;
149
+ this.args.memberof.map((group) => pulumi.output(group).apply((id) => new azAd.GroupMember(`${this.name}-${id.objectId}`, {
150
+ groupObjectId: id.objectId,
151
+ memberObjectId: app.objectId,
152
+ }, { dependsOn: app, parent: this })));
153
+ }
154
+ addSecret(name, value) {
155
+ if (!this.args.vaultInfo)
156
+ return;
157
+ new vault_1.VaultSecret(`${this.name}-${name}`, {
158
+ vaultInfo: this.args.vaultInfo,
159
+ value: value,
160
+ contentType: `${this.name} ${name}`,
161
+ }, { dependsOn: this.opts?.dependsOn, parent: this });
162
+ }
163
+ }
164
+ exports.AppRegistration = AppRegistration;
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwUmVnaXN0cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6QWQvQXBwUmVnaXN0cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFDekMseURBQXNEO0FBQ3RELDZDQUEyRDtBQUUzRCxvQ0FBdUM7QUFDdkMscURBQXNFO0FBRXRFLElBQVksMEJBTVg7QUFORCxXQUFZLDBCQUEwQjtJQUNwQywyQ0FBYSxDQUFBO0lBQ2IsNkRBQStCLENBQUE7SUFDL0IsNkRBQStCLENBQUE7SUFDL0IsbUVBQXFDLENBQUE7SUFDckMseUNBQVcsQ0FBQTtBQUNiLENBQUMsRUFOVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQU1yQztBQTRDRCxNQUFhLGVBQWdCLFNBQVEsNkJBQWtDO0lBQ3JELFFBQVEsQ0FBd0I7SUFDaEMsWUFBWSxDQUF5QjtJQUNyQyxrQkFBa0IsQ0FBeUI7SUFDM0Msd0JBQXdCLENBQXlCO0lBRWpFLDBDQUEwQztJQUUxQyxZQUFZLElBQVksRUFBRSxPQUE0QixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFzQztRQUNqSCxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSTtZQUN2QixXQUFXLEVBQUUsSUFBSTtZQUNqQixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDO1FBQ0YsYUFBYTtRQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FDOUIsSUFBSSxFQUNKO1lBQ0UsR0FBRyxHQUFHO1lBQ04scUJBQXFCLEVBQUUsSUFBSTtZQUMzQixjQUFjLEVBQUUsY0FBYztZQUU5QixXQUFXLEVBQUUs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
@@ -0,0 +1,14 @@
1
+ import * as azAd from '@pulumi/azuread';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseComponent } from '../base/BaseComponent';
4
+ export interface AzRoleArgs extends Pick<azAd.GroupArgs, 'members' | 'owners' | 'preventDuplicateNames'> {
5
+ }
6
+ export declare class AzRole extends BaseComponent<AzRoleArgs> {
7
+ readonly objectId: pulumi.Output<string>;
8
+ readonly displayName: pulumi.Output<string>;
9
+ constructor(name: string, args?: AzRoleArgs, opts?: pulumi.ComponentResourceOptions);
10
+ getOutputs(): {
11
+ objectId: pulumi.Output<string>;
12
+ displayName: pulumi.Output<string>;
13
+ };
14
+ }
package/azAd/AzRole.js ADDED
@@ -0,0 +1,72 @@
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AzRole = void 0;
37
+ const azAd = __importStar(require("@pulumi/azuread"));
38
+ const BaseComponent_1 = require("../base/BaseComponent");
39
+ const helpers_1 = require("../base/helpers");
40
+ const helpers_2 = require("../helpers");
41
+ class AzRole extends BaseComponent_1.BaseComponent {
42
+ objectId;
43
+ displayName;
44
+ constructor(name, args = {}, opts) {
45
+ const n = `rol-${name.toLowerCase().replace(/\s+/g, '-')}`;
46
+ super((0, helpers_1.getComponentResourceType)('AzRole'), n, args, opts);
47
+ const roleName = name.includes(helpers_2.stackInfo.stack)
48
+ ? `ROL ${name}`.toUpperCase()
49
+ : `ROL ${helpers_2.stackInfo.stack} ${name}`.toUpperCase();
50
+ const role = new azAd.Group(n, {
51
+ displayName: roleName,
52
+ description: roleName,
53
+ members: args.members,
54
+ owners: args.owners,
55
+ securityEnabled: true,
56
+ mailEnabled: false,
57
+ preventDuplicateNames: args.preventDuplicateNames,
58
+ assignableToRole: false,
59
+ }, { parent: this });
60
+ this.objectId = role.objectId;
61
+ this.displayName = role.displayName;
62
+ this.registerOutputs(this.getOutputs());
63
+ }
64
+ getOutputs() {
65
+ return {
66
+ objectId: this.objectId,
67
+ displayName: this.displayName,
68
+ };
69
+ }
70
+ }
71
+ exports.AzRole = AzRole;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpSb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6QWQvQXpSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUV4Qyx5REFBc0Q7QUFDdEQsNkNBQTJEO0FBQzNELHdDQUF1QztBQUl2QyxNQUFhLE1BQU8sU0FBUSw2QkFBeUI7SUFDbkMsUUFBUSxDQUF3QjtJQUNoQyxXQUFXLENBQXdCO0lBRW5ELFlBQVksSUFBWSxFQUFFLE9BQW1CLEVBQUUsRUFBRSxJQUFzQztRQUNyRixNQUFNLENBQUMsR0FBRyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0QsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFTLENBQUMsS0FBSyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUM3QixDQUFDLENBQUMsT0FBTyxtQkFBUyxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQ3pCLENBQUMsRUFDRDtZQUNFLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFFbkIsZUFBZSxFQUFFLElBQUk7WUFDckIsV0FBVyxFQUFFLEtBQUs7WUFDbEIscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUNqRCxnQkFBZ0IsRUFBRSxLQUFLO1NBQ3hCLEVBQ0QsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ2pCLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXBDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUM5QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeENELHdCQXdDQyJ9
@@ -0,0 +1,10 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import { BaseComponent } from '../base/BaseComponent';
3
+ export interface CustomRoleArgs {
4
+ enableJustInTimeRemoteRole?: boolean;
5
+ }
6
+ export declare class CustomRoles extends BaseComponent<CustomRoleArgs> {
7
+ constructor(name: string, args: CustomRoleArgs, opts?: pulumi.ComponentResourceOptions);
8
+ getOutputs(): {};
9
+ private createJustInTimeRemoteRole;
10
+ }