Skip to content

Commit 3957181

Browse files
committed
wip
1 parent 05561a3 commit 3957181

File tree

7 files changed

+75
-33
lines changed

7 files changed

+75
-33
lines changed

packages/pulumi-aws/src/enterprise/createApiPulumiApp.ts

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,33 @@ import {
66
type CreateApiPulumiAppParams as BaseCreateApiPulumiAppParams
77
} from "~/apps/api/createApiPulumiApp.js";
88
import { handleGuardDutyEvents } from "~/enterprise/api/handleGuardDutyEvents.js";
9-
10-
export type ApiPulumiApp = ReturnType<typeof createApiPulumiApp>;
9+
import { getVpcConfigFromExtension } from "./extensions/getVpcConfigFromExtension";
10+
import { getEsConfigFromExtension } from "./extensions/getEsConfigFromExtension";
11+
import { getOsConfigFromExtension } from "./extensions/getOsConfigFromExtension";
12+
import { getProjectSdk } from "@webiny/project";
13+
import { awsTags as awsTagsExt } from "~/extensions/awsTags";
14+
import { tagResources } from "~/utils";
15+
import { ApiPulumi } from "@webiny/project/abstractions";
1116

1217
export type ApiPulumiAppAdvancedVpcParams = Partial<{
1318
useExistingVpc: {
1419
lambdaFunctionsVpcConfig: aws.types.input.lambda.FunctionVpcConfig;
1520
};
1621
}>;
1722

