@reyemtech/nimbus 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -311
- package/dist/cjs/aws/dns.d.ts.map +1 -1
- package/dist/cjs/aws/dns.js +3 -1
- package/dist/cjs/aws/dns.js.map +1 -1
- package/dist/cjs/aws/index.d.ts +1 -0
- package/dist/cjs/aws/index.d.ts.map +1 -1
- package/dist/cjs/aws/index.js +3 -1
- package/dist/cjs/aws/index.js.map +1 -1
- package/dist/cjs/aws/network.d.ts.map +1 -1
- package/dist/cjs/aws/network.js +3 -1
- package/dist/cjs/aws/network.js.map +1 -1
- package/dist/cjs/aws/state.d.ts +32 -0
- package/dist/cjs/aws/state.d.ts.map +1 -0
- package/dist/cjs/aws/state.js +209 -0
- package/dist/cjs/aws/state.js.map +1 -0
- package/dist/cjs/azure/cluster.d.ts.map +1 -1
- package/dist/cjs/azure/cluster.js +15 -5
- package/dist/cjs/azure/cluster.js.map +1 -1
- package/dist/cjs/azure/dns.d.ts.map +1 -1
- package/dist/cjs/azure/dns.js +3 -1
- package/dist/cjs/azure/dns.js.map +1 -1
- package/dist/cjs/azure/index.d.ts +1 -0
- package/dist/cjs/azure/index.d.ts.map +1 -1
- package/dist/cjs/azure/index.js +3 -1
- package/dist/cjs/azure/index.js.map +1 -1
- package/dist/cjs/azure/network.d.ts.map +1 -1
- package/dist/cjs/azure/network.js +9 -3
- package/dist/cjs/azure/network.js.map +1 -1
- package/dist/cjs/azure/secrets.d.ts.map +1 -1
- package/dist/cjs/azure/secrets.js +6 -2
- package/dist/cjs/azure/secrets.js.map +1 -1
- package/dist/cjs/azure/state.d.ts +30 -0
- package/dist/cjs/azure/state.d.ts.map +1 -0
- package/dist/cjs/azure/state.js +115 -0
- package/dist/cjs/azure/state.js.map +1 -0
- package/dist/cjs/cache/interfaces.d.ts +12 -0
- package/dist/cjs/cache/interfaces.d.ts.map +1 -1
- package/dist/cjs/cli/templates.d.ts +67 -0
- package/dist/cjs/cli/templates.d.ts.map +1 -0
- package/dist/cjs/cli/templates.js +752 -0
- package/dist/cjs/cli/templates.js.map +1 -0
- package/dist/cjs/cli.d.ts +15 -0
- package/dist/cjs/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +209 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/cluster/interfaces.d.ts +28 -0
- package/dist/cjs/cluster/interfaces.d.ts.map +1 -1
- package/dist/cjs/database/interfaces.d.ts +15 -0
- package/dist/cjs/database/interfaces.d.ts.map +1 -1
- package/dist/cjs/dns/interfaces.d.ts +11 -0
- package/dist/cjs/dns/interfaces.d.ts.map +1 -1
- package/dist/cjs/factories/cluster.d.ts +4 -3
- package/dist/cjs/factories/cluster.d.ts.map +1 -1
- package/dist/cjs/factories/cluster.js +46 -11
- package/dist/cjs/factories/cluster.js.map +1 -1
- package/dist/cjs/factories/dns.d.ts +3 -2
- package/dist/cjs/factories/dns.d.ts.map +1 -1
- package/dist/cjs/factories/dns.js +44 -9
- package/dist/cjs/factories/dns.js.map +1 -1
- package/dist/cjs/factories/index.d.ts +1 -0
- package/dist/cjs/factories/index.d.ts.map +1 -1
- package/dist/cjs/factories/index.js +3 -1
- package/dist/cjs/factories/index.js.map +1 -1
- package/dist/cjs/factories/network.d.ts +4 -3
- package/dist/cjs/factories/network.d.ts.map +1 -1
- package/dist/cjs/factories/network.js +46 -11
- package/dist/cjs/factories/network.js.map +1 -1
- package/dist/cjs/factories/secrets.d.ts +4 -3
- package/dist/cjs/factories/secrets.d.ts.map +1 -1
- package/dist/cjs/factories/secrets.js +45 -10
- package/dist/cjs/factories/secrets.js.map +1 -1
- package/dist/cjs/factories/state.d.ts +33 -0
- package/dist/cjs/factories/state.d.ts.map +1 -0
- package/dist/cjs/factories/state.js +96 -0
- package/dist/cjs/factories/state.js.map +1 -0
- package/dist/cjs/factories/types.d.ts +22 -0
- package/dist/cjs/factories/types.d.ts.map +1 -1
- package/dist/cjs/factories/types.js +18 -0
- package/dist/cjs/factories/types.js.map +1 -1
- package/dist/cjs/global-lb/glb.d.ts.map +1 -1
- package/dist/cjs/global-lb/glb.js +23 -9
- package/dist/cjs/global-lb/glb.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -13
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/network/cidr.d.ts +34 -0
- package/dist/cjs/network/cidr.d.ts.map +1 -1
- package/dist/cjs/network/cidr.js +34 -0
- package/dist/cjs/network/cidr.js.map +1 -1
- package/dist/cjs/network/interfaces.d.ts +16 -0
- package/dist/cjs/network/interfaces.d.ts.map +1 -1
- package/dist/cjs/platform/interfaces.d.ts +1 -1
- package/dist/cjs/platform/interfaces.d.ts.map +1 -1
- package/dist/cjs/platform/stack.d.ts.map +1 -1
- package/dist/cjs/platform/stack.js +6 -1
- package/dist/cjs/platform/stack.js.map +1 -1
- package/dist/cjs/queue/interfaces.d.ts +8 -0
- package/dist/cjs/queue/interfaces.d.ts.map +1 -1
- package/dist/cjs/secrets/interfaces.d.ts +5 -0
- package/dist/cjs/secrets/interfaces.d.ts.map +1 -1
- package/dist/cjs/state/index.d.ts +7 -0
- package/dist/cjs/state/index.d.ts.map +1 -0
- package/dist/cjs/state/index.js +8 -0
- package/dist/cjs/state/index.js.map +1 -0
- package/dist/cjs/state/interfaces.d.ts +82 -0
- package/dist/cjs/state/interfaces.d.ts.map +1 -0
- package/dist/cjs/state/interfaces.js +11 -0
- package/dist/cjs/state/interfaces.js.map +1 -0
- package/dist/cjs/storage/interfaces.d.ts +17 -0
- package/dist/cjs/storage/interfaces.d.ts.map +1 -1
- package/dist/cjs/types/cloud-target.d.ts +12 -0
- package/dist/cjs/types/cloud-target.d.ts.map +1 -1
- package/dist/cjs/types/cloud-target.js +12 -0
- package/dist/cjs/types/cloud-target.js.map +1 -1
- package/dist/cjs/types/tags.d.ts +16 -0
- package/dist/cjs/types/tags.d.ts.map +1 -1
- package/dist/cjs/types/tags.js +16 -0
- package/dist/cjs/types/tags.js.map +1 -1
- package/dist/cjs/types/validation.d.ts.map +1 -1
- package/dist/cjs/types/validation.js +14 -11
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +7 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +11 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/provider-loader.d.ts +14 -0
- package/dist/cjs/utils/provider-loader.d.ts.map +1 -0
- package/dist/cjs/utils/provider-loader.js +66 -0
- package/dist/cjs/utils/provider-loader.js.map +1 -0
- package/dist/esm/aws/dns.d.ts.map +1 -1
- package/dist/esm/aws/dns.js +3 -1
- package/dist/esm/aws/dns.js.map +1 -1
- package/dist/esm/aws/index.d.ts +1 -0
- package/dist/esm/aws/index.d.ts.map +1 -1
- package/dist/esm/aws/index.js +3 -1
- package/dist/esm/aws/index.js.map +1 -1
- package/dist/esm/aws/network.d.ts.map +1 -1
- package/dist/esm/aws/network.js +3 -1
- package/dist/esm/aws/network.js.map +1 -1
- package/dist/esm/aws/state.d.ts +32 -0
- package/dist/esm/aws/state.d.ts.map +1 -0
- package/dist/esm/aws/state.js +209 -0
- package/dist/esm/aws/state.js.map +1 -0
- package/dist/esm/azure/cluster.d.ts.map +1 -1
- package/dist/esm/azure/cluster.js +15 -5
- package/dist/esm/azure/cluster.js.map +1 -1
- package/dist/esm/azure/dns.d.ts.map +1 -1
- package/dist/esm/azure/dns.js +3 -1
- package/dist/esm/azure/dns.js.map +1 -1
- package/dist/esm/azure/index.d.ts +1 -0
- package/dist/esm/azure/index.d.ts.map +1 -1
- package/dist/esm/azure/index.js +3 -1
- package/dist/esm/azure/index.js.map +1 -1
- package/dist/esm/azure/network.d.ts.map +1 -1
- package/dist/esm/azure/network.js +9 -3
- package/dist/esm/azure/network.js.map +1 -1
- package/dist/esm/azure/secrets.d.ts.map +1 -1
- package/dist/esm/azure/secrets.js +6 -2
- package/dist/esm/azure/secrets.js.map +1 -1
- package/dist/esm/azure/state.d.ts +30 -0
- package/dist/esm/azure/state.d.ts.map +1 -0
- package/dist/esm/azure/state.js +115 -0
- package/dist/esm/azure/state.js.map +1 -0
- package/dist/esm/cache/interfaces.d.ts +12 -0
- package/dist/esm/cache/interfaces.d.ts.map +1 -1
- package/dist/esm/cli/templates.d.ts +67 -0
- package/dist/esm/cli/templates.d.ts.map +1 -0
- package/dist/esm/cli/templates.js +752 -0
- package/dist/esm/cli/templates.js.map +1 -0
- package/dist/esm/cli.d.ts +15 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +176 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/cluster/interfaces.d.ts +28 -0
- package/dist/esm/cluster/interfaces.d.ts.map +1 -1
- package/dist/esm/database/interfaces.d.ts +15 -0
- package/dist/esm/database/interfaces.d.ts.map +1 -1
- package/dist/esm/dns/interfaces.d.ts +11 -0
- package/dist/esm/dns/interfaces.d.ts.map +1 -1
- package/dist/esm/factories/cluster.d.ts +4 -3
- package/dist/esm/factories/cluster.d.ts.map +1 -1
- package/dist/esm/factories/cluster.js +13 -11
- package/dist/esm/factories/cluster.js.map +1 -1
- package/dist/esm/factories/dns.d.ts +3 -2
- package/dist/esm/factories/dns.d.ts.map +1 -1
- package/dist/esm/factories/dns.js +11 -9
- package/dist/esm/factories/dns.js.map +1 -1
- package/dist/esm/factories/index.d.ts +1 -0
- package/dist/esm/factories/index.d.ts.map +1 -1
- package/dist/esm/factories/index.js +3 -1
- package/dist/esm/factories/index.js.map +1 -1
- package/dist/esm/factories/network.d.ts +4 -3
- package/dist/esm/factories/network.d.ts.map +1 -1
- package/dist/esm/factories/network.js +13 -11
- package/dist/esm/factories/network.js.map +1 -1
- package/dist/esm/factories/secrets.d.ts +4 -3
- package/dist/esm/factories/secrets.d.ts.map +1 -1
- package/dist/esm/factories/secrets.js +12 -10
- package/dist/esm/factories/secrets.js.map +1 -1
- package/dist/esm/factories/state.d.ts +33 -0
- package/dist/esm/factories/state.d.ts.map +1 -0
- package/dist/esm/factories/state.js +63 -0
- package/dist/esm/factories/state.js.map +1 -0
- package/dist/esm/factories/types.d.ts +22 -0
- package/dist/esm/factories/types.d.ts.map +1 -1
- package/dist/esm/factories/types.js +18 -0
- package/dist/esm/factories/types.js.map +1 -1
- package/dist/esm/global-lb/glb.d.ts.map +1 -1
- package/dist/esm/global-lb/glb.js +23 -9
- package/dist/esm/global-lb/glb.js.map +1 -1
- package/dist/esm/index.d.ts +2 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -13
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/network/cidr.d.ts +34 -0
- package/dist/esm/network/cidr.d.ts.map +1 -1
- package/dist/esm/network/cidr.js +34 -0
- package/dist/esm/network/cidr.js.map +1 -1
- package/dist/esm/network/interfaces.d.ts +16 -0
- package/dist/esm/network/interfaces.d.ts.map +1 -1
- package/dist/esm/platform/interfaces.d.ts +1 -1
- package/dist/esm/platform/interfaces.d.ts.map +1 -1
- package/dist/esm/platform/stack.d.ts.map +1 -1
- package/dist/esm/platform/stack.js +6 -1
- package/dist/esm/platform/stack.js.map +1 -1
- package/dist/esm/queue/interfaces.d.ts +8 -0
- package/dist/esm/queue/interfaces.d.ts.map +1 -1
- package/dist/esm/secrets/interfaces.d.ts +5 -0
- package/dist/esm/secrets/interfaces.d.ts.map +1 -1
- package/dist/esm/state/index.d.ts +7 -0
- package/dist/esm/state/index.d.ts.map +1 -0
- package/dist/esm/state/index.js +8 -0
- package/dist/esm/state/index.js.map +1 -0
- package/dist/esm/state/interfaces.d.ts +82 -0
- package/dist/esm/state/interfaces.d.ts.map +1 -0
- package/dist/esm/state/interfaces.js +11 -0
- package/dist/esm/state/interfaces.js.map +1 -0
- package/dist/esm/storage/interfaces.d.ts +17 -0
- package/dist/esm/storage/interfaces.d.ts.map +1 -1
- package/dist/esm/types/cloud-target.d.ts +12 -0
- package/dist/esm/types/cloud-target.d.ts.map +1 -1
- package/dist/esm/types/cloud-target.js +12 -0
- package/dist/esm/types/cloud-target.js.map +1 -1
- package/dist/esm/types/tags.d.ts +16 -0
- package/dist/esm/types/tags.d.ts.map +1 -1
- package/dist/esm/types/tags.js +16 -0
- package/dist/esm/types/tags.js.map +1 -1
- package/dist/esm/types/validation.d.ts.map +1 -1
- package/dist/esm/types/validation.js +14 -11
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/utils/index.d.ts +7 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +11 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/provider-loader.d.ts +14 -0
- package/dist/esm/utils/provider-loader.d.ts.map +1 -0
- package/dist/esm/utils/provider-loader.js +33 -0
- package/dist/esm/utils/provider-loader.js.map +1 -0
- package/package.json +41 -3
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.createDns = createDns;
|
|
11
11
|
const types_1 = require("../types");
|
|
12
|
-
const aws_1 = require("../aws");
|
|
13
|
-
const azure_1 = require("../azure");
|
|
14
12
|
const types_2 = require("./types");
|
|
15
13
|
/**
|
|
16
14
|
* Create a DNS zone for one or more cloud providers.
|
|
@@ -18,34 +16,38 @@ const types_2 = require("./types");
|
|
|
18
16
|
* @param name - Resource name prefix
|
|
19
17
|
* @param config - DNS configuration with cloud target and optional providerOptions
|
|
20
18
|
* @returns Single IDns for a single cloud target, array for multi-cloud
|
|
19
|
+
* @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
|
|
21
20
|
*
|
|
22
21
|
* @example
|
|
23
22
|
* ```typescript
|
|
24
|
-
* const dns = createDns("prod", {
|
|
23
|
+
* const dns = await createDns("prod", {
|
|
25
24
|
* cloud: "aws",
|
|
26
25
|
* zoneName: "example.com",
|
|
27
26
|
* });
|
|
28
27
|
* ```
|
|
29
28
|
*/
|
|
30
|
-
function createDns(name, config) {
|
|
29
|
+
async function createDns(name, config) {
|
|
31
30
|
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
32
31
|
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
33
32
|
return dispatchDns(name, config, target, config.providerOptions);
|
|
34
33
|
}
|
|
35
34
|
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
36
|
-
return targets.map((target) => dispatchDns(`${name}-${target.provider}`, config, target, config.providerOptions));
|
|
35
|
+
return Promise.all(targets.map((target) => dispatchDns(`${name}-${target.provider}`, config, target, config.providerOptions)));
|
|
37
36
|
}
|
|
38
|
-
function dispatchDns(name, config, target, opts) {
|
|
37
|
+
async function dispatchDns(name, config, target, opts) {
|
|
39
38
|
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
40
39
|
switch (target.provider) {
|
|
41
|
-
case "aws":
|
|
42
|
-
|
|
40
|
+
case "aws": {
|
|
41
|
+
const { createRoute53Dns } = await import("../aws/index.js");
|
|
42
|
+
return createRoute53Dns(name, targetConfig);
|
|
43
|
+
}
|
|
43
44
|
case "azure": {
|
|
44
45
|
const azureOpts = opts?.azure;
|
|
45
46
|
if (!azureOpts) {
|
|
46
47
|
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
+
const { createAzureDns } = await import("../azure/index.js");
|
|
50
|
+
return createAzureDns(name, targetConfig, {
|
|
49
51
|
resourceGroupName: azureOpts.resourceGroupName,
|
|
50
52
|
});
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/factories/dns.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/factories/dns.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA6BH,8BAYC;AAtCD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,MAAwB;IACpE,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,WAAW,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAClF,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,MAAkB,EAClB,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEhG,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,+BAAuB,CAC/B,wDAAwD,EACxD,OAAO,CACR,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC7D,OAAO,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;gBACxC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;aAC/C,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -12,4 +12,5 @@ export { createNetwork, type ICreateNetworkConfig } from "./network";
|
|
|
12
12
|
export { createCluster, type ICreateClusterConfig } from "./cluster";
|
|
13
13
|
export { createDns, type ICreateDnsConfig } from "./dns";
|
|
14
14
|
export { createSecrets, type ICreateSecretsConfig } from "./secrets";
|
|
15
|
+
export { createStateBackend, type ICreateStateBackendConfig } from "./state";
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @module factories
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.createSecrets = exports.createDns = exports.createCluster = exports.createNetwork = exports.isMultiCloud = exports.extractProvider = void 0;
|
|
11
|
+
exports.createStateBackend = exports.createSecrets = exports.createDns = exports.createCluster = exports.createNetwork = exports.isMultiCloud = exports.extractProvider = void 0;
|
|
12
12
|
var types_1 = require("./types");
|
|
13
13
|
Object.defineProperty(exports, "extractProvider", { enumerable: true, get: function () { return types_1.extractProvider; } });
|
|
14
14
|
Object.defineProperty(exports, "isMultiCloud", { enumerable: true, get: function () { return types_1.isMultiCloud; } });
|
|
@@ -20,4 +20,6 @@ var dns_1 = require("./dns");
|
|
|
20
20
|
Object.defineProperty(exports, "createDns", { enumerable: true, get: function () { return dns_1.createDns; } });
|
|
21
21
|
var secrets_1 = require("./secrets");
|
|
22
22
|
Object.defineProperty(exports, "createSecrets", { enumerable: true, get: function () { return secrets_1.createSecrets; } });
|
|
23
|
+
var state_1 = require("./state");
|
|
24
|
+
Object.defineProperty(exports, "createStateBackend", { enumerable: true, get: function () { return state_1.createStateBackend; } });
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAGH,iCAAwD;AAA/C,wGAAA,eAAe,OAAA;AAAE,qGAAA,YAAY,OAAA;AAEtC,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AACtB,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AACtB,6BAAyD;AAAhD,gGAAA,SAAS,OAAA;AAClB,qCAAqE;AAA5D,wGAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAGH,iCAAwD;AAA/C,wGAAA,eAAe,OAAA;AAAE,qGAAA,YAAY,OAAA;AAEtC,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AACtB,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AACtB,6BAAyD;AAAhD,gGAAA,SAAS,OAAA;AAClB,qCAAqE;AAA5D,wGAAA,aAAa,OAAA;AACtB,iCAA6E;AAApE,2GAAA,kBAAkB,OAAA"}
|
|
@@ -18,23 +18,24 @@ export type ICreateNetworkConfig = INetworkConfig & {
|
|
|
18
18
|
* @param name - Resource name prefix
|
|
19
19
|
* @param config - Network configuration with cloud target and optional providerOptions
|
|
20
20
|
* @returns Single INetwork for a single cloud target, array for multi-cloud
|
|
21
|
+
* @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
|
|
21
22
|
*
|
|
22
23
|
* @example
|
|
23
24
|
* ```typescript
|
|
24
25
|
* // Single cloud
|
|
25
|
-
* const network = createNetwork("prod", {
|
|
26
|
+
* const network = await createNetwork("prod", {
|
|
26
27
|
* cloud: "aws",
|
|
27
28
|
* cidr: "10.0.0.0/16",
|
|
28
29
|
* natStrategy: "fck-nat",
|
|
29
30
|
* });
|
|
30
31
|
*
|
|
31
32
|
* // Multi-cloud
|
|
32
|
-
* const networks = createNetwork("prod", {
|
|
33
|
+
* const networks = await createNetwork("prod", {
|
|
33
34
|
* cloud: ["aws", "azure"],
|
|
34
35
|
* cidr: "10.0.0.0/16",
|
|
35
36
|
* providerOptions: { azure: { resourceGroupName: "my-rg" } },
|
|
36
37
|
* });
|
|
37
38
|
* ```
|
|
38
39
|
*/
|
|
39
|
-
export declare function createNetwork(name: string, config: ICreateNetworkConfig): INetwork | INetwork[]
|
|
40
|
+
export declare function createNetwork(name: string, config: ICreateNetworkConfig): Promise<INetwork | INetwork[]>;
|
|
40
41
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/factories/network.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/factories/network.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAoBhC"}
|
|
@@ -11,8 +11,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
11
|
exports.createNetwork = createNetwork;
|
|
12
12
|
const network_1 = require("../network");
|
|
13
13
|
const types_1 = require("../types");
|
|
14
|
-
const aws_1 = require("../aws");
|
|
15
|
-
const azure_1 = require("../azure");
|
|
16
14
|
const types_2 = require("./types");
|
|
17
15
|
/**
|
|
18
16
|
* Create a network (VPC/VNet) for one or more cloud providers.
|
|
@@ -20,47 +18,51 @@ const types_2 = require("./types");
|
|
|
20
18
|
* @param name - Resource name prefix
|
|
21
19
|
* @param config - Network configuration with cloud target and optional providerOptions
|
|
22
20
|
* @returns Single INetwork for a single cloud target, array for multi-cloud
|
|
21
|
+
* @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
|
|
23
22
|
*
|
|
24
23
|
* @example
|
|
25
24
|
* ```typescript
|
|
26
25
|
* // Single cloud
|
|
27
|
-
* const network = createNetwork("prod", {
|
|
26
|
+
* const network = await createNetwork("prod", {
|
|
28
27
|
* cloud: "aws",
|
|
29
28
|
* cidr: "10.0.0.0/16",
|
|
30
29
|
* natStrategy: "fck-nat",
|
|
31
30
|
* });
|
|
32
31
|
*
|
|
33
32
|
* // Multi-cloud
|
|
34
|
-
* const networks = createNetwork("prod", {
|
|
33
|
+
* const networks = await createNetwork("prod", {
|
|
35
34
|
* cloud: ["aws", "azure"],
|
|
36
35
|
* cidr: "10.0.0.0/16",
|
|
37
36
|
* providerOptions: { azure: { resourceGroupName: "my-rg" } },
|
|
38
37
|
* });
|
|
39
38
|
* ```
|
|
40
39
|
*/
|
|
41
|
-
function createNetwork(name, config) {
|
|
40
|
+
async function createNetwork(name, config) {
|
|
42
41
|
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
43
42
|
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
44
43
|
return dispatchNetwork(name, config, target, config.providerOptions);
|
|
45
44
|
}
|
|
46
45
|
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
47
46
|
const cidrs = resolveMultiCloudCidrs(config.cidr, targets.length);
|
|
48
|
-
return targets.map((target, i) => {
|
|
47
|
+
return Promise.all(targets.map((target, i) => {
|
|
49
48
|
const perTargetConfig = { ...config, cloud: config.cloud, cidr: cidrs[i] };
|
|
50
49
|
return dispatchNetwork(`${name}-${target.provider}`, perTargetConfig, target, config.providerOptions);
|
|
51
|
-
});
|
|
50
|
+
}));
|
|
52
51
|
}
|
|
53
|
-
function dispatchNetwork(name, config, target, opts) {
|
|
52
|
+
async function dispatchNetwork(name, config, target, opts) {
|
|
54
53
|
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
55
54
|
switch (target.provider) {
|
|
56
|
-
case "aws":
|
|
57
|
-
|
|
55
|
+
case "aws": {
|
|
56
|
+
const { createAwsNetwork } = await import("../aws/index.js");
|
|
57
|
+
return createAwsNetwork(name, targetConfig, opts?.aws);
|
|
58
|
+
}
|
|
58
59
|
case "azure": {
|
|
59
60
|
const azureOpts = opts?.azure;
|
|
60
61
|
if (!azureOpts) {
|
|
61
62
|
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
const { createAzureNetwork } = await import("../azure/index.js");
|
|
65
|
+
return createAzureNetwork(name, targetConfig, {
|
|
64
66
|
resourceGroupName: azureOpts.resourceGroupName,
|
|
65
67
|
subnetCount: azureOpts.subnetCount,
|
|
66
68
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/factories/network.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/factories/network.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAuCH,sCAuBC;AA3DD,wCAAwD;AACxD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAA4B;IAE5B,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAElE,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,eAAe,CACpB,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAC5B,eAAe,EACf,MAAM,EACN,MAAM,CAAC,eAAe,CACvB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,MAAsB,EACtB,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEhG,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,+BAAuB,CAC/B,wDAAwD,EACxD,OAAO,CACR,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE;gBAC5C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;gBAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;aACnC,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,IAAwB,EAAE,KAAa;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAA,yBAAe,EAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,IAAA,yBAAe,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -17,15 +17,16 @@ export type ICreateSecretsConfig = ISecretsConfig & {
|
|
|
17
17
|
* @param name - Resource name prefix
|
|
18
18
|
* @param config - Secrets configuration with cloud target and optional providerOptions
|
|
19
19
|
* @returns Single ISecrets for a single cloud target, array for multi-cloud
|
|
20
|
+
* @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
|
|
20
21
|
*
|
|
21
22
|
* @example
|
|
22
23
|
* ```typescript
|
|
23
|
-
* const secrets = createSecrets("prod", {
|
|
24
|
+
* const secrets = await createSecrets("prod", {
|
|
24
25
|
* cloud: "aws",
|
|
25
26
|
* backend: "aws-secrets-manager",
|
|
26
27
|
* });
|
|
27
28
|
*
|
|
28
|
-
* const secrets = createSecrets("prod", {
|
|
29
|
+
* const secrets = await createSecrets("prod", {
|
|
29
30
|
* cloud: "azure",
|
|
30
31
|
* backend: "azure-key-vault",
|
|
31
32
|
* providerOptions: {
|
|
@@ -34,5 +35,5 @@ export type ICreateSecretsConfig = ISecretsConfig & {
|
|
|
34
35
|
* });
|
|
35
36
|
* ```
|
|
36
37
|
*/
|
|
37
|
-
export declare function createSecrets(name: string, config: ICreateSecretsConfig): ISecrets | ISecrets[]
|
|
38
|
+
export declare function createSecrets(name: string, config: ICreateSecretsConfig): Promise<ISecrets | ISecrets[]>;
|
|
38
39
|
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/factories/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/factories/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAYhC"}
|
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.createSecrets = createSecrets;
|
|
11
11
|
const types_1 = require("../types");
|
|
12
|
-
const aws_1 = require("../aws");
|
|
13
|
-
const azure_1 = require("../azure");
|
|
14
12
|
const types_2 = require("./types");
|
|
15
13
|
/**
|
|
16
14
|
* Create a secrets store for one or more cloud providers.
|
|
@@ -18,15 +16,16 @@ const types_2 = require("./types");
|
|
|
18
16
|
* @param name - Resource name prefix
|
|
19
17
|
* @param config - Secrets configuration with cloud target and optional providerOptions
|
|
20
18
|
* @returns Single ISecrets for a single cloud target, array for multi-cloud
|
|
19
|
+
* @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
|
|
21
20
|
*
|
|
22
21
|
* @example
|
|
23
22
|
* ```typescript
|
|
24
|
-
* const secrets = createSecrets("prod", {
|
|
23
|
+
* const secrets = await createSecrets("prod", {
|
|
25
24
|
* cloud: "aws",
|
|
26
25
|
* backend: "aws-secrets-manager",
|
|
27
26
|
* });
|
|
28
27
|
*
|
|
29
|
-
* const secrets = createSecrets("prod", {
|
|
28
|
+
* const secrets = await createSecrets("prod", {
|
|
30
29
|
* cloud: "azure",
|
|
31
30
|
* backend: "azure-key-vault",
|
|
32
31
|
* providerOptions: {
|
|
@@ -35,25 +34,28 @@ const types_2 = require("./types");
|
|
|
35
34
|
* });
|
|
36
35
|
* ```
|
|
37
36
|
*/
|
|
38
|
-
function createSecrets(name, config) {
|
|
37
|
+
async function createSecrets(name, config) {
|
|
39
38
|
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
40
39
|
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
41
40
|
return dispatchSecrets(name, config, target, config.providerOptions);
|
|
42
41
|
}
|
|
43
42
|
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
44
|
-
return targets.map((target) => dispatchSecrets(`${name}-${target.provider}`, config, target, config.providerOptions));
|
|
43
|
+
return Promise.all(targets.map((target) => dispatchSecrets(`${name}-${target.provider}`, config, target, config.providerOptions)));
|
|
45
44
|
}
|
|
46
|
-
function dispatchSecrets(name, config, target, opts) {
|
|
45
|
+
async function dispatchSecrets(name, config, target, opts) {
|
|
47
46
|
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
48
47
|
switch (target.provider) {
|
|
49
|
-
case "aws":
|
|
50
|
-
|
|
48
|
+
case "aws": {
|
|
49
|
+
const { createAwsSecrets } = await import("../aws/index.js");
|
|
50
|
+
return createAwsSecrets(name, targetConfig);
|
|
51
|
+
}
|
|
51
52
|
case "azure": {
|
|
52
53
|
const azureOpts = opts?.azure;
|
|
53
54
|
if (!azureOpts?.tenantId) {
|
|
54
55
|
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure with resourceGroupName and tenantId", "azure");
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
+
const { createAzureSecrets } = await import("../azure/index.js");
|
|
58
|
+
return createAzureSecrets(name, targetConfig, {
|
|
57
59
|
resourceGroupName: azureOpts.resourceGroupName,
|
|
58
60
|
tenantId: azureOpts.tenantId,
|
|
59
61
|
objectId: azureOpts.objectId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/factories/secrets.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/factories/secrets.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAqCH,sCAeC;AAjDD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACI,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAA4B;IAE5B,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,eAAe,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CACtF,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,MAAsB,EACtB,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEhG,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,+BAAuB,CAC/B,0EAA0E,EAC1E,OAAO,CACR,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE;gBAC5C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;gBAC9C,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,GAAG,EAAE,SAAS,CAAC,GAAG;aACnB,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State backend factory — creates S3/Azure Blob state storage via a single cloud-agnostic function.
|
|
3
|
+
*
|
|
4
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
5
|
+
*
|
|
6
|
+
* @module factories/state
|
|
7
|
+
*/
|
|
8
|
+
import type { IStateBackend, IStateBackendConfig } from "../state";
|
|
9
|
+
import type { IProviderOptions } from "./types";
|
|
10
|
+
/** Config for the createStateBackend factory. */
|
|
11
|
+
export type ICreateStateBackendConfig = IStateBackendConfig & {
|
|
12
|
+
readonly providerOptions?: IProviderOptions;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Create a state backend (S3/Azure Blob) for one or more cloud providers.
|
|
16
|
+
*
|
|
17
|
+
* @param name - Resource name prefix
|
|
18
|
+
* @param config - State backend configuration with cloud target and optional providerOptions
|
|
19
|
+
* @returns Single IStateBackend for a single cloud target, array for multi-cloud
|
|
20
|
+
* @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const state = await createStateBackend("prod", {
|
|
25
|
+
* cloud: "aws",
|
|
26
|
+
* versioning: true,
|
|
27
|
+
* encryption: true,
|
|
28
|
+
* locking: { enabled: true },
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function createStateBackend(name: string, config: ICreateStateBackendConfig): Promise<IStateBackend | IStateBackend[]>;
|
|
33
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/factories/state.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,iDAAiD;AACjD,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC,CAY1C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* State backend factory — creates S3/Azure Blob state storage via a single cloud-agnostic function.
|
|
4
|
+
*
|
|
5
|
+
* Dispatches to AWS or Azure based on the `cloud` parameter.
|
|
6
|
+
*
|
|
7
|
+
* @module factories/state
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createStateBackend = createStateBackend;
|
|
11
|
+
const types_1 = require("../types");
|
|
12
|
+
const types_2 = require("./types");
|
|
13
|
+
/**
|
|
14
|
+
* Create a state backend (S3/Azure Blob) for one or more cloud providers.
|
|
15
|
+
*
|
|
16
|
+
* @param name - Resource name prefix
|
|
17
|
+
* @param config - State backend configuration with cloud target and optional providerOptions
|
|
18
|
+
* @returns Single IStateBackend for a single cloud target, array for multi-cloud
|
|
19
|
+
* @throws {UnsupportedFeatureError} If the cloud provider is not supported or Azure options are missing
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const state = await createStateBackend("prod", {
|
|
24
|
+
* cloud: "aws",
|
|
25
|
+
* versioning: true,
|
|
26
|
+
* encryption: true,
|
|
27
|
+
* locking: { enabled: true },
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
async function createStateBackend(name, config) {
|
|
32
|
+
if (!(0, types_2.isMultiCloud)(config.cloud)) {
|
|
33
|
+
const target = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
34
|
+
return dispatchStateBackend(name, config, target, config.providerOptions);
|
|
35
|
+
}
|
|
36
|
+
const targets = (0, types_1.resolveCloudTarget)(config.cloud);
|
|
37
|
+
return Promise.all(targets.map((target) => dispatchStateBackend(`${name}-${target.provider}`, config, target, config.providerOptions)));
|
|
38
|
+
}
|
|
39
|
+
async function dispatchStateBackend(name, config, target, opts) {
|
|
40
|
+
const targetConfig = { ...config, cloud: { provider: target.provider, region: target.region } };
|
|
41
|
+
switch (target.provider) {
|
|
42
|
+
case "aws": {
|
|
43
|
+
const { createAwsStateBackend } = await import("../aws/index.js");
|
|
44
|
+
return createAwsStateBackend(name, targetConfig, {
|
|
45
|
+
kmsKeyArn: opts?.aws?.stateKmsKeyArn,
|
|
46
|
+
forceDestroy: opts?.aws?.stateForceDestroy,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
case "azure": {
|
|
50
|
+
const azureOpts = opts?.azure;
|
|
51
|
+
if (!azureOpts) {
|
|
52
|
+
throw new types_1.UnsupportedFeatureError("Azure requires providerOptions.azure.resourceGroupName", "azure");
|
|
53
|
+
}
|
|
54
|
+
const { createAzureStateBackend } = await import("../azure/index.js");
|
|
55
|
+
return createAzureStateBackend(name, targetConfig, {
|
|
56
|
+
resourceGroupName: azureOpts.resourceGroupName,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
default:
|
|
60
|
+
throw new types_1.UnsupportedFeatureError("state-backend", target.provider);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/factories/state.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA+BH,gDAeC;AA3CD,oCAAuE;AAGvE,mCAAuC;AAOvC;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,MAAiC;IAEjC,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,oBAAoB,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAC3F,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,MAA2B,EAC3B,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEhG,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAClE,OAAO,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE;gBAC/C,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc;gBACpC,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,+BAAuB,CAC/B,wDAAwD,EACxD,OAAO,CACR,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACtE,OAAO,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE;gBACjD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;aAC/C,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,+BAAuB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
|
|
@@ -20,6 +20,10 @@ export interface IAwsProviderOptions {
|
|
|
20
20
|
readonly addons?: ReadonlyArray<string>;
|
|
21
21
|
/** Endpoint access: "public", "private", or "both". Default: "both". */
|
|
22
22
|
readonly endpointAccess?: "public" | "private" | "both";
|
|
23
|
+
/** KMS key ARN for state backend encryption. Uses AES256 if not provided. */
|
|
24
|
+
readonly stateKmsKeyArn?: string;
|
|
25
|
+
/** Allow Pulumi to destroy the state bucket (for dev/test). Default: false. */
|
|
26
|
+
readonly stateForceDestroy?: boolean;
|
|
23
27
|
}
|
|
24
28
|
/** Azure-specific options passed through factory functions. */
|
|
25
29
|
export interface IAzureProviderOptions {
|
|
@@ -66,10 +70,28 @@ export interface IProviderOptions {
|
|
|
66
70
|
/**
|
|
67
71
|
* Extract the provider string from a CloudArg for single-target dispatch.
|
|
68
72
|
* For arrays, returns the first element's provider.
|
|
73
|
+
*
|
|
74
|
+
* @param cloud - A cloud provider string or CloudTarget object
|
|
75
|
+
* @returns The cloud provider identifier
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* extractProvider("aws"); // "aws"
|
|
80
|
+
* extractProvider({ provider: "azure", region: "eastus" }); // "azure"
|
|
81
|
+
* ```
|
|
69
82
|
*/
|
|
70
83
|
export declare function extractProvider(cloud: CloudProvider | CloudTarget): CloudProvider;
|
|
71
84
|
/**
|
|
72
85
|
* Check if a CloudArg is a multi-cloud array.
|
|
86
|
+
*
|
|
87
|
+
* @param cloud - The cloud argument to check
|
|
88
|
+
* @returns True if the argument is an array of cloud targets
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* isMultiCloud("aws"); // false
|
|
93
|
+
* isMultiCloud(["aws", "azure"]); // true
|
|
94
|
+
* ```
|
|
73
95
|
*/
|
|
74
96
|
export declare function isMultiCloud(cloud: CloudArg): cloud is ReadonlyArray<CloudProvider | CloudTarget>;
|
|
75
97
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wCAAwC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wCAAwC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACxD,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjD,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,GAAG,aAAa,CAGjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,CAEjG"}
|
|
@@ -13,6 +13,15 @@ exports.isMultiCloud = isMultiCloud;
|
|
|
13
13
|
/**
|
|
14
14
|
* Extract the provider string from a CloudArg for single-target dispatch.
|
|
15
15
|
* For arrays, returns the first element's provider.
|
|
16
|
+
*
|
|
17
|
+
* @param cloud - A cloud provider string or CloudTarget object
|
|
18
|
+
* @returns The cloud provider identifier
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* extractProvider("aws"); // "aws"
|
|
23
|
+
* extractProvider({ provider: "azure", region: "eastus" }); // "azure"
|
|
24
|
+
* ```
|
|
16
25
|
*/
|
|
17
26
|
function extractProvider(cloud) {
|
|
18
27
|
if (typeof cloud === "string")
|
|
@@ -21,6 +30,15 @@ function extractProvider(cloud) {
|
|
|
21
30
|
}
|
|
22
31
|
/**
|
|
23
32
|
* Check if a CloudArg is a multi-cloud array.
|
|
33
|
+
*
|
|
34
|
+
* @param cloud - The cloud argument to check
|
|
35
|
+
* @returns True if the argument is an array of cloud targets
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* isMultiCloud("aws"); // false
|
|
40
|
+
* isMultiCloud(["aws", "azure"]); // true
|
|
41
|
+
* ```
|
|
24
42
|
*/
|
|
25
43
|
function isMultiCloud(cloud) {
|
|
26
44
|
return Array.isArray(cloud);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/factories/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/factories/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAgFH,0CAGC;AAcD,oCAEC;AAhCD;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAAC,KAAkC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,KAAe;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../../../src/global-lb/glb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAE1B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../../../src/global-lb/glb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAE1B,MAAM,cAAc,CAAC;AAkBtB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,GAChC,mBAAmB,CAWrB"}
|
|
@@ -45,6 +45,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
45
45
|
exports.createGlobalLoadBalancer = createGlobalLoadBalancer;
|
|
46
46
|
const aws = __importStar(require("@pulumi/aws"));
|
|
47
47
|
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
48
|
+
const types_1 = require("../types");
|
|
49
|
+
/** Default health check interval in seconds. */
|
|
50
|
+
const DEFAULT_HEALTH_CHECK_INTERVAL_SECONDS = 30;
|
|
51
|
+
/** Default health check failure threshold. */
|
|
52
|
+
const DEFAULT_FAILURE_THRESHOLD = 3;
|
|
53
|
+
/** Equal weight for active-active routing (each endpoint gets the same weight). */
|
|
54
|
+
const EQUAL_ROUTING_WEIGHT = 100;
|
|
55
|
+
/** DNS record TTL in seconds for GLB records. */
|
|
56
|
+
const GLB_DNS_TTL_SECONDS = 60;
|
|
57
|
+
/** Geographic continent codes for geo-routing. */
|
|
58
|
+
const GEO_CONTINENTS = ["NA", "EU", "AP", "SA", "AF", "OC"];
|
|
48
59
|
/**
|
|
49
60
|
* Create a Global Load Balancer across multiple clusters.
|
|
50
61
|
*
|
|
@@ -70,6 +81,8 @@ function createGlobalLoadBalancer(name, config) {
|
|
|
70
81
|
case "azure-traffic-manager":
|
|
71
82
|
// Placeholder for future providers
|
|
72
83
|
return createRoute53Glb(name, config);
|
|
84
|
+
default:
|
|
85
|
+
(0, types_1.assertNever)(config.dnsProvider);
|
|
73
86
|
}
|
|
74
87
|
}
|
|
75
88
|
function createRoute53Glb(name, config) {
|
|
@@ -84,8 +97,8 @@ function createRoute53Glb(name, config) {
|
|
|
84
97
|
type: hc.protocol === "TCP" ? "TCP" : `${hc.protocol}_STR_MATCH`,
|
|
85
98
|
resourcePath: hc.protocol !== "TCP" ? hc.path : undefined,
|
|
86
99
|
port: hc.port,
|
|
87
|
-
requestInterval: hc.intervalSeconds ??
|
|
88
|
-
failureThreshold: hc.unhealthyThreshold ??
|
|
100
|
+
requestInterval: hc.intervalSeconds ?? DEFAULT_HEALTH_CHECK_INTERVAL_SECONDS,
|
|
101
|
+
failureThreshold: hc.unhealthyThreshold ?? DEFAULT_FAILURE_THRESHOLD,
|
|
89
102
|
fqdn: cluster.endpoint.apply((ep) => {
|
|
90
103
|
try {
|
|
91
104
|
return new URL(ep).hostname;
|
|
@@ -108,9 +121,9 @@ function createRoute53Glb(name, config) {
|
|
|
108
121
|
zoneId: zone.zoneId,
|
|
109
122
|
name: config.domain,
|
|
110
123
|
type: "CNAME",
|
|
111
|
-
ttl:
|
|
124
|
+
ttl: GLB_DNS_TTL_SECONDS,
|
|
112
125
|
setIdentifier: `${name}-${entry.cluster.name}`,
|
|
113
|
-
weightedRoutingPolicies: [{ weight:
|
|
126
|
+
weightedRoutingPolicies: [{ weight: EQUAL_ROUTING_WEIGHT }],
|
|
114
127
|
healthCheckId: entry.healthCheck.id,
|
|
115
128
|
records: [
|
|
116
129
|
entry.cluster.endpoint.apply((ep) => {
|
|
@@ -133,7 +146,7 @@ function createRoute53Glb(name, config) {
|
|
|
133
146
|
zoneId: zone.zoneId,
|
|
134
147
|
name: config.domain,
|
|
135
148
|
type: "CNAME",
|
|
136
|
-
ttl:
|
|
149
|
+
ttl: GLB_DNS_TTL_SECONDS,
|
|
137
150
|
setIdentifier: `${name}-${entry.cluster.name}`,
|
|
138
151
|
failoverRoutingPolicies: [{ type: i === 0 ? "PRIMARY" : "SECONDARY" }],
|
|
139
152
|
healthCheckId: entry.healthCheck.id,
|
|
@@ -153,16 +166,15 @@ function createRoute53Glb(name, config) {
|
|
|
153
166
|
}
|
|
154
167
|
case "geo": {
|
|
155
168
|
// Geolocation routing — defaults to continent-based
|
|
156
|
-
const continents = ["NA", "EU", "AP", "SA", "AF", "OC"];
|
|
157
169
|
for (const [i, entry] of healthChecks.entries()) {
|
|
158
170
|
new aws.route53.Record(`${name}-record-${i}`, {
|
|
159
171
|
zoneId: zone.zoneId,
|
|
160
172
|
name: config.domain,
|
|
161
173
|
type: "CNAME",
|
|
162
|
-
ttl:
|
|
174
|
+
ttl: GLB_DNS_TTL_SECONDS,
|
|
163
175
|
setIdentifier: `${name}-${entry.cluster.name}`,
|
|
164
176
|
geolocationRoutingPolicies: [
|
|
165
|
-
i <
|
|
177
|
+
i < GEO_CONTINENTS.length ? { continent: GEO_CONTINENTS[i] } : { country: "*" },
|
|
166
178
|
],
|
|
167
179
|
healthCheckId: entry.healthCheck.id,
|
|
168
180
|
records: [
|
|
@@ -185,7 +197,7 @@ function createRoute53Glb(name, config) {
|
|
|
185
197
|
zoneId: zone.zoneId,
|
|
186
198
|
name: config.domain,
|
|
187
199
|
type: "CNAME",
|
|
188
|
-
ttl:
|
|
200
|
+
ttl: GLB_DNS_TTL_SECONDS,
|
|
189
201
|
setIdentifier: `${name}-default`,
|
|
190
202
|
geolocationRoutingPolicies: [{ country: "*" }],
|
|
191
203
|
healthCheckId: fallback.healthCheck.id,
|
|
@@ -204,6 +216,8 @@ function createRoute53Glb(name, config) {
|
|
|
204
216
|
}
|
|
205
217
|
break;
|
|
206
218
|
}
|
|
219
|
+
default:
|
|
220
|
+
(0, types_1.assertNever)(config.strategy);
|
|
207
221
|
}
|
|
208
222
|
// Health status output
|
|
209
223
|
const healthStatus = pulumi.all(healthChecks.map((entry) => pulumi.all([pulumi.output(entry.cluster.name), entry.healthCheck.id]).apply(([clusterName]) => ({
|