Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions src/armTemplates/compositeArmTemplate.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
import {
ArmResourceTemplateGenerator,
ArmResourceTemplate
ArmResourceTemplate,
ArmResourceType
} from "../models/armTemplates";
import { Guard } from "../shared/guard";
import { ServerlessAzureConfig } from "../models/serverless";
import { Utils } from "../shared/utils";

export class CompositeArmTemplate implements ArmResourceTemplateGenerator {

public getArmResourceType(): ArmResourceType {
return ArmResourceType.Composite;
}

public constructor(private childTemplates: ArmResourceTemplateGenerator[]) {
Guard.null(childTemplates);
}
Expand Down Expand Up @@ -36,13 +42,13 @@ export class CompositeArmTemplate implements ArmResourceTemplateGenerator {
return template;
}

public getParameters(config: ServerlessAzureConfig) {
public getParameters(config: ServerlessAzureConfig, namer: (resource: ArmResourceType) => string) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't feel right that the getParameters(...) function now requires the function to name the resource. Since you have already added ArmResourceType enum - what if we have the ARM resource classes just take a dependency on the naming service? And call the naming service as needed to generate the name?

let parameters = {};

this.childTemplates.forEach(resource => {
parameters = {
...parameters,
...resource.getParameters(config),
...resource.getParameters(config, namer),
location: Utils.getNormalizedRegionName(config.provider.region)
};
});
Expand Down
18 changes: 8 additions & 10 deletions src/armTemplates/resources/apim.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { ServerlessAzureConfig } from "../../models/serverless";
import { ArmResourceTemplateGenerator, ArmResourceTemplate } from "../../models/armTemplates";
import { ApiManagementConfig } from "../../models/apiManagement";
import { Utils } from "../../shared/utils";
import { ArmResourceTemplate, ArmResourceTemplateGenerator, ArmResourceType } from "../../models/armTemplates";
import { ServerlessAzureConfig } from "../../models/serverless";

export class ApimResource implements ArmResourceTemplateGenerator {
public static getResourceName(config: ServerlessAzureConfig) {
return config.provider.apim && config.provider.apim.name
? config.provider.apim.name
: `${config.provider.prefix}-${Utils.createShortAzureRegionName(config.provider.region)}-${Utils.createShortStageName(config.provider.stage)}-apim`;

public getArmResourceType(): ArmResourceType {
return ArmResourceType.Apim;
}

public getTemplate(): ArmResourceTemplate {
Expand Down Expand Up @@ -63,18 +61,18 @@ export class ApimResource implements ArmResourceTemplateGenerator {
};
}

public getParameters(config: ServerlessAzureConfig) {
public getParameters(config: ServerlessAzureConfig, namer: (resource: ArmResourceType) => string) {
const apimConfig: ApiManagementConfig = {
sku: {},
...config.provider.apim,
};

return {
apiManagementName: ApimResource.getResourceName(config),
apiManagementName: namer(this.getArmResourceType()),
apimSkuName: apimConfig.sku.name,
apimSkuCapacity: apimConfig.sku.capacity,
apimPublisherEmail: apimConfig.publisherEmail,
apimPublisherName: apimConfig.publisherName,
};
}
}
}
16 changes: 7 additions & 9 deletions src/armTemplates/resources/appInsights.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import { ArmResourceTemplateGenerator, ArmResourceTemplate } from "../../models/armTemplates";
import { ArmResourceTemplate, ArmResourceTemplateGenerator, ArmResourceType } from "../../models/armTemplates";
import { ServerlessAzureConfig } from "../../models/serverless";
import { Utils } from "../../shared/utils";

export class AppInsightsResource implements ArmResourceTemplateGenerator {
public static getResourceName(config: ServerlessAzureConfig) {
return config.provider.appInsights && config.provider.appInsights.name
? config.provider.appInsights.name
: `${config.provider.prefix}-${Utils.createShortAzureRegionName(config.provider.region)}-${Utils.createShortStageName(config.provider.stage)}-appinsights`;

public getArmResourceType(): ArmResourceType {
return ArmResourceType.AppInsights;
}

public getTemplate(): ArmResourceTemplate {
Expand Down Expand Up @@ -40,9 +38,9 @@ export class AppInsightsResource implements ArmResourceTemplateGenerator {
}
}

public getParameters(config: ServerlessAzureConfig): any {
public getParameters(config: ServerlessAzureConfig, namer: (resource: ArmResourceType) => string): any {
return {
appInsightsName: AppInsightsResource.getResourceName(config),
appInsightsName: namer(this.getArmResourceType()),
};
}
}
}
18 changes: 8 additions & 10 deletions src/armTemplates/resources/appServicePlan.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import { ArmResourceTemplateGenerator, ArmResourceTemplate } from "../../models/armTemplates";
import { ServerlessAzureConfig, ResourceConfig } from "../../models/serverless";
import { Utils } from "../../shared/utils";
import { ArmResourceTemplate, ArmResourceTemplateGenerator, ArmResourceType } from "../../models/armTemplates";
import { ResourceConfig, ServerlessAzureConfig } from "../../models/serverless";

export class AppServicePlanResource implements ArmResourceTemplateGenerator {
public static getResourceName(config: ServerlessAzureConfig) {
return config.provider.appServicePlan && config.provider.appServicePlan.name
? config.provider.appServicePlan.name
: `${config.provider.prefix}-${Utils.createShortAzureRegionName(config.provider.region)}-${Utils.createShortStageName(config.provider.stage)}-asp`;

public getArmResourceType(): ArmResourceType {
return ArmResourceType.AppServicePlan;
}

public getTemplate(): ArmResourceTemplate {
Expand Down Expand Up @@ -54,16 +52,16 @@ export class AppServicePlanResource implements ArmResourceTemplateGenerator {
};
}

public getParameters(config: ServerlessAzureConfig): any {
public getParameters(config: ServerlessAzureConfig, namer: (resource: ArmResourceType) => string): any {
const resourceConfig: ResourceConfig = {
sku: {},
...config.provider.storageAccount,
};

return {
appServicePlanName: AppServicePlanResource.getResourceName(config),
appServicePlanName: namer(this.getArmResourceType()),
appServicePlanSkuName: resourceConfig.sku.name,
appServicePlanSkuTier: resourceConfig.sku.tier,
}
}
}
}
16 changes: 6 additions & 10 deletions src/armTemplates/resources/functionApp.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import { ArmResourceTemplateGenerator, ArmResourceTemplate } from "../../models/armTemplates";
import { ServerlessAzureConfig, FunctionAppConfig } from "../../models/serverless";
import { Utils } from "../../shared/utils";
import { ArmResourceTemplate, ArmResourceTemplateGenerator, ArmResourceType } from "../../models/armTemplates";
import { FunctionAppConfig, ServerlessAzureConfig } from "../../models/serverless";

export class FunctionAppResource implements ArmResourceTemplateGenerator {
public static getResourceName(config: ServerlessAzureConfig) {
const safeServiceName = config.service.replace(/\s/g, "-");

return config.provider.functionApp && config.provider.functionApp.name
? config.provider.functionApp.name
: `${config.provider.prefix}-${Utils.createShortAzureRegionName(config.provider.region)}-${Utils.createShortStageName(config.provider.stage)}-${safeServiceName}`;
public getArmResourceType(): ArmResourceType {
return ArmResourceType.FunctionApp;
}

public getTemplate(): ArmResourceTemplate {
Expand Down Expand Up @@ -107,13 +103,13 @@ export class FunctionAppResource implements ArmResourceTemplateGenerator {
};
}

public getParameters(config: ServerlessAzureConfig): any {
public getParameters(config: ServerlessAzureConfig, namer: (resource: ArmResourceType) => string): any {
const resourceConfig: FunctionAppConfig = {
...config.provider.functionApp,
};

return {
functionAppName: FunctionAppResource.getResourceName(config),
functionAppName: namer(this.getArmResourceType()),
functionAppNodeVersion: resourceConfig.nodeVersion,
functionAppWorkerRuntime: resourceConfig.workerRuntime,
functionAppExtensionVersion: resourceConfig.extensionVersion,
Expand Down
14 changes: 6 additions & 8 deletions src/armTemplates/resources/hostingEnvironment.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import { ArmResourceTemplateGenerator, ArmResourceTemplate } from "../../models/armTemplates";
import { ArmResourceTemplate, ArmResourceTemplateGenerator, ArmResourceType } from "../../models/armTemplates";
import { ServerlessAzureConfig } from "../../models/serverless";
import { Utils } from "../../shared/utils";

export class HostingEnvironmentResource implements ArmResourceTemplateGenerator {
public static getResourceName(config: ServerlessAzureConfig) {
return config.provider.hostingEnvironment && config.provider.hostingEnvironment.name
? config.provider.hostingEnvironment.name
: `${config.provider.prefix}-${Utils.createShortAzureRegionName(config.provider.region)}-${Utils.createShortStageName(config.provider.stage)}-ase`;

public getArmResourceType(): ArmResourceType {
return ArmResourceType.HostingEnvironment;
}

public getTemplate(): ArmResourceTemplate {
Expand Down Expand Up @@ -62,9 +60,9 @@ export class HostingEnvironmentResource implements ArmResourceTemplateGenerator
};
}

public getParameters(config: ServerlessAzureConfig): any {
public getParameters(config: ServerlessAzureConfig, namer: (resource: ArmResourceType) => string): any {
return {
hostingEnvironmentName: HostingEnvironmentResource.getResourceName(config)
hostingEnvironmentName: namer(this.getArmResourceType()),
}
}
}
Expand Down
154 changes: 0 additions & 154 deletions src/armTemplates/resources/storageAccount.test.ts

This file was deleted.

Loading