@drunk-pulumi/azure-components 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -1
- package/ResourceBuilder.d.ts +85 -46
- package/ResourceBuilder.js +147 -46
- package/aks/AzKubernetes.d.ts +17 -3
- package/aks/AzKubernetes.js +92 -43
- package/aks/ContainerRegistry.d.ts +4 -3
- package/aks/ContainerRegistry.js +22 -19
- package/apim/Apim.d.ts +51 -0
- package/apim/Apim.js +248 -0
- package/apim/ApimApi.d.ts +34 -0
- package/apim/ApimApi.js +193 -0
- package/apim/ApimApiSet.d.ts +27 -0
- package/apim/ApimApiSet.js +88 -0
- package/apim/ApimPolicyBuilder.d.ts +93 -0
- package/apim/ApimPolicyBuilder.js +294 -0
- package/apim/ApimProduct.d.ts +27 -0
- package/apim/ApimProduct.js +118 -0
- package/apim/index.d.ts +2 -0
- package/apim/index.js +19 -0
- package/apim/openAPI3Type.d.ts +85 -0
- package/apim/openAPI3Type.js +3 -0
- package/apim/openApiHelper.d.ts +1 -0
- package/apim/openApiHelper.js +36 -0
- package/app/SignalR.d.ts +3 -3
- package/app/SignalR.js +35 -20
- package/azAd/AppRegistration.d.ts +15 -11
- package/azAd/AppRegistration.js +67 -68
- package/azAd/AzRole.js +2 -2
- package/azAd/GroupRole.d.ts +7 -17
- package/azAd/GroupRole.js +7 -17
- package/azAd/RoleAssignment.d.ts +1 -1
- package/azAd/RoleAssignment.js +5 -5
- package/azAd/UserAssignedIdentity.d.ts +3 -0
- package/azAd/UserAssignedIdentity.js +23 -7
- package/azAd/helpers/index.d.ts +0 -2
- package/azAd/helpers/index.js +26 -22
- package/azAd/helpers/rolesBuiltIn.d.ts +10 -19
- package/azAd/helpers/rolesBuiltIn.js +25868 -18593
- package/azAd/helpers/rsRoleDefinition.d.ts +12 -6
- package/azAd/helpers/rsRoleDefinition.js +48 -32
- package/base/BaseComponent.d.ts +1 -15
- package/base/BaseComponent.js +3 -22
- package/base/BaseResourceComponent.d.ts +24 -17
- package/base/BaseResourceComponent.js +61 -45
- package/base/helpers.d.ts +0 -6
- package/base/helpers.js +1 -18
- package/common/RandomPassword.js +4 -4
- package/common/RandomString.d.ts +1 -1
- package/common/RandomString.js +3 -3
- package/common/ResourceLocker.js +2 -2
- package/common/RsGroup.js +2 -2
- package/database/AzSql.d.ts +5 -5
- package/database/AzSql.js +37 -24
- package/database/MySql.d.ts +1 -1
- package/database/MySql.js +45 -28
- package/database/Postgres.d.ts +2 -1
- package/database/Postgres.js +29 -17
- package/database/Redis.d.ts +25 -4
- package/database/Redis.js +88 -25
- package/helpers/autoTags.js +37 -3
- package/helpers/certHelpers.d.ts +20 -0
- package/helpers/certHelpers.js +85 -0
- package/helpers/rsHelpers.d.ts +19 -1
- package/helpers/rsHelpers.js +27 -4
- package/helpers/stackEnv.d.ts +2 -1
- package/helpers/stackEnv.js +10 -7
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/package.json +11 -7
- package/services/Automation.d.ts +3 -1
- package/services/Automation.js +8 -8
- package/services/ServiceBus.d.ts +3 -2
- package/services/ServiceBus.js +17 -19
- package/types.d.ts +44 -15
- package/vault/EncryptionKey.d.ts +1 -1
- package/vault/EncryptionKey.js +4 -4
- package/vault/KeyVault.d.ts +3 -8
- package/vault/KeyVault.js +4 -7
- package/vault/VaultSecret.d.ts +1 -1
- package/vault/VaultSecret.js +9 -9
- package/vault/VaultSecrets.d.ts +2 -4
- package/vault/VaultSecrets.js +4 -6
- package/vault/helpers.d.ts +17 -0
- package/vault/helpers.js +56 -3
- package/vm/DiskEncryptionSet.js +2 -2
- package/vm/VirtualMachine.d.ts +2 -1
- package/vm/VirtualMachine.js +37 -25
- package/vnet/Basion.d.ts +4 -3
- package/vnet/Basion.js +17 -4
- package/vnet/DnsZone.d.ts +1 -1
- package/vnet/DnsZone.js +2 -2
- package/vnet/IpAddresses.d.ts +6 -2
- package/vnet/IpAddresses.js +2 -2
- package/vnet/NetworkPeering.d.ts +1 -1
- package/vnet/NetworkPeering.js +1 -1
- package/vnet/PrivateDnsZone.d.ts +1 -1
- package/vnet/PrivateDnsZone.js +4 -4
- package/vnet/PrivateEndpoint.d.ts +7 -10
- package/vnet/PrivateEndpoint.js +11 -10
- package/vnet/RouteTable.d.ts +1 -1
- package/vnet/RouteTable.js +2 -2
- package/vnet/VirtualNetwork.d.ts +30 -43
- package/vnet/VirtualNetwork.js +77 -43
- package/vnet/VpnGateway.js +2 -2
|
@@ -2,7 +2,7 @@ import * as types from '../../types';
|
|
|
2
2
|
export type RsRoleDefinitionType = Record<types.GroupRoleTypes, string[]>;
|
|
3
3
|
declare const rsRoles: {
|
|
4
4
|
rsGroup: {
|
|
5
|
-
admin:
|
|
5
|
+
admin: never[];
|
|
6
6
|
contributor: string[];
|
|
7
7
|
readOnly: string[];
|
|
8
8
|
};
|
|
@@ -51,12 +51,18 @@ declare const rsRoles: {
|
|
|
51
51
|
contributor: string[];
|
|
52
52
|
admin: never[];
|
|
53
53
|
};
|
|
54
|
+
virtualMachine: {
|
|
55
|
+
readOnly: string[];
|
|
56
|
+
contributor: string[];
|
|
57
|
+
admin: never[];
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
type RsRoleDefinitionWithMethods = RsRoleDefinitionType & {
|
|
61
|
+
getReadOnly: () => RsRoleDefinitionType;
|
|
62
|
+
getContributor: () => RsRoleDefinitionType;
|
|
54
63
|
};
|
|
55
64
|
export type RsRoleDefinitionObject = {
|
|
56
|
-
[K in keyof typeof rsRoles]:
|
|
57
|
-
getReadOnly: () => RsRoleDefinitionType;
|
|
58
|
-
getContributor: () => RsRoleDefinitionType;
|
|
59
|
-
};
|
|
65
|
+
[K in keyof typeof rsRoles]: RsRoleDefinitionWithMethods;
|
|
60
66
|
};
|
|
61
|
-
export declare const rsRoleDefinitions:
|
|
67
|
+
export declare const rsRoleDefinitions: Record<"storage" | "keyVault" | "containerRegistry" | "virtualMachine" | "rsGroup" | "redis" | "serviceBus" | "signalR" | "aks" | "iotHub" | "appConfig", RsRoleDefinitionWithMethods>;
|
|
62
68
|
export {};
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.rsRoleDefinitions = void 0;
|
|
4
|
+
const rsHelpers_1 = require("../../helpers/rsHelpers");
|
|
4
5
|
const rsRoles = {
|
|
5
6
|
rsGroup: {
|
|
6
|
-
admin: [
|
|
7
|
+
admin: [],
|
|
7
8
|
contributor: ['Contributor'],
|
|
8
9
|
readOnly: ['Reader'],
|
|
9
10
|
},
|
|
10
11
|
aks: {
|
|
11
|
-
readOnly: [
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
readOnly: [
|
|
13
|
+
'Azure Arc Kubernetes Viewer',
|
|
14
|
+
'Azure Kubernetes Service Cluster User Role',
|
|
15
|
+
'Azure Kubernetes Service RBAC Reader',
|
|
16
|
+
],
|
|
17
|
+
contributor: ['Azure Arc Kubernetes Writer'],
|
|
18
|
+
admin: ['Azure Arc Kubernetes Admin'],
|
|
14
19
|
},
|
|
15
20
|
iotHub: {
|
|
16
21
|
readOnly: ['IoT Hub Data Reader'],
|
|
@@ -61,19 +66,12 @@ const rsRoles = {
|
|
|
61
66
|
],
|
|
62
67
|
},
|
|
63
68
|
containerRegistry: {
|
|
64
|
-
readOnly: [
|
|
65
|
-
//'ACR Registry Catalog Lister',
|
|
66
|
-
'ACR Repository Reader',
|
|
67
|
-
'AcrQuarantineReader',
|
|
68
|
-
//'AcrPull',
|
|
69
|
-
],
|
|
69
|
+
readOnly: ['Container Registry Repository Reader', 'AcrPull'],
|
|
70
70
|
contributor: [
|
|
71
|
-
'
|
|
72
|
-
'AcrPull',
|
|
71
|
+
'Container Registry Repository Writer',
|
|
73
72
|
'AcrPush',
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
//'AcrQuarantineWriter',
|
|
73
|
+
'Container Registry Repository Contributor',
|
|
74
|
+
'Container Registry Data Importer and Data Reader',
|
|
77
75
|
],
|
|
78
76
|
admin: ['AcrDelete'],
|
|
79
77
|
},
|
|
@@ -97,24 +95,42 @@ const rsRoles = {
|
|
|
97
95
|
contributor: ['Redis Cache Contributor'],
|
|
98
96
|
admin: [],
|
|
99
97
|
},
|
|
98
|
+
virtualMachine: {
|
|
99
|
+
readOnly: ['Virtual Machine User Login', 'Virtual Machine Local User Login'],
|
|
100
|
+
contributor: ['Virtual Machine Contributor'],
|
|
101
|
+
admin: [],
|
|
102
|
+
},
|
|
100
103
|
};
|
|
101
104
|
function getRsRoleDefinitions() {
|
|
102
|
-
return Object.entries(rsRoles).reduce((acc, [key, roles]) => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}, {});
|
|
105
|
+
// return Object.entries(rsRoles).reduce((acc, [key, roles]) => {
|
|
106
|
+
// acc[key as keyof typeof rsRoles] = {
|
|
107
|
+
// ...roles,
|
|
108
|
+
// getReadOnly: () => ({
|
|
109
|
+
// admin: [],
|
|
110
|
+
// contributor: [],
|
|
111
|
+
// readOnly: roles.readOnly,
|
|
112
|
+
// }),
|
|
113
|
+
// getContributor: () => ({
|
|
114
|
+
// admin: [],
|
|
115
|
+
// contributor: roles.contributor,
|
|
116
|
+
// readOnly: roles.readOnly,
|
|
117
|
+
// }),
|
|
118
|
+
// };
|
|
119
|
+
// return acc;
|
|
120
|
+
// }, {} as RsRoleDefinitionObject);
|
|
121
|
+
return (0, rsHelpers_1.dictReduce)(rsRoles, (key, roles) => ({
|
|
122
|
+
...roles,
|
|
123
|
+
getReadOnly: () => ({
|
|
124
|
+
admin: [],
|
|
125
|
+
contributor: [],
|
|
126
|
+
readOnly: roles.readOnly,
|
|
127
|
+
}),
|
|
128
|
+
getContributor: () => ({
|
|
129
|
+
admin: [],
|
|
130
|
+
contributor: roles.contributor,
|
|
131
|
+
readOnly: roles.readOnly,
|
|
132
|
+
}),
|
|
133
|
+
}));
|
|
118
134
|
}
|
|
119
135
|
exports.rsRoleDefinitions = getRsRoleDefinitions();
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNSb2xlRGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hekFkL2hlbHBlcnMvcnNSb2xlRGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1REFBcUQ7QUFJckQsTUFBTSxPQUFPLEdBQUc7SUFDZCxPQUFPLEVBQUU7UUFDUCxLQUFLLEVBQUUsRUFBRTtRQUNULFdBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUM1QixRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDckI7SUFDRCxHQUFHLEVBQUU7UUFDSCxRQUFRLEVBQUU7WUFDUiw2QkFBNkI7WUFDN0IsNENBQTRDO1lBQzVDLHNDQUFzQztTQUN2QztRQUNELFdBQVcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO1FBQzVDLEtBQUssRUFBRSxDQUFDLDRCQUE0QixDQUFDO0tBQ3RDO0lBQ0QsTUFBTSxFQUFFO1FBQ04sUUFBUSxFQUFFLENBQUMscUJBQXFCLENBQUM7UUFDakMsV0FBVyxFQUFFLENBQUMsMEJBQTBCLENBQUM7UUFDekMsS0FBSyxFQUFFLENBQUMsOEJBQThCLEVBQUUsMEJBQTBCLENBQUM7S0FDcEU7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUU7WUFDUiwwQ0FBMEM7WUFDMUMsdUNBQXVDO1lBQ3ZDLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsNEJBQTRCO1lBQzVCLGtCQUFrQjtTQUNuQjtRQUNELFdBQVcsRUFBRTtZQUNYLGdDQUFnQztZQUNoQywwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLHVCQUF1QjtTQUN4QjtRQUNELEtBQUssRUFBRSxDQUFDLHlCQUF5QixFQUFFLHFDQUFxQyxDQUFDO0tBQzFFO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsUUFBUSxFQUFFO1lBQ1IsMEJBQTBCO1lBQzFCLG9DQUFvQztZQUNwQywyQkFBMkI7WUFDM0IsMkJBQTJCO1NBQzVCO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsb0NBQW9DO1lBQ3BDLDZCQUE2QjtZQUM3QixtREFBbUQ7WUFDbkQsK0JBQStCO1lBQy9CLHFDQUFxQztZQUNyQyx5Q0FBeUM7WUFDekMsa0RBQWtEO1lBQ2xELGdDQUFnQztZQUNoQyxzQ0FBc0M7WUFDdEMsbUNBQW1DO1lBQ25DLGdDQUFnQztTQUNqQztRQUNELEtBQUssRUFBRTtZQUNMLDJDQUEyQztZQUMzQyx5QkFBeUI7WUFDekIsMENBQTBDO1NBQzNDO0tBQ0Y7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixRQUFRLEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxTQUFTLENBQUM7UUFDN0QsV0FBVyxFQUFFO1lBQ1gsc0NBQXNDO1lBQ3RDLFNBQVM7WUFDVCwyQ0FBMkM7WUFDM0Msa0RBQWtEO1NBQ25EO1FBQ0QsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDO0tBQ3JCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsUUFBUSxFQUFFLENBQUMsK0JBQStCLENBQUM7UUFDM0MsV0FBVyxFQUFFLENBQUMsOEJBQThCLENBQUM7UUFDN0MsS0FBSyxFQUFFLEVBQUU7S0FDVjtJQUNELFVBQVUsRUFBRTtRQUNWLFFBQVEsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO1FBQzdDLFdBQVcsRUFBRSxDQUFDLCtCQUErQixDQUFDO1FBQzlDLEtBQUssRUFBRSxDQUFDLDhCQUE4QixDQUFDO0tBQ3hDO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsUUFBUSxFQUFFLENBQUMseUJBQXlCLENBQUM7UUFDckMsV0FBVyxFQUFFLENBQUMsb0JBQW9CLENBQUM7UUFDbkMsS0FBSyxFQUFFLENBQUMsd0JBQXdCLENBQUM7S0FDbEM7SUFDRCxLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUUsRUFBRTtRQUNaLFdBQVcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO1FBQ3hDLEtBQUssRUFBRSxFQUFFO0tBQ1Y7SUFDRCxjQUFjLEVBQUU7UUFDZCxRQUFRLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxrQ0FBa0MsQ0FBQztRQUM1RSxXQUFXLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztRQUM1QyxLQUFLLEVBQUUsRUFBRTtLQUNWO0NBQ0YsQ0FBQztBQVdGLFNBQVMsb0JBQW9CO0lBQzNCLGlFQUFpRTtJQUNqRSx5Q0FBeUM7SUFDekMsZ0JBQWdCO0lBQ2hCLDRCQUE0QjtJQUM1QixtQkFBbUI7SUFDbkIseUJBQXlCO0lBQ3pCLGtDQUFrQztJQUNsQyxVQUFVO0lBQ1YsK0JBQStCO0lBQy9CLG1CQUFtQjtJQUNuQix3Q0FBd0M7SUFDeEMsa0NBQWtDO0lBQ2xDLFVBQVU7SUFDVixPQUFPO0lBQ1AsZ0JBQWdCO0lBQ2hCLG9DQUFvQztJQUNwQyxPQUFPLElBQUEsc0JBQVUsRUFDZixPQUFPLEVBQ1AsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDYixDQUFDO1FBQ0MsR0FBRyxLQUFLO1FBQ1IsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbEIsS0FBSyxFQUFFLEVBQUU7WUFDVCxXQUFXLEVBQUUsRUFBRTtZQUNmLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDO1FBQ0YsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckIsS0FBSyxFQUFFLEVBQUU7WUFDVCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ3pCLENBQUM7S0FDNkIsQ0FBQSxDQUNwQyxDQUFDO0FBQ0osQ0FBQztBQUVZLFFBQUEsaUJBQWlCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyJ9
|
package/base/BaseComponent.d.ts
CHANGED
|
@@ -29,25 +29,11 @@ export declare abstract class BaseComponent<TArgs extends pulumi.Inputs> extends
|
|
|
29
29
|
* This method should be overridden by derived classes to ensure proper output registration.
|
|
30
30
|
* @param outputs - The outputs to register for this component
|
|
31
31
|
*/
|
|
32
|
-
protected registerOutputs(
|
|
32
|
+
protected registerOutputs(): void;
|
|
33
33
|
/**
|
|
34
34
|
* Abstract method that must be implemented by derived classes to expose component outputs.
|
|
35
35
|
* This method should return all relevant outputs that consumers of the component might need.
|
|
36
36
|
* @returns An object containing the component's outputs, either as direct values or Pulumi outputs
|
|
37
37
|
*/
|
|
38
38
|
abstract getOutputs(): pulumi.Inputs | pulumi.Output<pulumi.Inputs>;
|
|
39
|
-
/**
|
|
40
|
-
* Utility method to selectively extract specific properties from the component instance.
|
|
41
|
-
* Useful for creating a subset of component properties for downstream consumption.
|
|
42
|
-
*
|
|
43
|
-
* @template K - Generic type parameter constrained to keys of the component instance
|
|
44
|
-
* @param keys - Array of property names to extract from the component
|
|
45
|
-
* @returns A new object containing only the requested properties from the component
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* const component = new MyComponent();
|
|
49
|
-
* const subset = component.PickOutputs('name', 'id');
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
PickOutputs<K extends keyof this>(...keys: K[]): Pick<this, K>;
|
|
53
39
|
}
|
package/base/BaseComponent.js
CHANGED
|
@@ -71,28 +71,9 @@ class BaseComponent extends pulumi.ComponentResource {
|
|
|
71
71
|
* This method should be overridden by derived classes to ensure proper output registration.
|
|
72
72
|
* @param outputs - The outputs to register for this component
|
|
73
73
|
*/
|
|
74
|
-
registerOutputs(
|
|
75
|
-
super.registerOutputs(
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Utility method to selectively extract specific properties from the component instance.
|
|
79
|
-
* Useful for creating a subset of component properties for downstream consumption.
|
|
80
|
-
*
|
|
81
|
-
* @template K - Generic type parameter constrained to keys of the component instance
|
|
82
|
-
* @param keys - Array of property names to extract from the component
|
|
83
|
-
* @returns A new object containing only the requested properties from the component
|
|
84
|
-
* @example
|
|
85
|
-
* ```typescript
|
|
86
|
-
* const component = new MyComponent();
|
|
87
|
-
* const subset = component.PickOutputs('name', 'id');
|
|
88
|
-
* ```
|
|
89
|
-
*/
|
|
90
|
-
PickOutputs(...keys) {
|
|
91
|
-
return keys.reduce((acc, key) => {
|
|
92
|
-
acc[key] = this[key];
|
|
93
|
-
return acc;
|
|
94
|
-
}, {});
|
|
74
|
+
registerOutputs() {
|
|
75
|
+
super.registerOutputs(this.getOutputs());
|
|
95
76
|
}
|
|
96
77
|
}
|
|
97
78
|
exports.BaseComponent = BaseComponent;
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL0Jhc2VDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXlDO0FBRXpDLHVDQUFxRDtBQUVyRDs7Ozs7O0dBTUc7QUFDSDs7Ozs7R0FLRztBQUNILE1BQXNCLGFBQTJDLFNBQVEsTUFBTSxDQUFDLGlCQUF3QjtJQVVwRjtJQUNHO0lBQ0E7SUFYckI7Ozs7OztPQU1HO0lBQ0gsWUFDRSxJQUFZLEVBQ0ksSUFBWSxFQUNULElBQVcsRUFDWCxJQUFzQztRQUV6RCxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBSnhDLFNBQUksR0FBSixJQUFJLENBQVE7UUFDVCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ1gsU0FBSSxHQUFKLElBQUksQ0FBa0M7SUFHM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxlQUFlO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQVFGO0FBaENELHNDQWdDQyJ9
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
+
import * as types from '../types';
|
|
2
3
|
import { RandomPassword, RandomPasswordArgs } from '../common/RandomPassword';
|
|
3
4
|
import { RandomString, RandomStringArgs } from '../common/RandomString';
|
|
4
|
-
import { ResourceLocker } from '../common/ResourceLocker';
|
|
5
|
-
import * as types from '../types';
|
|
6
|
-
import { EncryptionKey } from '../vault/EncryptionKey';
|
|
7
5
|
import { VaultSecretResult } from '../vault/VaultSecrets';
|
|
8
6
|
import { BaseComponent } from './BaseComponent';
|
|
7
|
+
import { EncryptionKey } from '../vault/EncryptionKey';
|
|
8
|
+
import { ResourceLocker } from '../common/ResourceLocker';
|
|
9
|
+
import { RoleAssignment } from '../azAd/RoleAssignment';
|
|
9
10
|
/**
|
|
10
11
|
* Base interface for resource component arguments that combines vault information
|
|
11
12
|
* and Azure AD group role requirements.
|
|
@@ -44,11 +45,11 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
|
|
|
44
45
|
readonly name: string;
|
|
45
46
|
protected readonly args: TArgs;
|
|
46
47
|
protected readonly opts?: pulumi.ComponentResourceOptions | undefined;
|
|
47
|
-
private _secrets;
|
|
48
|
-
private _vaultSecretsCreated;
|
|
49
48
|
vaultSecrets?: {
|
|
50
49
|
[key: string]: VaultSecretResult;
|
|
51
50
|
};
|
|
51
|
+
private _secrets;
|
|
52
|
+
private _vaultSecretsCreated;
|
|
52
53
|
/**
|
|
53
54
|
* Creates a new instance of BaseResourceComponent
|
|
54
55
|
* @param type - The type of the resource component
|
|
@@ -58,10 +59,15 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
|
|
|
58
59
|
*/
|
|
59
60
|
constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
|
|
60
61
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
62
|
+
* Adds a managed identity to a specified Azure AD group role
|
|
63
|
+
* @param type - The type of group role to add the identity to (from GroupRoleTypes enum)
|
|
64
|
+
* @param identity - A Pulumi output containing the managed identity with its principal ID
|
|
65
|
+
* @returns A new GroupMember resource if successful, undefined if groupRoles not configured or identity invalid
|
|
63
66
|
*/
|
|
64
|
-
|
|
67
|
+
addIdentityToRole(type: types.GroupRoleTypes, identity: pulumi.Input<{
|
|
68
|
+
principalId: pulumi.Input<string>;
|
|
69
|
+
} | undefined>): pulumi.OutputInstance<import("@pulumi/azuread/groupMember").GroupMember | undefined> | undefined;
|
|
70
|
+
protected grantPermissionsToIdentity({ identity, resource, roleNames }: types.GrantIdentityRoles): pulumi.Output<pulumi.Output<pulumi.Output<RoleAssignment>[]> | undefined>;
|
|
65
71
|
/**
|
|
66
72
|
* Adds a single secret to the component
|
|
67
73
|
* Can be called multiple times to add different secrets
|
|
@@ -81,6 +87,7 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
|
|
|
81
87
|
* Overwrote this method with no parameters as it will be provided by calling getOutputs method.
|
|
82
88
|
*/
|
|
83
89
|
protected registerOutputs(): void;
|
|
90
|
+
getOutputs(): pulumi.Inputs | pulumi.Output<pulumi.Inputs>;
|
|
84
91
|
/**
|
|
85
92
|
* Creates a new encryption key in the Azure Key Vault
|
|
86
93
|
* @returns A new EncryptionKey instance if vaultInfo is provided, undefined otherwise
|
|
@@ -93,16 +100,16 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
|
|
|
93
100
|
* Generates a new random password with predefined settings
|
|
94
101
|
* @returns A new RandomPassword instance with 20 characters length, yearly rotation policy, and no special characters
|
|
95
102
|
*/
|
|
96
|
-
protected createPassword(props?: RandomPasswordArgs
|
|
97
|
-
|
|
103
|
+
protected createPassword(props?: RandomPasswordArgs & {
|
|
104
|
+
name?: string;
|
|
105
|
+
}): RandomPassword;
|
|
106
|
+
protected createRandomString(props?: RandomStringArgs & {
|
|
107
|
+
name?: string;
|
|
108
|
+
}): RandomString;
|
|
98
109
|
protected lockFromDeleting(resource: pulumi.CustomResource): ResourceLocker;
|
|
99
110
|
/**
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* @param identity - A Pulumi output containing the managed identity with its principal ID
|
|
103
|
-
* @returns A new GroupMember resource if successful, undefined if groupRoles not configured or identity invalid
|
|
111
|
+
* Internal method to handle post-creation secret management
|
|
112
|
+
* Creates vault secrets if any secrets were added during component creation
|
|
104
113
|
*/
|
|
105
|
-
|
|
106
|
-
principalId: pulumi.Input<string>;
|
|
107
|
-
} | undefined>): pulumi.OutputInstance<import("@pulumi/azuread/groupMember").GroupMember | undefined> | undefined;
|
|
114
|
+
private postCreated;
|
|
108
115
|
}
|
|
@@ -38,10 +38,11 @@ const azAd = __importStar(require("@pulumi/azuread"));
|
|
|
38
38
|
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
39
39
|
const RandomPassword_1 = require("../common/RandomPassword");
|
|
40
40
|
const RandomString_1 = require("../common/RandomString");
|
|
41
|
-
const ResourceLocker_1 = require("../common/ResourceLocker");
|
|
42
|
-
const EncryptionKey_1 = require("../vault/EncryptionKey");
|
|
43
41
|
const VaultSecrets_1 = require("../vault/VaultSecrets");
|
|
44
42
|
const BaseComponent_1 = require("./BaseComponent");
|
|
43
|
+
const EncryptionKey_1 = require("../vault/EncryptionKey");
|
|
44
|
+
const ResourceLocker_1 = require("../common/ResourceLocker");
|
|
45
|
+
const RoleAssignment_1 = require("../azAd/RoleAssignment");
|
|
45
46
|
const helpers_1 = require("./helpers");
|
|
46
47
|
/**
|
|
47
48
|
* BaseResourceComponent serves as a foundational abstract class for Azure resource management
|
|
@@ -65,9 +66,9 @@ class BaseResourceComponent extends BaseComponent_1.BaseComponent {
|
|
|
65
66
|
name;
|
|
66
67
|
args;
|
|
67
68
|
opts;
|
|
69
|
+
vaultSecrets;
|
|
68
70
|
_secrets = {};
|
|
69
71
|
_vaultSecretsCreated = false;
|
|
70
|
-
vaultSecrets;
|
|
71
72
|
/**
|
|
72
73
|
* Creates a new instance of BaseResourceComponent
|
|
73
74
|
* @param type - The type of the resource component
|
|
@@ -83,28 +84,35 @@ class BaseResourceComponent extends BaseComponent_1.BaseComponent {
|
|
|
83
84
|
this.opts = opts;
|
|
84
85
|
}
|
|
85
86
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
87
|
+
* Adds a managed identity to a specified Azure AD group role
|
|
88
|
+
* @param type - The type of group role to add the identity to (from GroupRoleTypes enum)
|
|
89
|
+
* @param identity - A Pulumi output containing the managed identity with its principal ID
|
|
90
|
+
* @returns A new GroupMember resource if successful, undefined if groupRoles not configured or identity invalid
|
|
88
91
|
*/
|
|
89
|
-
|
|
90
|
-
const {
|
|
91
|
-
if (
|
|
92
|
-
return;
|
|
93
|
-
if (this._vaultSecretsCreated)
|
|
92
|
+
addIdentityToRole(type, identity) {
|
|
93
|
+
const { groupRoles } = this.args;
|
|
94
|
+
if (!groupRoles)
|
|
94
95
|
return;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
96
|
+
return pulumi.output(identity).apply((i) => {
|
|
97
|
+
if (!i?.principalId)
|
|
98
|
+
return;
|
|
99
|
+
return new azAd.GroupMember(`${this.name}-${type}-${i.principalId}`, {
|
|
100
|
+
groupObjectId: groupRoles[type].objectId,
|
|
101
|
+
memberObjectId: i.principalId,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
grantPermissionsToIdentity({ identity, resource, roleNames }) {
|
|
106
|
+
return pulumi.output(identity).apply((id) => {
|
|
107
|
+
if (!id?.principalId)
|
|
108
|
+
return;
|
|
109
|
+
return pulumi.output(resource).apply((re) => roleNames.map((r) => pulumi.interpolate `${this.name}-${re.resourceName}-${r}`.apply((n) => new RoleAssignment_1.RoleAssignment(n, {
|
|
110
|
+
principalId: id.principalId,
|
|
111
|
+
principalType: 'ServicePrincipal',
|
|
112
|
+
roleName: r,
|
|
113
|
+
scope: re.id,
|
|
114
|
+
}, { parent: this, deletedWith: this }))));
|
|
115
|
+
});
|
|
108
116
|
}
|
|
109
117
|
/**
|
|
110
118
|
* Adds a single secret to the component
|
|
@@ -128,27 +136,31 @@ class BaseResourceComponent extends BaseComponent_1.BaseComponent {
|
|
|
128
136
|
*/
|
|
129
137
|
registerOutputs() {
|
|
130
138
|
this.postCreated();
|
|
131
|
-
super.registerOutputs(
|
|
139
|
+
super.registerOutputs();
|
|
140
|
+
}
|
|
141
|
+
getOutputs() {
|
|
142
|
+
return { vaultSecrets: this.vaultSecrets };
|
|
132
143
|
}
|
|
133
144
|
/**
|
|
134
145
|
* Creates a new encryption key in the Azure Key Vault
|
|
135
146
|
* @returns A new EncryptionKey instance if vaultInfo is provided, undefined otherwise
|
|
136
147
|
*/
|
|
137
148
|
getEncryptionKey({ name, keySize } = { keySize: 4096 }) {
|
|
138
|
-
|
|
139
|
-
|
|
149
|
+
const vault = this.args.vaultInfo;
|
|
150
|
+
if (!vault) {
|
|
151
|
+
throw new Error(`The VaultInfo is required for encryption key creation in component "${this.type}:${this.name}"`);
|
|
140
152
|
}
|
|
141
|
-
return new EncryptionKey_1.EncryptionKey(name ? `${this.name}-${name}` : this.name, { vaultInfo:
|
|
153
|
+
return new EncryptionKey_1.EncryptionKey(name ? `${this.name}-${name}` : this.name, { vaultInfo: vault, keySize }, { dependsOn: this.opts?.dependsOn, parent: this });
|
|
142
154
|
}
|
|
143
155
|
/**
|
|
144
156
|
* Generates a new random password with predefined settings
|
|
145
157
|
* @returns A new RandomPassword instance with 20 characters length, yearly rotation policy, and no special characters
|
|
146
158
|
*/
|
|
147
159
|
createPassword(props = { length: 20, policy: 'yearly', options: { special: false } }) {
|
|
148
|
-
return new RandomPassword_1.RandomPassword(this.name, props, { parent: this });
|
|
160
|
+
return new RandomPassword_1.RandomPassword(props.name ?? this.name, props, { parent: this });
|
|
149
161
|
}
|
|
150
162
|
createRandomString(props = { type: 'string', length: 10, options: { special: false } }) {
|
|
151
|
-
return new RandomString_1.RandomString(this.name, props, { parent: this });
|
|
163
|
+
return new RandomString_1.RandomString(props.name ?? this.name, props, { parent: this });
|
|
152
164
|
}
|
|
153
165
|
lockFromDeleting(resource) {
|
|
154
166
|
return new ResourceLocker_1.ResourceLocker(`${this.name}-lock`, {
|
|
@@ -157,24 +169,28 @@ class BaseResourceComponent extends BaseComponent_1.BaseComponent {
|
|
|
157
169
|
}, { dependsOn: resource, parent: this });
|
|
158
170
|
}
|
|
159
171
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* @param identity - A Pulumi output containing the managed identity with its principal ID
|
|
163
|
-
* @returns A new GroupMember resource if successful, undefined if groupRoles not configured or identity invalid
|
|
172
|
+
* Internal method to handle post-creation secret management
|
|
173
|
+
* Creates vault secrets if any secrets were added during component creation
|
|
164
174
|
*/
|
|
165
|
-
|
|
166
|
-
const {
|
|
167
|
-
if (!
|
|
175
|
+
postCreated() {
|
|
176
|
+
const { vaultInfo } = this.args;
|
|
177
|
+
if (this._vaultSecretsCreated || Object.keys(this._secrets).length <= 0 || !vaultInfo)
|
|
168
178
|
return;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
}
|
|
179
|
+
console.log(`\nAdding secrets for ${this.type}:${this.name}`);
|
|
180
|
+
const se = {};
|
|
181
|
+
for (const key in this._secrets) {
|
|
182
|
+
se[key] = {
|
|
183
|
+
value: this._secrets[key],
|
|
184
|
+
contentType: `${this.type} ${this.name}`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
this._vaultSecretsCreated = true;
|
|
188
|
+
const rs = new VaultSecrets_1.VaultSecrets(this.name, {
|
|
189
|
+
vaultInfo,
|
|
190
|
+
secrets: se,
|
|
191
|
+
}, { dependsOn: this.opts?.dependsOn, parent: this });
|
|
192
|
+
this.vaultSecrets = rs.results;
|
|
177
193
|
}
|
|
178
194
|
}
|
|
179
195
|
exports.BaseResourceComponent = BaseResourceComponent;
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVJlc291cmNlQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2UvQmFzZVJlc291cmNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFHekMsNkRBQThFO0FBQzlFLHlEQUF3RTtBQUN4RSx3REFBd0U7QUFFeEUsbURBQWdEO0FBQ2hELDBEQUF1RDtBQUN2RCw2REFBMEQ7QUFDMUQsMkRBQXdEO0FBRXhELHVDQUFxRDtBQWtCckQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFzQixxQkFBOEMsU0FBUSw2QkFBb0I7SUFhM0U7SUFDRDtJQUNHO0lBQ0E7SUFmZCxZQUFZLENBQXdDO0lBQ25ELFFBQVEsR0FBNEMsRUFBRSxDQUFDO0lBQ3ZELG9CQUFvQixHQUFZLEtBQUssQ0FBQztJQUU5Qzs7Ozs7O09BTUc7SUFDSCxZQUNtQixJQUFZLEVBQ2IsSUFBWSxFQUNULElBQVcsRUFDWCxJQUFzQztRQUV6RCxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBTHZDLFNBQUksR0FBSixJQUFJLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1QsU0FBSSxHQUFKLElBQUksQ0FBTztRQUNYLFNBQUksR0FBSixJQUFJLENBQWtDO0lBRzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGlCQUFpQixDQUN0QixJQUEwQixFQUMxQixRQUF5RTtRQUV6RSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFeEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FB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
|
package/base/helpers.d.ts
CHANGED
|
@@ -4,9 +4,3 @@
|
|
|
4
4
|
* @returns Formatted resource type string with drunk-pulumi prefix if not already present
|
|
5
5
|
*/
|
|
6
6
|
export declare function getComponentResourceType(type: string): string;
|
|
7
|
-
export declare function arrayToMap<T extends {
|
|
8
|
-
[key: string | number]: any;
|
|
9
|
-
}>(array: T[], key: keyof T, transformer?: (value: T) => any): {
|
|
10
|
-
[key: string | number]: T;
|
|
11
|
-
};
|
|
12
|
-
export declare function recordMap<Tin extends any, Tout>(records: Record<string, Tin>, transform: (value: Tin) => Tout): Record<string, Tout>;
|
package/base/helpers.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getComponentResourceType = getComponentResourceType;
|
|
4
|
-
exports.arrayToMap = arrayToMap;
|
|
5
|
-
exports.recordMap = recordMap;
|
|
6
4
|
/**
|
|
7
5
|
* Formats the component resource type to ensure it follows the drunk-pulumi naming convention
|
|
8
6
|
* @param type - The resource type string
|
|
@@ -11,19 +9,4 @@ exports.recordMap = recordMap;
|
|
|
11
9
|
function getComponentResourceType(type) {
|
|
12
10
|
return type.includes('drunk-pulumi') ? type : `drunk:pulumi:${type}`;
|
|
13
11
|
}
|
|
14
|
-
|
|
15
|
-
return array.reduce((acc, curr) => {
|
|
16
|
-
const keyValue = curr[key];
|
|
17
|
-
if (keyValue) {
|
|
18
|
-
acc[keyValue] = transformer ? transformer(curr) : curr;
|
|
19
|
-
}
|
|
20
|
-
return acc;
|
|
21
|
-
}, {});
|
|
22
|
-
}
|
|
23
|
-
function recordMap(records, transform) {
|
|
24
|
-
return Object.entries(records).reduce((acc, [name, item]) => ({
|
|
25
|
-
...acc,
|
|
26
|
-
[name]: transform(item),
|
|
27
|
-
}), {});
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSw0REFFQztBQUVELGdDQVlDO0FBRUQsOEJBV0M7QUFsQ0Q7Ozs7R0FJRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLElBQVk7SUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztBQUN2RSxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUN4QixLQUFVLEVBQ1YsR0FBWSxFQUNaLFdBQStCO0lBRS9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUEwQixDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQWdCLFNBQVMsQ0FDdkIsT0FBNEIsRUFDNUIsU0FBK0I7SUFFL0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDbkMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEIsR0FBRyxHQUFHO1FBQ04sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO0tBQ3hCLENBQUMsRUFDRixFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUMifQ==
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSw0REFFQztBQVBEOzs7O0dBSUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxJQUFZO0lBQ25ELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7QUFDdkUsQ0FBQyJ9
|
package/common/RandomPassword.js
CHANGED
|
@@ -35,9 +35,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.RandomPassword = void 0;
|
|
37
37
|
const random = __importStar(require("@pulumi/random"));
|
|
38
|
-
const helpers_1 = require("../base/helpers");
|
|
39
|
-
const VaultSecret_1 = require("../vault/VaultSecret");
|
|
40
38
|
const BaseComponent_1 = require("../base/BaseComponent");
|
|
39
|
+
const VaultSecret_1 = require("../vault/VaultSecret");
|
|
40
|
+
const helpers_1 = require("../base/helpers");
|
|
41
41
|
class RandomPassword extends BaseComponent_1.BaseComponent {
|
|
42
42
|
value;
|
|
43
43
|
constructor(name, args = { length: 50, policy: 'yearly' }, opts) {
|
|
@@ -65,7 +65,7 @@ class RandomPassword extends BaseComponent_1.BaseComponent {
|
|
|
65
65
|
new VaultSecret_1.VaultSecret(name, { vaultInfo, value: randomPass.result, contentType: 'RandomPassword' }, { dependsOn: randomPass, parent: this });
|
|
66
66
|
}
|
|
67
67
|
this.value = randomPass.result;
|
|
68
|
-
this.registerOutputs(
|
|
68
|
+
this.registerOutputs();
|
|
69
69
|
}
|
|
70
70
|
getOutputs() {
|
|
71
71
|
return {
|
|
@@ -81,4 +81,4 @@ class RandomPassword extends BaseComponent_1.BaseComponent {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
exports.RandomPassword = RandomPassword;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tUGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL1JhbmRvbVBhc3N3b3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVEQUF5QztBQUd6Qyx5REFBc0Q7QUFDdEQsc0RBQW1EO0FBQ25ELDZDQUEyRDtBQWEzRCxNQUFhLGNBQWUsU0FBUSw2QkFBaUM7SUFDbkQsS0FBSyxDQUF3QjtJQUU3QyxZQUNFLElBQVksRUFDWixPQUEyQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUMzRCxJQUFzQztRQUV0QyxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSTtZQUM5QixLQUFLLEVBQUUsSUFBSTtZQUNYLEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQzFDLElBQUksRUFDSjtZQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRTtZQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3pCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsR0FBRyxPQUFPO1lBQ1YsNkVBQTZFO1lBQzdFLGVBQWUsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7U0FDbkUsRUFDRCxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDMUIsQ0FBQztRQUVGLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLHlCQUFXLENBQ2IsSUFBSSxFQUNKLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxFQUN0RSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUN4QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBQ08sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDbkMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3hELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRO2dCQUM3QixDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUExREQsd0NBMERDIn0=
|
package/common/RandomString.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
-
import { BaseComponent } from '../base/BaseComponent';
|
|
3
2
|
import * as types from '../types';
|
|
3
|
+
import { BaseComponent } from '../base/BaseComponent';
|
|
4
4
|
export interface RandomStringArgs extends types.WithVaultInfo {
|
|
5
5
|
type: 'string' | 'uuId';
|
|
6
6
|
length?: pulumi.Input<number>;
|
package/common/RandomString.js
CHANGED
|
@@ -36,8 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.RandomString = void 0;
|
|
37
37
|
const random = __importStar(require("@pulumi/random"));
|
|
38
38
|
const BaseComponent_1 = require("../base/BaseComponent");
|
|
39
|
-
const helpers_1 = require("../base/helpers");
|
|
40
39
|
const VaultSecret_1 = require("../vault/VaultSecret");
|
|
40
|
+
const helpers_1 = require("../base/helpers");
|
|
41
41
|
class RandomString extends BaseComponent_1.BaseComponent {
|
|
42
42
|
value;
|
|
43
43
|
constructor(name, args = { length: 25, type: 'string' }, opts) {
|
|
@@ -62,7 +62,7 @@ class RandomString extends BaseComponent_1.BaseComponent {
|
|
|
62
62
|
new VaultSecret_1.VaultSecret(name, { vaultInfo: args.vaultInfo, value: randomString.result, contentType: 'RandomString' }, { dependsOn: randomString, parent: this });
|
|
63
63
|
}
|
|
64
64
|
this.value = randomString.result;
|
|
65
|
-
this.registerOutputs(
|
|
65
|
+
this.registerOutputs();
|
|
66
66
|
}
|
|
67
67
|
getOutputs() {
|
|
68
68
|
return {
|
|
@@ -71,4 +71,4 @@ class RandomString extends BaseComponent_1.BaseComponent {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
exports.RandomString = RandomString;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tU3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9SYW5kb21TdHJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsdURBQXlDO0FBR3pDLHlEQUFzRDtBQUN0RCxzREFBbUQ7QUFDbkQsNkNBQTJEO0FBYTNELE1BQWEsWUFBYSxTQUFRLDZCQUErQjtJQUMvQyxLQUFLLENBQXdCO0lBRTdDLFlBQ0UsSUFBWSxFQUNaLE9BQXlCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQ3ZELElBQXNDO1FBRXRDLEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSTtZQUM5QixLQUFLLEVBQUUsSUFBSTtZQUNYLEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFFRixNQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRO1lBQ25CLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQ3JCLElBQUksRUFDSjtnQkFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO2dCQUN6QixRQUFRLEVBQUUsQ0FBQztnQkFDWCxRQUFRLEVBQUUsQ0FBQztnQkFDWCxVQUFVLEVBQUUsQ0FBQztnQkFDYixVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxHQUFHLE9BQU87YUFDWCxFQUNELEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQjtZQUNILENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLHlCQUFXLENBQ2IsSUFBSSxFQUNKLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUN0RixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMxQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsREQsb0NBa0RDIn0=
|
package/common/ResourceLocker.js
CHANGED
|
@@ -45,8 +45,8 @@ class ResourceLocker extends pulumi.ComponentResource {
|
|
|
45
45
|
level: args.level,
|
|
46
46
|
scope: args.resource.id,
|
|
47
47
|
notes: `Lock ${name} from ${args.level}`,
|
|
48
|
-
}, { ...opts, parent: this });
|
|
48
|
+
}, { ...opts, parent: this, retainOnDelete: true });
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
exports.ResourceLocker = ResourceLocker;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VMb2NrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL1Jlc291cmNlTG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtGQUFvRTtBQUNwRSx1REFBeUM7QUFPekMsTUFBYSxjQUFlLFNBQVEsTUFBTSxDQUFDLGlCQUFxQztJQUM5RSxZQUFZLElBQVksRUFBRSxJQUF3QixFQUFFLElBQXNDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDbkUsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFN0QsSUFBSSxhQUFhLENBQUMscUJBQXFCLENBQ3JDLElBQUksRUFDSjtZQUNFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZCLEtBQUssRUFBRSxRQUFRLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFO1NBQ3pDLEVBQ0QsRUFBRSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FDaEQsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWZELHdDQWVDIn0=
|