18-
export interface CreateApiPulumiAppParams extends Omit<BaseCreateApiPulumiAppParams, "vpc"> {
19-
vpc?: PulumiAppParam<boolean | ApiPulumiAppAdvancedVpcParams>;
20-
}
23+
const sdk = await getProjectSdk();
24+
const projectConfig = await sdk.getProjectConfig();
25+
26+
export function createApiPulumiApp() {
27+
const vpc = getVpcConfigFromExtension(projectConfig);
28+
const elasticSearch = getEsConfigFromExtension(projectConfig);
29+
const openSearch = getOsConfigFromExtension(projectConfig);
2130

22-
export function createApiPulumiApp(projectAppParams: CreateApiPulumiAppParams = {}) {
2331
return baseCreateApiPulumiApp({
24-
...projectAppParams,
32+
elasticSearch,
33+
openSearch,
2534
// If using existing VPC, we ensure `vpc` param is set to `false`.
26-
vpc: ({ getParam }) => {
27-
const vpc = getParam(projectAppParams.vpc);
35+
vpc: () => {
2836
if (!vpc) {
2937
// This could be `false` or `undefined`. If `undefined`, down the line,
3038
// this means "deploy into VPC if dealing with a production environment".
@@ -40,10 +48,18 @@ export function createApiPulumiApp(projectAppParams: CreateApiPulumiAppParams =
4048
return true;
4149
},
4250
async pulumi(app) {
51+
const defaultPulumi = () => {
52+
projectConfig.extensionsByType(awsTagsExt).forEach(ext => {
53+
tagResources(ext.params.tags);
54+
});
55+
56+
const pulumiHandlers = sdk.getContainer().resolve(ApiPulumi);
57+
pulumiHandlers.execute(app);
58+
};
59+
4360
const license = await License.fromEnvironment();
4461

4562
const { getParam } = app;
46-
const vpc = getParam(projectAppParams.vpc);
4763
const usingAdvancedVpcParams = vpc && typeof vpc !== "boolean";
4864

4965
if (license.canUseFileManagerThreatDetection()) {
@@ -52,7 +68,7 @@ export function createApiPulumiApp(projectAppParams: CreateApiPulumiAppParams =
5268

5369
// Not using advanced VPC params? Then immediately exit.
5470
if (!usingAdvancedVpcParams) {
55-
return projectAppParams.pulumi?.(app);
71+
return defaultPulumi();
5672
}
5773

5874
const { onResource, addResource } = app;
@@ -88,7 +104,7 @@ export function createApiPulumiApp(projectAppParams: CreateApiPulumiAppParams =
88104
});
89105
}
90106

91-
return projectAppParams.pulumi?.(app);
107+
return defaultPulumi();
92108
}
93109
});
94110
}

packages/pulumi-aws/src/enterprise/createCorePulumiApp.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import { isResourceOfType, type PulumiAppParam } from "@webiny/pulumi";
88
import { getAwsRegion } from "~/apps/awsUtils.js";
99
import { configureS3BucketMalwareProtection } from "~/enterprise/core/configureS3BucketMalwareProtection.js";
1010
import { License } from "@webiny/wcp";
11-
import { getVpcConfigFromExtension } from "./getVpcConfigFromExtension";
12-
import { getEsConfigFromExtension } from "./getEsConfigFromExtension";
13-
import { getOsConfigFromExtension } from "./getOsConfigFromExtension";
11+
import { getVpcConfigFromExtension } from "./extensions/getVpcConfigFromExtension";
12+
import { getEsConfigFromExtension } from "./extensions/getEsConfigFromExtension";
13+
import { getOsConfigFromExtension } from "./extensions/getOsConfigFromExtension";
1414
import { getProjectSdk } from "@webiny/project";
1515
import { awsTags as awsTagsExt } from "~/extensions/awsTags";
1616
import { tagResources } from "~/utils";
@@ -27,10 +27,6 @@ export type CorePulumiAppAdvancedVpcParams = Partial<{
2727
};
2828
}>;
2929

30-
export interface CreateCorePulumiAppParams extends Omit<BaseCreateCorePulumiAppParams, "vpc"> {
31-
vpc?: PulumiAppParam<boolean | CorePulumiAppAdvancedVpcParams>;
32-
}
33-
3430
const sdk = await getProjectSdk();
3531
const projectConfig = await sdk.getProjectConfig();
3632

packages/pulumi-aws/src/enterprise/createSyncSystemPulumiApp.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ import type { CreateSyncSystemPulumiAppParams as BaseCreateSyncSystemPulumiAppPa
33
import { createSyncSystemPulumiApp as baseCreateSyncSystemPulumiApp } from "~/apps/syncSystem/createSyncSystemPulumiApp.js";
44
import type { PulumiAppParam } from "@webiny/pulumi";
55
import { isResourceOfType } from "@webiny/pulumi";
6+
import { getVpcConfigFromExtension } from "~/enterprise/extensions/getVpcConfigFromExtension";
7+
import { awsTags as awsTagsExt } from "~/extensions/awsTags";
8+
import { tagResources } from "~/utils";
9+
import { WebsitePulumi } from "@webiny/project/abstractions";
610

711
export type SyncSystemPulumiApp = ReturnType<typeof createSyncSystemPulumiApp>;
812

@@ -21,25 +25,34 @@ export interface CreateSyncSystemPulumiAppParams
2125
}
2226

2327
export function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulumiAppParams = {}) {
28+
const vpc = getVpcConfigFromExtension(projectConfig);
29+
2430
return baseCreateSyncSystemPulumiApp({
2531
...projectAppParams,
2632
// If using existing VPC, we ensure `vpc` param is set to `false`.
2733
vpc: ({ getParam }) => {
28-
const vpc = getParam(projectAppParams.vpc);
2934
const usingAdvancedVpcParams = vpc && typeof vpc !== "boolean";
3035
return usingAdvancedVpcParams && vpc.useExistingVpc ? false : Boolean(vpc);
3136
},
32-
pulumi(...args) {
33-
const [{ getParam }] = args;
34-
const vpc = getParam(projectAppParams.vpc);
37+
pulumi(app) {
38+
const defaultPulumi = () => {
39+
projectConfig.extensionsByType(awsTagsExt).forEach(ext => {
40+
tagResources(ext.params.tags);
41+
});
42+
43+
const pulumiHandlers = sdk.getContainer().resolve(WebsitePulumi);
44+
pulumiHandlers.execute(app);
45+
};
46+
47+
const { getParam } = app;
3548
const usingAdvancedVpcParams = vpc && typeof vpc !== "boolean";
3649

3750
// Not using advanced VPC params? Then immediately exit.
3851
if (!usingAdvancedVpcParams) {
39-
return projectAppParams.pulumi?.(...args);
52+
return defaultPulumi();
4053
}
4154

42-
const [{ onResource, addResource }] = args;
55+
const { onResource, addResource } = app;
4356
const { useExistingVpc } = vpc;
4457

4558
// 1. We first deal with "existing VPC" setup.
@@ -72,7 +85,7 @@ export function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulu
7285
});
7386
}
7487

75-
return projectAppParams.pulumi?.(...args);
88+
return defaultPulumi();
7689
}
7790
});
7891
}

