From 9bd346bc9c73dac3e715c7471fb27ca0170569aa Mon Sep 17 00:00:00 2001 From: Adrian Smijulj Date: Wed, 14 Dec 2022 20:52:50 +0100 Subject: [PATCH] fix: introduce `pulumiResourceNamePrefix ` parameter * feat: introduce `prefixPulumiResources` * feat: introduce `prefixPulumiResources` * feat: rename `prefixPulumiResources` to `pulumiResourceNamePrefix` --- apps/admin/webiny.application.ts | 4 +++- apps/api/webiny.application.ts | 4 +++- apps/core/webiny.application.ts | 2 +- apps/website/webiny.application.ts | 4 +++- .../common/apps/admin/webiny.application.ts | 4 +++- .../common/apps/website/webiny.application.ts | 4 +++- .../ddb-es/apps/api/webiny.application.ts | 3 ++- .../ddb-es/apps/core/webiny.application.ts | 3 ++- .../ddb/apps/api/webiny.application.ts | 4 +++- .../ddb/apps/core/webiny.application.ts | 4 +++- .../src/apps/admin/createAdminPulumiApp.ts | 7 ++++++- .../src/apps/api/createApiPulumiApp.ts | 16 ++++++++++++++++ .../src/apps/core/createCorePulumiApp.ts | 16 ++++++++++++++++ .../src/apps/react/createReactPulumiApp.ts | 18 +++++++++++++++++- .../src/apps/website/createWebsitePulumiApp.ts | 16 ++++++++++++++++ 15 files changed, 97 insertions(+), 12 deletions(-) diff --git a/apps/admin/webiny.application.ts b/apps/admin/webiny.application.ts index eeafc98317d..4787041ee90 100644 --- a/apps/admin/webiny.application.ts +++ b/apps/admin/webiny.application.ts @@ -1,3 +1,5 @@ import { createAdminApp } from "@webiny/serverless-cms-aws"; -export default createAdminApp(); +export default createAdminApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/apps/api/webiny.application.ts b/apps/api/webiny.application.ts index cc2ed9beeca..cb7b992a52a 100644 --- a/apps/api/webiny.application.ts +++ b/apps/api/webiny.application.ts @@ -1,3 +1,5 @@ import { createApiApp } from "@webiny/serverless-cms-aws"; -export default createApiApp(); +export default createApiApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/apps/core/webiny.application.ts b/apps/core/webiny.application.ts index ed01825de2c..6423e15e0c5 100644 --- a/apps/core/webiny.application.ts +++ b/apps/core/webiny.application.ts @@ -1,5 +1,5 @@ import { createCoreApp } from "@webiny/serverless-cms-aws"; export default createCoreApp({ - elasticSearch: false + pulumiResourceNamePrefix: "wby-" }); diff --git a/apps/website/webiny.application.ts b/apps/website/webiny.application.ts index 7542ff9bf67..669217dfb9f 100644 --- a/apps/website/webiny.application.ts +++ b/apps/website/webiny.application.ts @@ -1,3 +1,5 @@ import { createWebsiteApp } from "@webiny/serverless-cms-aws"; -export default createWebsiteApp(); +export default createWebsiteApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/packages/cwp-template-aws/template/common/apps/admin/webiny.application.ts b/packages/cwp-template-aws/template/common/apps/admin/webiny.application.ts index eeafc98317d..4787041ee90 100644 --- a/packages/cwp-template-aws/template/common/apps/admin/webiny.application.ts +++ b/packages/cwp-template-aws/template/common/apps/admin/webiny.application.ts @@ -1,3 +1,5 @@ import { createAdminApp } from "@webiny/serverless-cms-aws"; -export default createAdminApp(); +export default createAdminApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/packages/cwp-template-aws/template/common/apps/website/webiny.application.ts b/packages/cwp-template-aws/template/common/apps/website/webiny.application.ts index 7542ff9bf67..669217dfb9f 100644 --- a/packages/cwp-template-aws/template/common/apps/website/webiny.application.ts +++ b/packages/cwp-template-aws/template/common/apps/website/webiny.application.ts @@ -1,3 +1,5 @@ import { createWebsiteApp } from "@webiny/serverless-cms-aws"; -export default createWebsiteApp(); +export default createWebsiteApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/packages/cwp-template-aws/template/ddb-es/apps/api/webiny.application.ts b/packages/cwp-template-aws/template/ddb-es/apps/api/webiny.application.ts index 786efeb91f2..7bdd5a65b8b 100644 --- a/packages/cwp-template-aws/template/ddb-es/apps/api/webiny.application.ts +++ b/packages/cwp-template-aws/template/ddb-es/apps/api/webiny.application.ts @@ -1,5 +1,6 @@ import { createApiApp } from "@webiny/serverless-cms-aws"; export default createApiApp({ - elasticSearch: true + elasticSearch: true, + pulumiResourceNamePrefix: "wby-" }); diff --git a/packages/cwp-template-aws/template/ddb-es/apps/core/webiny.application.ts b/packages/cwp-template-aws/template/ddb-es/apps/core/webiny.application.ts index 46820afca0d..c2ed780ec60 100644 --- a/packages/cwp-template-aws/template/ddb-es/apps/core/webiny.application.ts +++ b/packages/cwp-template-aws/template/ddb-es/apps/core/webiny.application.ts @@ -1,5 +1,6 @@ import { createCoreApp } from "@webiny/serverless-cms-aws"; export default createCoreApp({ - elasticSearch: true + elasticSearch: true, + pulumiResourceNamePrefix: "wby-" }); diff --git a/packages/cwp-template-aws/template/ddb/apps/api/webiny.application.ts b/packages/cwp-template-aws/template/ddb/apps/api/webiny.application.ts index cc2ed9beeca..cb7b992a52a 100644 --- a/packages/cwp-template-aws/template/ddb/apps/api/webiny.application.ts +++ b/packages/cwp-template-aws/template/ddb/apps/api/webiny.application.ts @@ -1,3 +1,5 @@ import { createApiApp } from "@webiny/serverless-cms-aws"; -export default createApiApp(); +export default createApiApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/packages/cwp-template-aws/template/ddb/apps/core/webiny.application.ts b/packages/cwp-template-aws/template/ddb/apps/core/webiny.application.ts index 66dcb6d7413..6423e15e0c5 100644 --- a/packages/cwp-template-aws/template/ddb/apps/core/webiny.application.ts +++ b/packages/cwp-template-aws/template/ddb/apps/core/webiny.application.ts @@ -1,3 +1,5 @@ import { createCoreApp } from "@webiny/serverless-cms-aws"; -export default createCoreApp(); +export default createCoreApp({ + pulumiResourceNamePrefix: "wby-" +}); diff --git a/packages/pulumi-aws/src/apps/admin/createAdminPulumiApp.ts b/packages/pulumi-aws/src/apps/admin/createAdminPulumiApp.ts index 30fabf18d30..75a46318270 100644 --- a/packages/pulumi-aws/src/apps/admin/createAdminPulumiApp.ts +++ b/packages/pulumi-aws/src/apps/admin/createAdminPulumiApp.ts @@ -1,4 +1,4 @@ -import { PulumiAppParamCallback } from "@webiny/pulumi"; +import { PulumiAppParam, PulumiAppParamCallback } from "@webiny/pulumi"; import { createReactPulumiApp, CustomDomainParams } from "~/apps"; export type AdminPulumiApp = ReturnType; @@ -12,6 +12,11 @@ export interface CreateAdminPulumiAppParams { * or add additional ones into the mix. */ pulumi?: (app: AdminPulumiApp) => void | Promise; + + /** + * Prefixes names of all Pulumi cloud infrastructure resource with given prefix. + */ + pulumiResourceNamePrefix?: PulumiAppParam; } export const createAdminPulumiApp = (projectAppParams: CreateAdminPulumiAppParams) => { diff --git a/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts b/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts index 78834f9caf9..a66caa29e24 100644 --- a/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts +++ b/packages/pulumi-aws/src/apps/api/createApiPulumiApp.ts @@ -31,6 +31,11 @@ export interface CreateApiPulumiAppParams { * or add additional ones into the mix. */ pulumi?: (app: ApiPulumiApp) => void | Promise; + + /** + * Prefixes names of all Pulumi cloud infrastructure resource with given prefix. + */ + pulumiResourceNamePrefix?: PulumiAppParam; } export const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = {}) => { @@ -39,6 +44,17 @@ export const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = path: "apps/api", config: projectAppParams, program: async app => { + const pulumiResourceNamePrefix = app.getParam( + projectAppParams.pulumiResourceNamePrefix + ); + if (pulumiResourceNamePrefix) { + app.onResource(resource => { + if (!resource.name.startsWith(pulumiResourceNamePrefix)) { + resource.name = `${pulumiResourceNamePrefix}${resource.name}`; + } + }); + } + // Overrides must be applied via a handler, registered at the very start of the program. // By doing this, we're ensuring user's adjustments are not applied too late. if (projectAppParams.pulumi) { diff --git a/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts b/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts index 15fe381eb8a..999005f179a 100644 --- a/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts +++ b/packages/pulumi-aws/src/apps/core/createCorePulumiApp.ts @@ -38,6 +38,11 @@ export interface CreateCorePulumiAppParams { * or add additional ones into the mix. */ pulumi?: (app: CorePulumiApp) => void | Promise; + + /** + * Prefixes names of all Pulumi cloud infrastructure resource with given prefix. + */ + pulumiResourceNamePrefix?: PulumiAppParam; } export interface CoreAppLegacyConfig { @@ -50,6 +55,17 @@ export function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams path: "apps/core", config: projectAppParams, program: async app => { + const pulumiResourceNamePrefix = app.getParam( + projectAppParams.pulumiResourceNamePrefix + ); + if (pulumiResourceNamePrefix) { + app.onResource(resource => { + if (!resource.name.startsWith(pulumiResourceNamePrefix)) { + resource.name = `${pulumiResourceNamePrefix}${resource.name}`; + } + }); + } + // Overrides must be applied via a handler, registered at the very start of the program. // By doing this, we're ensuring user's adjustments are not applied to late. if (projectAppParams.pulumi) { diff --git a/packages/pulumi-aws/src/apps/react/createReactPulumiApp.ts b/packages/pulumi-aws/src/apps/react/createReactPulumiApp.ts index a77d501129b..de8e8f8b5e9 100644 --- a/packages/pulumi-aws/src/apps/react/createReactPulumiApp.ts +++ b/packages/pulumi-aws/src/apps/react/createReactPulumiApp.ts @@ -1,6 +1,6 @@ import * as aws from "@pulumi/aws"; -import { createPulumiApp, PulumiAppParamCallback } from "@webiny/pulumi"; +import { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from "@webiny/pulumi"; import { tagResources } from "~/utils"; import { createPrivateAppBucket } from "../createAppBucket"; import { applyCustomDomain, CustomDomainParams } from "../customDomain"; @@ -26,6 +26,11 @@ export interface CreateReactPulumiAppParams { * or add additional ones into the mix. */ pulumi?: (app: ReactPulumiApp) => void | Promise; + + /** + * Prefixes names of all Pulumi cloud infrastructure resource with given prefix. + */ + pulumiResourceNamePrefix?: PulumiAppParam; } export const createReactPulumiApp = (projectAppParams: CreateReactPulumiAppParams) => { @@ -34,6 +39,17 @@ export const createReactPulumiApp = (projectAppParams: CreateReactPulumiAppParam path: projectAppParams.folder, config: projectAppParams, program: async app => { + const pulumiResourceNamePrefix = app.getParam( + projectAppParams.pulumiResourceNamePrefix + ); + if (pulumiResourceNamePrefix) { + app.onResource(resource => { + if (!resource.name.startsWith(pulumiResourceNamePrefix)) { + resource.name = `${pulumiResourceNamePrefix}${resource.name}`; + } + }); + } + const { name } = projectAppParams; // Overrides must be applied via a handler, registered at the very start of the program. diff --git a/packages/pulumi-aws/src/apps/website/createWebsitePulumiApp.ts b/packages/pulumi-aws/src/apps/website/createWebsitePulumiApp.ts index c6f4cb85d02..45372474e10 100644 --- a/packages/pulumi-aws/src/apps/website/createWebsitePulumiApp.ts +++ b/packages/pulumi-aws/src/apps/website/createWebsitePulumiApp.ts @@ -33,6 +33,11 @@ export interface CreateWebsitePulumiAppParams { * or add additional ones into the mix. */ pulumi?: (app: WebsitePulumiApp) => void | Promise; + + /** + * Prefixes names of all Pulumi cloud infrastructure resource with given prefix. + */ + pulumiResourceNamePrefix?: PulumiAppParam; } export const createWebsitePulumiApp = (projectAppParams: CreateWebsitePulumiAppParams = {}) => { @@ -41,6 +46,17 @@ export const createWebsitePulumiApp = (projectAppParams: CreateWebsitePulumiAppP path: "apps/website", config: projectAppParams, program: async app => { + const pulumiResourceNamePrefix = app.getParam( + projectAppParams.pulumiResourceNamePrefix + ); + if (pulumiResourceNamePrefix) { + app.onResource(resource => { + if (!resource.name.startsWith(pulumiResourceNamePrefix)) { + resource.name = `${pulumiResourceNamePrefix}${resource.name}`; + } + }); + } + // Overrides must be applied via a handler, registered at the very start of the program. // By doing this, we're ensuring user's adjustments are not applied to late. if (projectAppParams.pulumi) {