@drunk-pulumi/azure 0.0.37 → 0.0.39
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/Aks/Helper.d.ts +6 -11
- package/Aks/Helper.js +40 -65
- package/Aks/Identity.d.ts +3 -10
- package/Aks/Identity.js +9 -8
- package/Aks/index.d.ts +67 -71
- package/Aks/index.js +198 -314
- package/Apim/ApiProduct/PolicyBuilder.js +25 -27
- package/Apim/ApiProduct/SwaggerHelper.js +1 -3
- package/Apim/ApiProduct/index.d.ts +3 -3
- package/Apim/ApiProduct/index.js +1 -2
- package/Automation/index.d.ts +7 -0
- package/Automation/index.js +55 -0
- package/AzAd/EnvRoles.Consts.d.ts +12 -0
- package/AzAd/EnvRoles.Consts.js +125 -0
- package/AzAd/EnvRoles.d.ts +17 -15
- package/AzAd/EnvRoles.js +69 -47
- package/AzAd/GraphDefinition.d.ts +2 -2
- package/AzAd/GraphDefinition.js +3055 -3056
- package/AzAd/Helper.d.ts +24 -13
- package/AzAd/Helper.js +98 -25
- package/AzAd/Identities/AzDevOpsIdentity.d.ts +12 -0
- package/AzAd/Identities/AzDevOpsIdentity.js +32 -0
- package/AzAd/Identities/AzDevOpsManagedIdentity.d.ts +7 -0
- package/AzAd/Identities/AzDevOpsManagedIdentity.js +15 -0
- package/AzAd/Identities/AzUserAdRevertSync.d.ts +2 -9
- package/AzAd/Identities/AzUserAdRevertSync.js +4 -5
- package/AzAd/Identities/index.d.ts +3 -0
- package/AzAd/Identities/index.js +10 -0
- package/AzAd/Identity.d.ts +10 -22
- package/AzAd/Identity.js +50 -61
- package/AzAd/Role.d.ts +2 -3
- package/AzAd/Role.js +4 -5
- package/AzAd/RoleAssignment.d.ts +34 -5
- package/AzAd/RoleAssignment.js +2 -2
- package/AzAd/RoleDefinitions/JustInTimeRequestRole.d.ts +2 -0
- package/AzAd/RoleDefinitions/JustInTimeRequestRole.js +24 -0
- package/AzAd/RolesBuiltIn.d.ts +29 -0
- package/AzAd/RolesBuiltIn.js +13034 -8058
- package/AzAd/UserAssignedIdentity.d.ts +6 -0
- package/AzAd/UserAssignedIdentity.js +27 -0
- package/Builder/AksBuilder.d.ts +3 -0
- package/Builder/AksBuilder.js +95 -0
- package/Builder/ResourceBuilder.d.ts +3 -0
- package/Builder/ResourceBuilder.js +116 -0
- package/Builder/VnetBuilder.d.ts +3 -0
- package/Builder/VnetBuilder.js +279 -0
- package/Builder/index.d.ts +4 -0
- package/Builder/index.js +21 -0
- package/Builder/types/askBuilder.d.ts +32 -0
- package/Builder/types/askBuilder.js +3 -0
- package/Builder/types/genericBuilder.d.ts +26 -0
- package/Builder/types/genericBuilder.js +18 -0
- package/Builder/types/index.d.ts +4 -0
- package/Builder/types/index.js +21 -0
- package/Builder/types/resourceBuilder.d.ts +24 -0
- package/Builder/types/resourceBuilder.js +3 -0
- package/Builder/types/vnetBuilder.d.ts +65 -0
- package/Builder/types/vnetBuilder.js +3 -0
- package/Certificate/index.d.ts +1 -1
- package/Certificate/index.js +26 -28
- package/Common/AutoTags.js +2 -2
- package/Common/AzureEnv.d.ts +4 -3
- package/Common/AzureEnv.js +31 -24
- package/Common/GlobalEnv.d.ts +1 -2
- package/Common/GlobalEnv.js +7 -7
- package/Common/Location.d.ts +3 -3
- package/Common/Location.js +22 -9
- package/Common/LocationBuiltIn.d.ts +6 -81
- package/Common/LocationBuiltIn.js +491 -1923
- package/Common/Naming/index.d.ts +6 -4
- package/Common/Naming/index.js +64 -60
- package/Common/ResourceEnv.d.ts +2 -2
- package/Common/ResourceEnv.js +11 -10
- package/Common/StackEnv.js +2 -9
- package/Core/KeyGenetators.d.ts +16 -20
- package/Core/KeyGenetators.js +17 -16
- package/Core/Random.d.ts +4 -4
- package/Core/Random.js +10 -10
- package/Core/ResourceGroup.d.ts +13 -6
- package/Core/ResourceGroup.js +12 -24
- package/IOT/Hub/index.d.ts +4 -8
- package/IOT/Hub/index.js +19 -54
- package/KeyVault/Helper.d.ts +8 -6
- package/KeyVault/Helper.js +13 -19
- package/KeyVault/index.d.ts +1 -3
- package/KeyVault/index.js +2 -26
- package/Logs/Helpers.d.ts +35 -25
- package/Logs/Helpers.js +33 -20
- package/Logs/LogAnalytics.d.ts +2 -2
- package/Logs/LogAnalytics.js +15 -6
- package/Logs/index.d.ts +3 -3
- package/Logs/index.js +4 -4
- package/MySql/index.d.ts +2 -3
- package/MySql/index.js +16 -19
- package/{ReadMe.md → README.md} +6 -1
- package/Sql/index.d.ts +15 -9
- package/Sql/index.js +39 -41
- package/Storage/CdnEndpoint.d.ts +2 -2
- package/Storage/CdnEndpoint.js +14 -15
- package/Storage/Helper.d.ts +2 -2
- package/Storage/Helper.js +6 -6
- package/Storage/ManagementRules.d.ts +5 -23
- package/Storage/ManagementRules.js +3 -3
- package/Storage/index.d.ts +3 -3
- package/Storage/index.js +28 -28
- package/VM/AzureDevOpsExtension.d.ts +16 -0
- package/VM/AzureDevOpsExtension.js +14 -0
- package/VM/Extension.d.ts +15 -0
- package/VM/Extension.js +13 -0
- package/VM/GlobalSchedule.d.ts +10 -0
- package/VM/GlobalSchedule.js +20 -0
- package/VM/index.d.ts +18 -18
- package/VM/index.js +94 -57
- package/VNet/Bastion.d.ts +4 -4
- package/VNet/Bastion.js +12 -8
- package/VNet/Firewall.d.ts +19 -12
- package/VNet/Firewall.js +59 -40
- package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +16 -16
- package/VNet/FirewallPolicies/AksFirewallPolicy.js +193 -220
- package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +12 -10
- package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +170 -282
- package/VNet/FirewallPolicies/DefaultFirewallPolicy.d.ts +3 -0
- package/VNet/FirewallPolicies/DefaultFirewallPolicy.js +25 -0
- package/VNet/FirewallPolicies/index.d.ts +4 -0
- package/VNet/FirewallPolicies/index.js +10 -0
- package/VNet/FirewallPolicy.d.ts +14 -11
- package/VNet/FirewallPolicy.js +67 -74
- package/VNet/FirewallRules/AksFirewallRules.d.ts +4 -3
- package/VNet/FirewallRules/AksFirewallRules.js +101 -100
- package/VNet/Helper.d.ts +8 -4
- package/VNet/Helper.js +42 -35
- package/VNet/IpAddress.d.ts +6 -8
- package/VNet/IpAddress.js +6 -11
- package/VNet/IpAddressPrefix.d.ts +12 -9
- package/VNet/IpAddressPrefix.js +14 -13
- package/VNet/NSGRules/AppGatewaySecurityRule.d.ts +9 -0
- package/VNet/NSGRules/AppGatewaySecurityRule.js +46 -0
- package/VNet/NSGRules/AzADSecurityRule.d.ts +6 -0
- package/VNet/NSGRules/AzADSecurityRule.js +39 -0
- package/VNet/NSGRules/BastionSecurityRule.d.ts +9 -0
- package/VNet/NSGRules/BastionSecurityRule.js +93 -0
- package/VNet/NatGateway.d.ts +10 -0
- package/VNet/NatGateway.js +21 -0
- package/VNet/NetworkPeering.d.ts +7 -7
- package/VNet/NetworkPeering.js +29 -20
- package/VNet/PrivateDns.d.ts +8 -10
- package/VNet/PrivateDns.js +12 -14
- package/VNet/PrivateEndpoint.js +5 -2
- package/VNet/RouteTable.d.ts +7 -8
- package/VNet/RouteTable.js +6 -6
- package/VNet/SecurityGroup.d.ts +4 -4
- package/VNet/SecurityGroup.js +7 -3
- package/VNet/Subnet.d.ts +10 -7
- package/VNet/Subnet.js +4 -3
- package/VNet/VPNGateway.d.ts +13 -0
- package/VNet/VPNGateway.js +73 -0
- package/VNet/VirtualWAN.d.ts +7 -10
- package/VNet/VirtualWAN.js +1 -1
- package/VNet/Vnet.d.ts +29 -23
- package/VNet/Vnet.js +58 -121
- package/VNet/index.d.ts +17 -18
- package/VNet/index.js +41 -54
- package/VNet/types.d.ts +94 -0
- package/VNet/types.js +3 -0
- package/Web/types.d.ts +2 -134
- package/package.json +8 -8
- package/types.d.ts +22 -8
- package/z_tests/_tools/Mocks.js +12 -13
- package/Automation/AutoAccount.d.ts +0 -5
- package/Automation/AutoAccount.js +0 -18
- package/AzAd/Identities/AzDevOps.d.ts +0 -23
- package/AzAd/Identities/AzDevOps.js +0 -61
- package/AzAd/KeyVaultRoles.d.ts +0 -8
- package/AzAd/KeyVaultRoles.js +0 -53
- package/AzAd/ManagedIdentity.d.ts +0 -6
- package/AzAd/ManagedIdentity.js +0 -20
- package/AzAd/UserIdentity.d.ts +0 -5
- package/AzAd/UserIdentity.js +0 -12
- package/Common/Naming/AzureRegions.d.ts +0 -4
- package/Common/Naming/AzureRegions.js +0 -49
- package/KeyVault/VaultPermissions.d.ts +0 -27
- package/KeyVault/VaultPermissions.js +0 -226
- package/VNet/FirewallRules/types.d.ts +0 -20
- package/VNet/FirewallRules/types.js +0 -5
- package/VNet/NSGRules/AzADService.d.ts +0 -10
- package/VNet/NSGRules/AzADService.js +0 -45
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BasicResourceArgs, IdentityRoleAssignment } from "../types";
|
|
2
|
+
interface Props extends BasicResourceArgs, IdentityRoleAssignment {
|
|
3
|
+
lock?: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare const _default: ({ name, group, lock, roles, envRole, vaultInfo, dependsOn, importUri, ignoreChanges, }: Props) => import("@pulumi/azure-native/managedidentity/userAssignedIdentity").UserAssignedIdentity;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const azure = require("@pulumi/azure-native");
|
|
4
|
+
const Naming_1 = require("../Common/Naming");
|
|
5
|
+
const Locker_1 = require("../Core/Locker");
|
|
6
|
+
const Helper_1 = require("./Helper");
|
|
7
|
+
exports.default = ({ name, group, lock, roles, envRole, vaultInfo, dependsOn, importUri, ignoreChanges, }) => {
|
|
8
|
+
name = (0, Naming_1.getManagedIdentityName)(name);
|
|
9
|
+
const managedIdentity = new azure.managedidentity.UserAssignedIdentity(name, {
|
|
10
|
+
resourceName: name,
|
|
11
|
+
...group,
|
|
12
|
+
}, { dependsOn, import: importUri, ignoreChanges });
|
|
13
|
+
(0, Helper_1.grantIdentityPermissions)({
|
|
14
|
+
name,
|
|
15
|
+
envRole,
|
|
16
|
+
roles,
|
|
17
|
+
vaultInfo,
|
|
18
|
+
principalId: managedIdentity.principalId,
|
|
19
|
+
});
|
|
20
|
+
if (lock)
|
|
21
|
+
(0, Locker_1.default)({
|
|
22
|
+
name,
|
|
23
|
+
resource: managedIdentity,
|
|
24
|
+
});
|
|
25
|
+
return managedIdentity;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckFzc2lnbmVkSWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQXpBZC9Vc2VyQXNzaWduZWRJZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhDQUE4QztBQUM5Qyw2Q0FBMEQ7QUFDMUQsMkNBQW9DO0FBQ3BDLHFDQUFvRDtBQU1wRCxrQkFBZSxDQUFDLEVBQ2QsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEdBQ1AsRUFBRSxFQUFFO0lBQ1YsSUFBSSxHQUFHLElBQUEsK0JBQXNCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUNwRSxJQUFJLEVBQ0o7UUFDRSxZQUFZLEVBQUUsSUFBSTtRQUNsQixHQUFHLEtBQUs7S0FDVCxFQUNELEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQ2hELENBQUM7SUFFRixJQUFBLGlDQUF3QixFQUFDO1FBQ3ZCLElBQUk7UUFDSixPQUFPO1FBQ1AsS0FBSztRQUNMLFNBQVM7UUFDVCxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7S0FDekMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxJQUFJO1FBQ04sSUFBQSxnQkFBTSxFQUFDO1lBQ0wsSUFBSTtZQUNKLFFBQVEsRUFBRSxlQUFlO1NBQzFCLENBQUMsQ0FBQztJQUVMLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("./types");
|
|
4
|
+
const KeyGenetators_1 = require("../Core/KeyGenetators");
|
|
5
|
+
const containerservice_1 = require("@pulumi/azure-native/containerservice");
|
|
6
|
+
const Aks_1 = require("../Aks");
|
|
7
|
+
class AksBuilder extends types_1.BuilderAsync {
|
|
8
|
+
//Instances
|
|
9
|
+
_sshInstance = undefined;
|
|
10
|
+
_askInstance = undefined;
|
|
11
|
+
//Props
|
|
12
|
+
_sshProps = undefined;
|
|
13
|
+
_nodePoolsProps = [];
|
|
14
|
+
_addonProps = undefined;
|
|
15
|
+
_featureProps = undefined;
|
|
16
|
+
_authProps = undefined;
|
|
17
|
+
_tier = containerservice_1.ManagedClusterSKUTier.Free;
|
|
18
|
+
_networkProps = undefined;
|
|
19
|
+
_defaultNode = undefined;
|
|
20
|
+
_importProps = undefined;
|
|
21
|
+
constructor(props) {
|
|
22
|
+
super(props);
|
|
23
|
+
}
|
|
24
|
+
//Info collection methods
|
|
25
|
+
withNewSsh(props) {
|
|
26
|
+
this._sshProps = props;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
withNodePool(props) {
|
|
30
|
+
this._nodePoolsProps.push(props);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
withAddon(props) {
|
|
34
|
+
this._addonProps = props;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
withFeature(props) {
|
|
38
|
+
this._featureProps = props;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
withAuth(props) {
|
|
42
|
+
this._authProps = props;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
withTier(tier) {
|
|
46
|
+
this._tier = tier;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
withNetwork(props) {
|
|
50
|
+
this._networkProps = props;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
withDefaultNodePool(props) {
|
|
54
|
+
this._defaultNode = props;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
import(props) {
|
|
58
|
+
this._importProps = props;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
//Build Methods
|
|
62
|
+
buildSsh() {
|
|
63
|
+
this._sshInstance = (0, KeyGenetators_1.generateSsh)({
|
|
64
|
+
...this.commonProps,
|
|
65
|
+
...this._sshProps,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async buildAsk() {
|
|
69
|
+
const sshKey = this._sshInstance.lists.getPublicKey();
|
|
70
|
+
this._askInstance = await (0, Aks_1.default)({
|
|
71
|
+
...this.commonProps,
|
|
72
|
+
addon: this._addonProps,
|
|
73
|
+
aksAccess: this._authProps,
|
|
74
|
+
tier: this._tier,
|
|
75
|
+
linux: {
|
|
76
|
+
adminUsername: this._sshInstance.userName,
|
|
77
|
+
sshKeys: [sshKey],
|
|
78
|
+
},
|
|
79
|
+
defaultNodePool: this._defaultNode,
|
|
80
|
+
nodePools: this._nodePoolsProps,
|
|
81
|
+
features: this._featureProps,
|
|
82
|
+
network: this._networkProps,
|
|
83
|
+
importUri: this._importProps?.id,
|
|
84
|
+
ignoreChanges: this._importProps?.ignoreChanges,
|
|
85
|
+
//nodeResourceGroup: getResourceGroupName(""),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async build() {
|
|
89
|
+
this.buildSsh();
|
|
90
|
+
await this.buildAsk();
|
|
91
|
+
return { ssh: this._sshInstance, aks: this._askInstance };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.default = (props) => new AksBuilder(props);
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWtzQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9CdWlsZGVyL0Frc0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FXaUI7QUFDakIseURBQWdFO0FBQ2hFLDRFQUE4RTtBQUM5RSxnQ0FRZ0I7QUFFaEIsTUFBTSxVQUNKLFNBQVEsb0JBQStCO0lBUXZDLFdBQVc7SUFDSCxZQUFZLEdBQTJCLFNBQVMsQ0FBQztJQUNqRCxZQUFZLEdBQTJCLFNBQVMsQ0FBQztJQUV6RCxPQUFPO0lBQ0MsU0FBUyxHQUFnQyxTQUFTLENBQUM7SUFDbkQsZUFBZSxHQUF1QixFQUFFLENBQUM7SUFDekMsV0FBVyxHQUE4QixTQUFTLENBQUM7SUFDbkQsYUFBYSxHQUFnQyxTQUFTLENBQUM7SUFDdkQsVUFBVSxHQUErQixTQUFTLENBQUM7SUFDbkQsS0FBSyxHQUEwQix3Q0FBcUIsQ0FBQyxJQUFJLENBQUM7SUFDMUQsYUFBYSxHQUFnQyxTQUFTLENBQUM7SUFDdkQsWUFBWSxHQUF3QyxTQUFTLENBQUM7SUFDOUQsWUFBWSxHQUErQixTQUFTLENBQUM7SUFFN0QsWUFBWSxLQUFtQjtRQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQseUJBQXlCO0lBQ2xCLFVBQVUsQ0FBQyxLQUFzQjtRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBdUI7UUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sU0FBUyxDQUFDLEtBQW9CO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNNLFdBQVcsQ0FBQyxLQUFzQjtRQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDTSxRQUFRLENBQUMsS0FBcUI7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sUUFBUSxDQUFDLElBQTJCO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNNLFdBQVcsQ0FBQyxLQUFzQjtRQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixPQUFPLElBQWtDLENBQUM7SUFDNUMsQ0FBQztJQUNNLG1CQUFtQixDQUFDLEtBQThCO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBbUIsQ0FBQztJQUM3QixDQUFDO0lBQ00sTUFBTSxDQUFDLEtBQXFCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELGVBQWU7SUFDUCxRQUFRO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLDJCQUFXLEVBQUM7WUFDOUIsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxTQUFTO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsUUFBUTtRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBQSxhQUFHLEVBQUM7WUFDNUIsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFXO1lBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixLQUFLLEVBQUU7Z0JBQ0wsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFhLENBQUMsUUFBUTtnQkFDMUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ2xCO1lBQ0QsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFhO1lBQ25DLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFjO1lBRTVCLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDaEMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYTtZQUMvQyw4Q0FBOEM7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFhLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFhLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0NBQ0Y7QUFFRCxrQkFBZSxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBZ0IsQ0FBQyJ9
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const EnvRoles_1 = require("../AzAd/EnvRoles");
|
|
4
|
+
const ResourceGroup_1 = require("../Core/ResourceGroup");
|
|
5
|
+
const KeyVault_1 = require("../KeyVault");
|
|
6
|
+
class ResourceBuilder {
|
|
7
|
+
name;
|
|
8
|
+
_createRGProps = undefined;
|
|
9
|
+
_RGInfo = undefined;
|
|
10
|
+
_createRole = false;
|
|
11
|
+
_createVault = false;
|
|
12
|
+
_envRoles = undefined;
|
|
13
|
+
_otherBuilders = new Array();
|
|
14
|
+
_otherBuildersAsync = new Array();
|
|
15
|
+
_vaultInfo = undefined;
|
|
16
|
+
//Instances
|
|
17
|
+
_RGInstance = undefined;
|
|
18
|
+
_vaultInstance = undefined;
|
|
19
|
+
_envRolesInstance = undefined;
|
|
20
|
+
constructor(name) {
|
|
21
|
+
this.name = name;
|
|
22
|
+
}
|
|
23
|
+
createRoles() {
|
|
24
|
+
this._createRole = true;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
withRoles(props) {
|
|
28
|
+
this._envRoles = props;
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
createRG(props) {
|
|
32
|
+
this._createRGProps = props;
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
withRG(props) {
|
|
36
|
+
this._RGInfo = props;
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
createVault() {
|
|
40
|
+
this._createVault = true;
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
withVault(props) {
|
|
44
|
+
this._vaultInfo = props;
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
withBuilder(builder) {
|
|
48
|
+
this._otherBuilders.push(builder);
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
withBuilderAsync(builder) {
|
|
52
|
+
this._otherBuildersAsync.push(builder);
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
buildRoles() {
|
|
56
|
+
if (!this._createRole)
|
|
57
|
+
return;
|
|
58
|
+
this._envRolesInstance = (0, EnvRoles_1.createEnvRoles)();
|
|
59
|
+
this._envRoles = this._envRolesInstance;
|
|
60
|
+
}
|
|
61
|
+
buildRG() {
|
|
62
|
+
if (!this._createRGProps)
|
|
63
|
+
return;
|
|
64
|
+
const rs = (0, ResourceGroup_1.default)({
|
|
65
|
+
name: this.name,
|
|
66
|
+
permissions: {
|
|
67
|
+
envRoles: this._envRoles,
|
|
68
|
+
...this._createRGProps,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
this._RGInfo = rs.toGroupInfo();
|
|
72
|
+
this._RGInstance = rs.resource;
|
|
73
|
+
}
|
|
74
|
+
buildVault() {
|
|
75
|
+
if (!this._createVault)
|
|
76
|
+
return;
|
|
77
|
+
const rs = (0, KeyVault_1.default)({
|
|
78
|
+
name: this.name,
|
|
79
|
+
group: this._RGInfo,
|
|
80
|
+
});
|
|
81
|
+
this._vaultInstance = rs.vault;
|
|
82
|
+
this._vaultInfo = rs.toVaultInfo();
|
|
83
|
+
if (this._envRolesInstance)
|
|
84
|
+
this._envRolesInstance.addRolesToVault(this._vaultInfo);
|
|
85
|
+
}
|
|
86
|
+
buildOthers() {
|
|
87
|
+
const props = {
|
|
88
|
+
name: this.name,
|
|
89
|
+
group: this._RGInfo,
|
|
90
|
+
vaultInfo: this._vaultInfo,
|
|
91
|
+
};
|
|
92
|
+
this._otherBuilders.map((b) => b(props).build());
|
|
93
|
+
}
|
|
94
|
+
async buildOthersAsync() {
|
|
95
|
+
const props = {
|
|
96
|
+
name: this.name,
|
|
97
|
+
group: this._RGInfo,
|
|
98
|
+
vaultInfo: this._vaultInfo,
|
|
99
|
+
};
|
|
100
|
+
await Promise.all(this._otherBuildersAsync.map((b) => b(props).build()));
|
|
101
|
+
}
|
|
102
|
+
async build() {
|
|
103
|
+
this.buildRoles();
|
|
104
|
+
this.buildRG();
|
|
105
|
+
this.buildVault();
|
|
106
|
+
this.buildOthers();
|
|
107
|
+
await this.buildOthersAsync();
|
|
108
|
+
return {
|
|
109
|
+
name: this.name,
|
|
110
|
+
group: this._RGInfo,
|
|
111
|
+
vaultInfo: this._vaultInfo,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.default = (name) => new ResourceBuilder(name);
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0J1aWxkZXIvUmVzb3VyY2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsK0NBSTBCO0FBRTFCLHlEQUF1QztBQUV2QywwQ0FBZ0M7QUFHaEMsTUFBTSxlQUFlO0lBcUJBO0lBZFgsY0FBYyxHQUF5QyxTQUFTLENBQUM7SUFDakUsT0FBTyxHQUFrQyxTQUFTLENBQUM7SUFDbkQsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLFNBQVMsR0FBZ0MsU0FBUyxDQUFDO0lBQ25ELGNBQWMsR0FBRyxJQUFJLEtBQUssRUFBdUIsQ0FBQztJQUNsRCxtQkFBbUIsR0FBRyxJQUFJLEtBQUssRUFBNEIsQ0FBQztJQUM1RCxVQUFVLEdBQTZCLFNBQVMsQ0FBQztJQUV6RCxXQUFXO0lBQ0gsV0FBVyxHQUE4QixTQUFTLENBQUM7SUFDbkQsY0FBYyxHQUF5QixTQUFTLENBQUM7SUFDakQsaUJBQWlCLEdBQW1DLFNBQVMsQ0FBQztJQUV0RSxZQUFtQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtJQUFHLENBQUM7SUFFNUIsV0FBVztRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDTSxTQUFTLENBQUMsS0FBc0I7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sUUFBUSxDQUFDLEtBQStCO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNNLE1BQU0sQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixPQUFPLElBQUks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
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const IpAddressPrefix_1 = require("../VNet/IpAddressPrefix");
|
|
4
|
+
const Firewall_1 = require("../VNet/Firewall");
|
|
5
|
+
const Vnet_1 = require("../VNet/Vnet");
|
|
6
|
+
const NatGateway_1 = require("../VNet/NatGateway");
|
|
7
|
+
const NetworkPeering_1 = require("../VNet/NetworkPeering");
|
|
8
|
+
const VPNGateway_1 = require("../VNet/VPNGateway");
|
|
9
|
+
const types_1 = require("./types");
|
|
10
|
+
const Helper_1 = require("../VNet/Helper");
|
|
11
|
+
const Bastion_1 = require("../VNet/Bastion");
|
|
12
|
+
const outboundIpName = "outbound";
|
|
13
|
+
class VnetBuilder extends types_1.Builder {
|
|
14
|
+
/** The Props */
|
|
15
|
+
_subnetProps = undefined;
|
|
16
|
+
_vnetProps;
|
|
17
|
+
_firewallProps = undefined;
|
|
18
|
+
_bastionProps = undefined;
|
|
19
|
+
_natGatewayEnabled = false;
|
|
20
|
+
_vpnGatewayProps = undefined;
|
|
21
|
+
_securityRules = undefined;
|
|
22
|
+
_routeRules = undefined;
|
|
23
|
+
_peeringProps = [];
|
|
24
|
+
_logInfo = undefined;
|
|
25
|
+
_ipType = "prefix";
|
|
26
|
+
/** The Instances */
|
|
27
|
+
_ipAddressInstance = undefined;
|
|
28
|
+
_firewallInstance = undefined;
|
|
29
|
+
_vnetInstance = undefined;
|
|
30
|
+
_natGatewayInstance = undefined;
|
|
31
|
+
_vnpGatewayInstance = undefined;
|
|
32
|
+
constructor({ subnets, dnsServers, addressSpaces, ...commonProps }) {
|
|
33
|
+
super(commonProps);
|
|
34
|
+
this._subnetProps = subnets;
|
|
35
|
+
this._vnetProps = { dnsServers, addressSpaces };
|
|
36
|
+
}
|
|
37
|
+
asHub() {
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
asSpoke() {
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
withPublicIpAddress(type) {
|
|
44
|
+
this._ipType = type;
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
withNatGateway() {
|
|
48
|
+
this._natGatewayEnabled = true;
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
withVpnGateway(props) {
|
|
52
|
+
this._vpnGatewayProps = props;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
withFirewall(props) {
|
|
56
|
+
this._firewallProps = props;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
withBastion(props) {
|
|
60
|
+
this._bastionProps = props;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
withSecurityRules(rules) {
|
|
64
|
+
if (!this._securityRules)
|
|
65
|
+
this._securityRules = rules;
|
|
66
|
+
else
|
|
67
|
+
this._securityRules.push(...rules);
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
withRouteRules(rules) {
|
|
71
|
+
if (!this._routeRules)
|
|
72
|
+
this._routeRules = rules;
|
|
73
|
+
else
|
|
74
|
+
this._routeRules.push(...rules);
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
peeringTo(props) {
|
|
78
|
+
this._peeringProps.push(props);
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
withLogInfo(info) {
|
|
82
|
+
this._logInfo = info;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
/** Builders methods */
|
|
86
|
+
// private validate() {
|
|
87
|
+
// if (this._firewallProps) {
|
|
88
|
+
// if (!this._firewallProps.sku)
|
|
89
|
+
// this._firewallProps.sku = this._natGatewayEnabled
|
|
90
|
+
// ? { tier: "Basic", name: "AZFW_VNet" }
|
|
91
|
+
// : { tier: "Basic", name: "AZFW_VNet" };
|
|
92
|
+
//
|
|
93
|
+
// // if (this._natGatewayEnabled && this._firewallProps.sku.tier === "Basic")
|
|
94
|
+
// // throw new Error(
|
|
95
|
+
// // 'The Firewall tier "Basic" is not support Nat Gateway.',
|
|
96
|
+
// // );
|
|
97
|
+
// }
|
|
98
|
+
// }
|
|
99
|
+
buildIpAddress() {
|
|
100
|
+
const ipNames = [];
|
|
101
|
+
//No gateway and no firewall then Do nothing
|
|
102
|
+
if (!this._natGatewayEnabled && !this._firewallProps)
|
|
103
|
+
return;
|
|
104
|
+
//Add outbound Ipaddress for Firewall alone
|
|
105
|
+
if (!this._natGatewayEnabled && this._firewallProps) {
|
|
106
|
+
ipNames.push(outboundIpName);
|
|
107
|
+
}
|
|
108
|
+
//Create IpPrefix
|
|
109
|
+
this._ipAddressInstance = (0, IpAddressPrefix_1.default)({
|
|
110
|
+
...this.commonProps,
|
|
111
|
+
ipAddresses: ipNames.map((n) => ({ name: n })),
|
|
112
|
+
createPrefix: this._ipType === "prefix",
|
|
113
|
+
config: { version: "IPv4", allocationMethod: "Static" },
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
buildNatGateway() {
|
|
117
|
+
if (!this._natGatewayEnabled || !this._ipAddressInstance)
|
|
118
|
+
return;
|
|
119
|
+
this._natGatewayInstance = (0, NatGateway_1.default)({
|
|
120
|
+
...this.commonProps,
|
|
121
|
+
publicIpAddresses: this._ipType === "individual"
|
|
122
|
+
? Object.keys(this._ipAddressInstance.addresses).map((k) => this._ipAddressInstance.addresses[k].id)
|
|
123
|
+
: undefined,
|
|
124
|
+
publicIpPrefixes: this._ipType === "prefix"
|
|
125
|
+
? [this._ipAddressInstance.addressPrefix.id]
|
|
126
|
+
: undefined,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
buildVnet() {
|
|
130
|
+
const subnets = this._subnetProps
|
|
131
|
+
? Object.keys(this._subnetProps).map((k) => ({
|
|
132
|
+
name: k,
|
|
133
|
+
//Link all subnets to nate gateway if available without a firewall.
|
|
134
|
+
enableNatGateway: this._natGatewayEnabled && !Boolean(this._firewallInstance),
|
|
135
|
+
//However, till able to overwrite from outside.
|
|
136
|
+
...this._subnetProps[k],
|
|
137
|
+
}))
|
|
138
|
+
: [];
|
|
139
|
+
this._vnetInstance = (0, Vnet_1.default)({
|
|
140
|
+
...this.commonProps,
|
|
141
|
+
...this._vnetProps,
|
|
142
|
+
subnets,
|
|
143
|
+
natGateway: this._natGatewayInstance,
|
|
144
|
+
features: {
|
|
145
|
+
//Only create Security group when firewall is not there
|
|
146
|
+
securityGroup: {
|
|
147
|
+
enabled: !this._firewallProps,
|
|
148
|
+
allowOutboundInternetAccess: !Boolean(this._ipAddressInstance) && !this._natGatewayEnabled,
|
|
149
|
+
rules: this._securityRules,
|
|
150
|
+
},
|
|
151
|
+
//Route tables
|
|
152
|
+
routeTable: {
|
|
153
|
+
enabled: this._routeRules && this._routeRules.length > 0,
|
|
154
|
+
rules: this._routeRules,
|
|
155
|
+
},
|
|
156
|
+
//Firewall
|
|
157
|
+
firewall: this._firewallProps
|
|
158
|
+
? {
|
|
159
|
+
...this._firewallProps.subnet,
|
|
160
|
+
enableNatGateway: this._natGatewayEnabled,
|
|
161
|
+
}
|
|
162
|
+
: undefined,
|
|
163
|
+
//Bastion
|
|
164
|
+
bastion: this._bastionProps
|
|
165
|
+
? {
|
|
166
|
+
...this._bastionProps.subnet,
|
|
167
|
+
}
|
|
168
|
+
: undefined,
|
|
169
|
+
//Gateway
|
|
170
|
+
gatewaySubnet: this._vpnGatewayProps
|
|
171
|
+
? { addressPrefix: this._vpnGatewayProps.subnetSpace }
|
|
172
|
+
: undefined,
|
|
173
|
+
},
|
|
174
|
+
//networkPeerings: peerings,
|
|
175
|
+
dependsOn: this._firewallInstance?.firewall
|
|
176
|
+
? this._firewallInstance?.firewall
|
|
177
|
+
: this._natGatewayInstance
|
|
178
|
+
? this._natGatewayInstance
|
|
179
|
+
: undefined,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
buildFirewall() {
|
|
183
|
+
if (!this._firewallProps)
|
|
184
|
+
return;
|
|
185
|
+
const publicIpAddress = this._ipAddressInstance?.addresses[outboundIpName];
|
|
186
|
+
const firewallSubnetId = this._vnetInstance?.firewallSubnet?.apply((s) => s?.id);
|
|
187
|
+
const manageSubnetId = this._vnetInstance?.firewallManageSubnet?.apply((s) => s?.id);
|
|
188
|
+
this._firewallInstance = (0, Firewall_1.default)({
|
|
189
|
+
...this.commonProps,
|
|
190
|
+
...this._firewallProps,
|
|
191
|
+
outbound: [
|
|
192
|
+
{
|
|
193
|
+
subnetId: firewallSubnetId,
|
|
194
|
+
//Using Force Tunneling mode if Nat gateway is enabled.
|
|
195
|
+
publicIpAddress: this._natGatewayEnabled
|
|
196
|
+
? undefined
|
|
197
|
+
: publicIpAddress,
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
//This is required for Force Tunneling mode
|
|
201
|
+
management: manageSubnetId
|
|
202
|
+
? {
|
|
203
|
+
subnetId: manageSubnetId,
|
|
204
|
+
}
|
|
205
|
+
: undefined,
|
|
206
|
+
monitorConfig: this._logInfo
|
|
207
|
+
? {
|
|
208
|
+
logWpId: this._logInfo.logWp.id,
|
|
209
|
+
}
|
|
210
|
+
: undefined,
|
|
211
|
+
dependsOn: this._ipAddressInstance?.addressPrefix,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
buildVpnGateway() {
|
|
215
|
+
if (!this._vpnGatewayProps)
|
|
216
|
+
return;
|
|
217
|
+
const subnetId = this._vnetInstance.gatewaySubnet?.apply((s) => s?.id);
|
|
218
|
+
if (!subnetId)
|
|
219
|
+
return;
|
|
220
|
+
this._vnpGatewayInstance = (0, VPNGateway_1.default)({
|
|
221
|
+
...this.commonProps,
|
|
222
|
+
...this._vpnGatewayProps,
|
|
223
|
+
subnetId,
|
|
224
|
+
dependsOn: this._vnetInstance.vnet,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
buildBastion() {
|
|
228
|
+
if (!this._bastionProps || !this._vnetInstance?.bastionSubnet)
|
|
229
|
+
return;
|
|
230
|
+
(0, Bastion_1.default)({
|
|
231
|
+
...this.commonProps,
|
|
232
|
+
...this._bastionProps,
|
|
233
|
+
subnetId: this._vnetInstance.bastionSubnet.apply((s) => s.id),
|
|
234
|
+
dependsOn: [this._vnetInstance.vnet],
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
buildPeering() {
|
|
238
|
+
if (!this._peeringProps || !this._vnetInstance)
|
|
239
|
+
return;
|
|
240
|
+
this._peeringProps.forEach((p) => {
|
|
241
|
+
let info = undefined;
|
|
242
|
+
if ("groupName" in p) {
|
|
243
|
+
info = (0, Helper_1.getVnetInfo)(p.groupName);
|
|
244
|
+
}
|
|
245
|
+
else if ("vnetId" in p) {
|
|
246
|
+
info = (0, Helper_1.parseVnetInfoFromId)(p.vnetId);
|
|
247
|
+
}
|
|
248
|
+
if (info)
|
|
249
|
+
(0, NetworkPeering_1.default)({
|
|
250
|
+
direction: p.direction ?? "Bidirectional",
|
|
251
|
+
firstVnet: {
|
|
252
|
+
vnetName: this._vnetInstance.vnet.name,
|
|
253
|
+
resourceGroupName: this.commonProps.group.resourceGroupName,
|
|
254
|
+
},
|
|
255
|
+
secondVnet: info,
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
build() {
|
|
260
|
+
//this.validate();
|
|
261
|
+
this.buildIpAddress();
|
|
262
|
+
this.buildNatGateway();
|
|
263
|
+
this.buildVnet();
|
|
264
|
+
this.buildFirewall();
|
|
265
|
+
this.buildVpnGateway();
|
|
266
|
+
this.buildBastion();
|
|
267
|
+
this.buildPeering();
|
|
268
|
+
return {
|
|
269
|
+
publicIpAddress: this._ipAddressInstance,
|
|
270
|
+
firewall: this._firewallInstance,
|
|
271
|
+
vnet: this._vnetInstance,
|
|
272
|
+
natGateway: this._natGatewayInstance,
|
|
273
|
+
//peerings: this._peeringInstances,
|
|
274
|
+
vnpGateway: this._vnpGatewayInstance,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
exports.default = (props) => new VnetBuilder(props);
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVm5ldEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9WbmV0QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZEQUVpQztBQUdqQywrQ0FBNEQ7QUFDNUQsdUNBQWdEO0FBRWhELG1EQUE0QztBQUc1QywyREFBb0Q7QUFFcEQsbURBQTRDO0FBQzVDLG1DQWNpQjtBQUNqQiwyQ0FBa0U7QUFDbEUsNkNBQXNDO0FBRXRDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUVsQyxNQUFNLFdBQ0osU0FBUSxlQUEyQjtJQUduQyxnQkFBZ0I7SUFDQyxZQUFZLEdBQW9DLFNBQVMsQ0FBQztJQUMxRCxVQUFVLENBQTRCO0lBQy9DLGNBQWMsR0FBc0MsU0FBUyxDQUFDO0lBQzlELGFBQWEsR0FBcUMsU0FBUyxDQUFDO0lBQzVELGtCQUFrQixHQUFhLEtBQUssQ0FBQztJQUNyQyxnQkFBZ0IsR0FBd0MsU0FBUyxDQUFDO0lBQ2xFLGNBQWMsR0FBeUMsU0FBUyxDQUFDO0lBQ2pFLFdBQVcsR0FDakIsU0FBUyxDQUFDO0lBQ0osYUFBYSxHQUFtQixFQUFFLENBQUM7SUFDbkMsUUFBUSxHQUErQixTQUFTLENBQUM7SUFDakQsT0FBTyxHQUE0QixRQUFRLENBQUM7SUFFcEQsb0JBQW9CO0lBQ1osa0JBQWtCLEdBQ3hCLFNBQVMsQ0FBQztJQUNKLGlCQUFpQixHQUErQixTQUFTLENBQUM7SUFDMUQsYUFBYSxHQUEyQixTQUFTLENBQUM7SUFDbEQsbUJBQW1CLEdBQW1DLFNBQVMsQ0FBQztJQUNoRSxtQkFBbUIsR0FDekIsU0FBUyxDQUFDO0lBRVosWUFBWSxFQUNWLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLEdBQUcsV0FBVyxFQUNHO1FBQ2pCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLG1CQUFtQixDQUN4QixJQUE2QjtRQUU3QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQThCO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQTRCO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUEyQjtRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxLQUErQjtRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQzs7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBa0I7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7O1lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQW1CO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFvQjtRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLCtCQUErQjtJQUMvQixvQ0FBb0M7SUFDcEMsMERBQTBEO0lBQzFELGlEQUFpRDtJQUNqRCxrREFBa0Q7SUFDbEQsRUFBRTtJQUNGLGtGQUFrRjtJQUNsRiw0QkFBNEI7SUFDNUIsc0VBQXNFO0lBQ3RFLGNBQWM7SUFDZCxNQUFNO0lBQ04sSUFBSTtJQUVJLGNBQWM7UUFDcEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRW5CLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPO1FBRTdELDJDQUEyQztRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUEseUJBQWUsRUFBQztZQUN4QyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUN2QyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRTtTQUN4RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUFFLE9BQU87UUFFakUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUEsb0JBQVUsRUFBQztZQUNwQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBRW5CLGlCQUFpQixFQUNmLElBQUksQ0FBQyxPQUFPLEtBQUssWUFBWTtnQkFDM0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FDaEQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBbUIsQ0FBQyxTQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqRDtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUVmLGdCQUFnQixFQUNkLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUTtnQkFDdkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLENBQUMsQ0FBQyxTQUFTO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxTQUFTO1FBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVk7WUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FDakMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUM7Z0JBQ0MsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsbUVBQW1FO2dCQUNuRSxnQkFBZ0IsRUFDZCxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2dCQUM3RCwrQ0FBK0M7Z0JBQy9DLEdBQUcsSUFBSSxDQUFDLFlBQWEsQ0FBQyxDQUFDLENBQUM7YUFDekIsQ0FBZ0IsQ0FDcEI7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFBLGNBQUksRUFBQztZQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDbEIsT0FBTztZQUNQLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBRXBDLFFBQVEsRUFBRTtnQkFDUix1REFBdUQ7Z0JBQ3ZELGFBQWEsRUFBRTtvQkFDYixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYztvQkFDN0IsMkJBQTJCLEVBQ3pCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtvQkFDL0QsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO2lCQUMzQjtnQkFDRCxjQUFjO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUN4RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7aUJBQ3hCO2dCQUNELFVBQVU7Z0JBQ1YsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjO29CQUMzQixDQUFDLENBQUM7d0JBQ0UsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07d0JBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7cUJBQzFDO29CQUNILENBQUMsQ0FBQyxTQUFTO2dCQUNiLFNBQVM7Z0JBQ1QsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhO29CQUN6QixDQUFDLENBQUM7d0JBQ0UsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLE1BQU07cUJBQzlCO29CQUNILENBQUMsQ0FBQyxTQUFTO2dCQUNiLFNBQVM7Z0JBQ1QsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7b0JBQ2xDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFO29CQUN0RCxDQUFDLENBQUMsU0FBUzthQUNkO1lBRUQsNEJBQTRCO1lBQzVCLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUTtnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxRQUFRO2dCQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtvQkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUI7b0JBQzFCLENBQUMsQ0FBQyxTQUFTO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFakMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FDaEUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFHLENBQ2QsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUNwRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUcsQ0FDZCxDQUFDO1FBRUYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUEsa0JBQVEsRUFBQztZQUNoQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLEdBQUcsSUFBSSxDQUFDLGNBQWM7WUFFdEIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLFFBQVEsRUFBRSxnQkFBaUI7b0JBQzNCLHVEQUF1RDtvQkFDdkQsZUFBZSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7d0JBQ3RDLENBQUMsQ0FBQyxTQUFTO3dCQUNYLENBQUMsQ0FBQyxlQUFnQjtpQkFDckI7YUFDRjtZQUNELDJDQUEyQztZQUMzQyxVQUFVLEVBQUUsY0FBYztnQkFDeEIsQ0FBQyxDQUFDO29CQUNFLFFBQVEsRUFBRSxjQUFjO2lCQUN6QjtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUViLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDMUIsQ0FBQyxDQUFDO29CQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUNoQztnQkFDSCxDQUFDLENBQUMsU0FBUztZQUViLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsYUFBYTtTQUNsRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU87UUFFbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRXRCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFBLG9CQUFVLEVBQUM7WUFDcEMsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxnQkFBZ0I7WUFDeEIsUUFBUTtZQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYyxDQUFDLElBQUk7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWE7WUFBRSxPQUFPO1FBRXRFLElBQUEsaUJBQU8sRUFBQztZQUNOLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIsR0FBRyxJQUFJLENBQUMsYUFBYTtZQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFFLENBQUMsRUFBRyxDQUFDO1lBQ2hFLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFjLENBQUMsSUFBSyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBRXZELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxJQUFJLEdBQTJDLFNBQVMsQ0FBQztZQUU3RCxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxHQUFHLElBQUEsb0JBQVcsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEMsQ0FBQztpQkFBTSxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxHQUFHLElBQUEsNEJBQW1CLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLElBQUk7Z0JBQ04sSUFBQSx3QkFBYyxFQUFDO29CQUNiLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLGVBQWU7b0JBQ3pDLFNBQVMsRUFBRTt3QkFDVCxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSTt3QkFDdkMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCO3FCQUM1RDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNWLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYztZQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUNwQyxtQ0FBbUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDckMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELGtCQUFlLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQ3pDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBc0IsQ0FBQyJ9
|
package/Builder/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
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("./AksBuilder"), exports);
|
|
18
|
+
__exportStar(require("./VnetBuilder"), exports);
|
|
19
|
+
__exportStar(require("./ResourceBuilder"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLGdEQUE4QjtBQUM5QixvREFBa0M7QUFDbEMsMENBQXdCIn0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as native from "@pulumi/azure-native";
|
|
2
|
+
import { SshGenerationProps, SshResults } from "../../Core/KeyGenetators";
|
|
3
|
+
import { IBuilderAsync } from "./genericBuilder";
|
|
4
|
+
import { AksAccessProps, AksNetworkProps, AksNodePoolProps, AksResults, AskAddonProps, AskFeatureProps, DefaultAksNodePoolProps } from "../../Aks";
|
|
5
|
+
export type AskBuilderResults = {
|
|
6
|
+
ssh: SshResults;
|
|
7
|
+
aks: AksResults;
|
|
8
|
+
};
|
|
9
|
+
export type SshBuilderProps = Omit<SshGenerationProps, "vaultInfo" | "name">;
|
|
10
|
+
export type AksImportProps = {
|
|
11
|
+
id: string;
|
|
12
|
+
ignoreChanges?: string[];
|
|
13
|
+
};
|
|
14
|
+
export interface ISshBuilder {
|
|
15
|
+
withNewSsh: (props: SshBuilderProps) => IAskAuthBuilder;
|
|
16
|
+
}
|
|
17
|
+
export interface IAskAuthBuilder {
|
|
18
|
+
withAuth: (props: AksAccessProps) => IAksNetworkBuilder;
|
|
19
|
+
}
|
|
20
|
+
export interface IAksNetworkBuilder {
|
|
21
|
+
withNetwork: (props: AksNetworkProps) => IAksDefaultNodePoolBuilder;
|
|
22
|
+
}
|
|
23
|
+
export interface IAksDefaultNodePoolBuilder {
|
|
24
|
+
withDefaultNodePool: (props: DefaultAksNodePoolProps) => IAksBuilder;
|
|
25
|
+
}
|
|
26
|
+
export interface IAksBuilder extends IBuilderAsync<AskBuilderResults> {
|
|
27
|
+
withNodePool: (props: AksNodePoolProps) => IAksBuilder;
|
|
28
|
+
withAddon: (props: AskAddonProps) => IAksBuilder;
|
|
29
|
+
withFeature: (props: AskFeatureProps) => IAksBuilder;
|
|
30
|
+
withTier: (tier: native.containerservice.ManagedClusterSKUTier) => IAksBuilder;
|
|
31
|
+
import: (props: AksImportProps) => IAksBuilder;
|
|
32
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9CdWlsZGVyL3R5cGVzL2Fza0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Input, Resource } from "@pulumi/pulumi";
|
|
2
|
+
import { KeyVaultInfo, ResourceGroupInfo } from "../../types";
|
|
3
|
+
export type BuilderProps = {
|
|
4
|
+
name: string;
|
|
5
|
+
group: ResourceGroupInfo;
|
|
6
|
+
vaultInfo: KeyVaultInfo;
|
|
7
|
+
dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
|
|
8
|
+
};
|
|
9
|
+
export type CommonOmit<T> = Omit<T, keyof BuilderProps>;
|
|
10
|
+
export interface IBuilder<TResults> {
|
|
11
|
+
commonProps: BuilderProps;
|
|
12
|
+
build: () => TResults;
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class Builder<TResults> implements IBuilder<TResults> {
|
|
15
|
+
commonProps: BuilderProps;
|
|
16
|
+
protected constructor(commonProps: BuilderProps);
|
|
17
|
+
abstract build(): TResults;
|
|
18
|
+
}
|
|
19
|
+
export interface IBuilderAsync<TResults> extends Omit<IBuilder<TResults>, "build"> {
|
|
20
|
+
build: () => Promise<TResults>;
|
|
21
|
+
}
|
|
22
|
+
export declare abstract class BuilderAsync<TResults> implements IBuilderAsync<TResults> {
|
|
23
|
+
commonProps: BuilderProps;
|
|
24
|
+
protected constructor(commonProps: BuilderProps);
|
|
25
|
+
abstract build(): Promise<TResults>;
|
|
26
|
+
}
|