packages/pulumi-aws/src/enterprise/createWebsitePulumiApp.ts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ import {
44
type CreateWebsitePulumiAppParams as BaseCreateWebsitePulumiAppParams
55
} from "~/apps/website/createWebsitePulumiApp.js";
66
import { isResourceOfType, type PulumiAppParam } from "@webiny/pulumi";
7+
import { getVpcConfigFromExtension } from "./extensions/getVpcConfigFromExtension";
8+
import { getProjectSdk } from "@webiny/project";
9+
import { awsTags as awsTagsExt } from "~/extensions/awsTags";
10+
import { tagResources } from "~/utils";
11+
import { WebsitePulumi } from "@webiny/project/abstractions";
712

813
export type WebsitePulumiApp = ReturnType<typeof createWebsitePulumiApp>;
914

@@ -18,12 +23,16 @@ export interface CreateWebsitePulumiAppParams
1823
vpc?: PulumiAppParam<boolean | WebsitePulumiAppAdvancedVpcParams>;
1924
}
2025

26+
const sdk = await getProjectSdk();
27+
const projectConfig = await sdk.getProjectConfig();
28+
2129
export function createWebsitePulumiApp(projectAppParams: CreateWebsitePulumiAppParams = {}) {
30+
const vpc = getVpcConfigFromExtension(projectConfig);
31+
2232
return baseCreateWebsitePulumiApp({
2333
...projectAppParams,
2434
// If using existing VPC, we ensure `vpc` param is set to `false`.
2535
vpc: ({ getParam }) => {
26-
const vpc = getParam(projectAppParams.vpc);
2736
if (!vpc) {
2837
// This could be `false` or `undefined`. If `undefined`, down the line,
2938
// this means "deploy into VPC if dealing with a production environment".
@@ -38,17 +47,25 @@ export function createWebsitePulumiApp(projectAppParams: CreateWebsitePulumiAppP
3847

3948
return true;
4049
},
41-
pulumi(...args) {
42-
const [{ getParam }] = args;
43-
const vpc = getParam(projectAppParams.vpc);
50+
pulumi(app) {
51+
const defaultPulumi = () => {
52+
projectConfig.extensionsByType(awsTagsExt).forEach(ext => {
53+
tagResources(ext.params.tags);
54+
});
55+
56+
const pulumiHandlers = sdk.getContainer().resolve(WebsitePulumi);
57+
pulumiHandlers.execute(app);
58+
};
59+
60+
const { getParam } = app;
4461
const usingAdvancedVpcParams = vpc && typeof vpc !== "boolean";
4562

4663
// Not using advanced VPC params? Then immediately exit.
4764
if (!usingAdvancedVpcParams) {
48-
return projectAppParams.pulumi?.(...args);
65+
return defaultPulumi();
4966
}
5067

51-
const [{ onResource, addResource }] = args;
68+
const { onResource, addResource } = app;
5269
const { useExistingVpc } = vpc;
5370

5471
if (useExistingVpc) {
@@ -80,7 +97,7 @@ export function createWebsitePulumiApp(projectAppParams: CreateWebsitePulumiAppP
8097
});
8198
}
8299

83-
return projectAppParams.pulumi?.(...args);
100+
return defaultPulumi();
84101
}
85102
});
86103
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)