Skip to content

Commit cf5b7c0

Browse files
authored
updating design for sidecar (#486)
1 parent 7b52155 commit cf5b7c0

File tree

10 files changed

+90
-79
lines changed

10 files changed

+90
-79
lines changed

lib/ActionInputValidator/ActionValidators/SpnWebAppSiteContainersValidator.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
1111
Object.defineProperty(exports, "__esModule", { value: true });
1212
exports.SpnWebAppSiteContainersValidator = void 0;
1313
const Validations_1 = require("../Validations");
14-
class SpnWebAppSiteContainersValidator {
14+
const SpnLinuxWebAppValidator_1 = require("./SpnLinuxWebAppValidator");
15+
const actionparameters_1 = require("../../actionparameters");
16+
class SpnWebAppSiteContainersValidator extends SpnLinuxWebAppValidator_1.SpnLinuxWebAppValidator {
1517
validate() {
18+
const _super = Object.create(null, {
19+
validate: { get: () => super.validate }
20+
});
1621
return __awaiter(this, void 0, void 0, function* () {
22+
let actionParams = actionparameters_1.ActionParameters.getActionParams();
23+
if (!!actionParams.blessedAppSitecontainers) {
24+
yield _super.validate.call(this);
25+
}
1726
(0, Validations_1.validateSiteContainersInputs)();
1827
});
1928
}

lib/ActionInputValidator/ValidatorFactory.js

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,11 @@ class ValidatorFactory {
6868
let actionParams = actionparameters_1.ActionParameters.getActionParams();
6969
if (type === BaseWebAppDeploymentProvider_1.DEPLOYMENT_PROVIDER_TYPES.PUBLISHPROFILE) {
7070
if (!!actionParams.blessedAppSitecontainers || !!actionParams.siteContainers) {
71-
return [new PublishProfileWebAppSiteContainersValidator_1.PublishProfileWebAppSiteContainersValidator()];
71+
return new PublishProfileWebAppSiteContainersValidator_1.PublishProfileWebAppSiteContainersValidator();
7272
}
7373
else if (!!actionParams.images) {
7474
yield this.setResourceDetails(actionParams);
75-
return [new PublishProfileContainerWebAppValidator_1.PublishProfileContainerWebAppValidator()];
75+
return new PublishProfileContainerWebAppValidator_1.PublishProfileContainerWebAppValidator();
7676
}
7777
else {
7878
try {
@@ -81,7 +81,7 @@ class ValidatorFactory {
8181
catch (error) {
8282
core.warning(`Failed to set resource details: ${error.message}`);
8383
}
84-
return [new PublishProfileWebAppValidator_1.PublishProfileWebAppValidator()];
84+
return new PublishProfileWebAppValidator_1.PublishProfileWebAppValidator();
8585
}
8686
}
8787
else if (type == BaseWebAppDeploymentProvider_1.DEPLOYMENT_PROVIDER_TYPES.SPN) {
@@ -90,24 +90,22 @@ class ValidatorFactory {
9090
yield this.getResourceDetails(actionParams);
9191
if (!!actionParams.isLinux) {
9292
if (!!actionParams.siteContainers) {
93-
if (yield this.isBlessedSitecontainerApp(actionParams)) {
94-
return [new SpnLinuxWebAppValidator_1.SpnLinuxWebAppValidator(), new SpnWebAppSiteContainersValidator_1.SpnWebAppSiteContainersValidator()];
95-
}
96-
return [new SpnWebAppSiteContainersValidator_1.SpnWebAppSiteContainersValidator()];
93+
yield this.setBlessedSitecontainerApp(actionParams);
94+
return new SpnWebAppSiteContainersValidator_1.SpnWebAppSiteContainersValidator();
9795
}
9896
else if (!!actionParams.images || !!actionParams.multiContainerConfigFile) {
99-
return [new SpnLinuxContainerWebAppValidator_1.SpnLinuxContainerWebAppValidator()];
97+
return new SpnLinuxContainerWebAppValidator_1.SpnLinuxContainerWebAppValidator();
10098
}
10199
else {
102-
return [new SpnLinuxWebAppValidator_1.SpnLinuxWebAppValidator()];
100+
return new SpnLinuxWebAppValidator_1.SpnLinuxWebAppValidator();
103101
}
104102
}
105103
else {
106104
if (!!actionParams.images) {
107-
return [new SpnWindowsContainerWebAppValidator_1.SpnWindowsContainerWebAppValidator()];
105+
return new SpnWindowsContainerWebAppValidator_1.SpnWindowsContainerWebAppValidator();
108106
}
109107
else {
110-
return [new SpnWindowsWebAppValidator_1.SpnWindowsWebAppValidator()];
108+
return new SpnWindowsWebAppValidator_1.SpnWindowsWebAppValidator();
111109
}
112110
}
113111
}
@@ -133,7 +131,7 @@ class ValidatorFactory {
133131
actionParams.isLinux = appOS.includes(RuntimeConstants_1.default.Unix) || appOS.includes(RuntimeConstants_1.default.Unix.toLowerCase());
134132
});
135133
}
136-
static isBlessedSitecontainerApp(actionParams) {
134+
static setBlessedSitecontainerApp(actionParams) {
137135
return __awaiter(this, void 0, void 0, function* () {
138136
var _a;
139137
const appService = new azure_app_service_1.AzureAppService(actionParams.endpoint, actionParams.resourceGroupName, actionParams.appName, actionParams.slotName);
@@ -143,7 +141,7 @@ class ValidatorFactory {
143141
actionParams.blessedAppSitecontainers = (!linuxFxVersion.startsWith("DOCKER|")
144142
&& !linuxFxVersion.startsWith("COMPOSE|")
145143
&& linuxFxVersion !== "SITECONTAINERS");
146-
return actionParams.blessedAppSitecontainers;
144+
core.debug(`Is blessed app sitecontainers: ${actionParams.blessedAppSitecontainers}`);
147145
});
148146
}
149147
}

lib/DeploymentProvider/DeploymentProviderFactory.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,21 @@ class DeploymentProviderFactory {
1111
static getDeploymentProvider(type) {
1212
if (type === BaseWebAppDeploymentProvider_1.DEPLOYMENT_PROVIDER_TYPES.PUBLISHPROFILE) {
1313
if (!!actionparameters_1.ActionParameters.getActionParams().images) {
14-
return [new PublishProfileWebAppContainerDeploymentProvider_1.PublishProfileWebAppContainerDeploymentProvider(type)];
14+
return new PublishProfileWebAppContainerDeploymentProvider_1.PublishProfileWebAppContainerDeploymentProvider(type);
1515
}
1616
else {
17-
return [new WebAppDeploymentProvider_1.WebAppDeploymentProvider(type)];
17+
return new WebAppDeploymentProvider_1.WebAppDeploymentProvider(type);
1818
}
1919
}
2020
else if (type == BaseWebAppDeploymentProvider_1.DEPLOYMENT_PROVIDER_TYPES.SPN) {
21-
if (!!actionparameters_1.ActionParameters.getActionParams().blessedAppSitecontainers) {
22-
return [new WebAppDeploymentProvider_1.WebAppDeploymentProvider(type), new WebAppSiteContainersDeploymentProvider_1.WebAppSiteContainersDeploymentProvider(type)];
23-
}
24-
else if (!!actionparameters_1.ActionParameters.getActionParams().siteContainers) {
25-
return [new WebAppSiteContainersDeploymentProvider_1.WebAppSiteContainersDeploymentProvider(type)];
21+
if (!!actionparameters_1.ActionParameters.getActionParams().blessedAppSitecontainers || !!actionparameters_1.ActionParameters.getActionParams().siteContainers) {
22+
return new WebAppSiteContainersDeploymentProvider_1.WebAppSiteContainersDeploymentProvider(type);
2623
}
2724
else if (!!actionparameters_1.ActionParameters.getActionParams().images || (!!actionparameters_1.ActionParameters.getActionParams().isLinux && !!actionparameters_1.ActionParameters.getActionParams().multiContainerConfigFile)) {
28-
return [new WebAppContainerDeployment_1.WebAppContainerDeploymentProvider(type)];
25+
return new WebAppContainerDeployment_1.WebAppContainerDeploymentProvider(type);
2926
}
3027
else {
31-
return [new WebAppDeploymentProvider_1.WebAppDeploymentProvider(type)];
28+
return new WebAppDeploymentProvider_1.WebAppDeploymentProvider(type);
3229
}
3330
}
3431
else {

lib/DeploymentProvider/Providers/WebAppSiteContainersDeploymentProvider.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
4343
};
4444
Object.defineProperty(exports, "__esModule", { value: true });
4545
exports.WebAppSiteContainersDeploymentProvider = void 0;
46-
const BaseWebAppDeploymentProvider_1 = require("./BaseWebAppDeploymentProvider");
4746
const SiteContainerDeploymentUtility_1 = require("azure-actions-appservice-rest/Utilities/SiteContainerDeploymentUtility");
4847
const core = __importStar(require("@actions/core"));
49-
class WebAppSiteContainersDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebAppDeploymentProvider {
48+
const WebAppDeploymentProvider_1 = require("./WebAppDeploymentProvider");
49+
class WebAppSiteContainersDeploymentProvider extends WebAppDeploymentProvider_1.WebAppDeploymentProvider {
5050
DeployWebAppStep() {
51+
const _super = Object.create(null, {
52+
DeployWebAppStep: { get: () => super.DeployWebAppStep }
53+
});
5154
return __awaiter(this, void 0, void 0, function* () {
55+
if (!!this.actionParams.blessedAppSitecontainers) {
56+
core.info("Blessed site containers detected, using WebAppDeploymentProvider for deployment.");
57+
yield _super.DeployWebAppStep.call(this);
58+
}
5259
let siteContainerDeploymentUtility = new SiteContainerDeploymentUtility_1.SiteContainerDeploymentUtility(this.appService);
5360
let siteContainers = this.actionParams.siteContainers;
5461
core.info("Updating site containers");

lib/main.js

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,13 @@ function main() {
7171
type = BaseWebAppDeploymentProvider_1.DEPLOYMENT_PROVIDER_TYPES.PUBLISHPROFILE;
7272
}
7373
// Validate action inputs
74-
let validators = yield ValidatorFactory_1.ValidatorFactory.getValidator(type);
75-
for (const validator of validators) {
76-
yield validator.validate();
77-
}
78-
var deploymentProviders = DeploymentProviderFactory_1.DeploymentProviderFactory.getDeploymentProvider(type);
79-
for (const provider of deploymentProviders) {
80-
core.info("Predeployment Step Started");
81-
yield provider.PreDeploymentStep();
82-
core.info("Deployment Step Started");
83-
yield provider.DeployWebAppStep();
84-
}
74+
let validator = yield ValidatorFactory_1.ValidatorFactory.getValidator(type);
75+
yield validator.validate();
76+
var deploymentProvider = DeploymentProviderFactory_1.DeploymentProviderFactory.getDeploymentProvider(type);
77+
core.info("Predeployment Step Started");
78+
yield deploymentProvider.PreDeploymentStep();
79+
core.info("Deployment Step Started");
80+
yield deploymentProvider.DeployWebAppStep();
8581
}
8682
catch (error) {
8783
isDeploymentSuccess = false;
@@ -95,8 +91,8 @@ function main() {
9591
}
9692
}
9793
finally {
98-
if (deploymentProviders != null) {
99-
yield deploymentProviders[0].UpdateDeploymentStatus(isDeploymentSuccess);
94+
if (deploymentProvider != null) {
95+
yield deploymentProvider.UpdateDeploymentStatus(isDeploymentSuccess);
10096
}
10197
// Reset AZURE_HTTP_USER_AGENT
10298
core.exportVariable('AZURE_HTTP_USER_AGENT', prefix);
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
import { validateSiteContainersInputs } from "../Validations";
2+
23
import { IValidator } from "./IValidator";
4+
import { SpnLinuxWebAppValidator } from "./SpnLinuxWebAppValidator";
5+
import { ActionParameters } from "../../actionparameters";
36

4-
export class SpnWebAppSiteContainersValidator implements IValidator {
7+
export class SpnWebAppSiteContainersValidator extends SpnLinuxWebAppValidator {
58
async validate(): Promise<void> {
9+
10+
let actionParams: ActionParameters = ActionParameters.getActionParams();
11+
if (!!actionParams.blessedAppSitecontainers) {
12+
await super.validate();
13+
}
614

715
validateSiteContainersInputs();
8-
916
}
1017
}

src/ActionInputValidator/ValidatorFactory.ts

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ import { PublishProfileWebAppSiteContainersValidator } from "./ActionValidators/
1818
import { AzureAppService } from "azure-actions-appservice-rest/Arm/azure-app-service";
1919

2020
export class ValidatorFactory {
21-
public static async getValidator(type: DEPLOYMENT_PROVIDER_TYPES) : Promise<IValidator[]> {
21+
public static async getValidator(type: DEPLOYMENT_PROVIDER_TYPES) : Promise<IValidator> {
2222
let actionParams: ActionParameters = ActionParameters.getActionParams();
2323
if(type === DEPLOYMENT_PROVIDER_TYPES.PUBLISHPROFILE) {
2424
if (!!actionParams.blessedAppSitecontainers || !!actionParams.siteContainers) {
25-
return [new PublishProfileWebAppSiteContainersValidator()];
25+
return new PublishProfileWebAppSiteContainersValidator();
2626
}
2727
else if (!!actionParams.images) {
2828
await this.setResourceDetails(actionParams);
29-
return [new PublishProfileContainerWebAppValidator()];
29+
return new PublishProfileContainerWebAppValidator();
3030
}
3131
else {
3232
try {
@@ -35,7 +35,7 @@ export class ValidatorFactory {
3535
catch (error) {
3636
core.warning(`Failed to set resource details: ${error.message}`);
3737
}
38-
return [new PublishProfileWebAppValidator()];
38+
return new PublishProfileWebAppValidator();
3939
}
4040
}
4141
else if(type == DEPLOYMENT_PROVIDER_TYPES.SPN) {
@@ -44,25 +44,22 @@ export class ValidatorFactory {
4444
await this.getResourceDetails(actionParams);
4545
if (!!actionParams.isLinux) {
4646
if (!!actionParams.siteContainers) {
47-
if (await this.isBlessedSitecontainerApp(actionParams)) {
48-
return [new SpnLinuxWebAppValidator(), new SpnWebAppSiteContainersValidator()];
49-
}
50-
51-
return [new SpnWebAppSiteContainersValidator()];
47+
await this.setBlessedSitecontainerApp(actionParams);
48+
return new SpnWebAppSiteContainersValidator();
5249
}
5350
else if (!!actionParams.images || !!actionParams.multiContainerConfigFile) {
54-
return [new SpnLinuxContainerWebAppValidator()];
51+
return new SpnLinuxContainerWebAppValidator();
5552
}
5653
else {
57-
return [new SpnLinuxWebAppValidator()];
54+
return new SpnLinuxWebAppValidator();
5855
}
5956
}
6057
else {
6158
if (!!actionParams.images) {
62-
return [new SpnWindowsContainerWebAppValidator()];
59+
return new SpnWindowsContainerWebAppValidator();
6360
}
6461
else {
65-
return [new SpnWindowsWebAppValidator()];
62+
return new SpnWindowsWebAppValidator();
6663
}
6764
}
6865
}
@@ -86,7 +83,7 @@ export class ValidatorFactory {
8683
actionParams.isLinux = appOS.includes(RuntimeConstants.Unix) || appOS.includes(RuntimeConstants.Unix.toLowerCase());
8784
}
8885

89-
private static async isBlessedSitecontainerApp(actionParams: ActionParameters): Promise<boolean> {
86+
private static async setBlessedSitecontainerApp(actionParams: ActionParameters): Promise<void> {
9087
const appService = new AzureAppService(actionParams.endpoint, actionParams.resourceGroupName, actionParams.appName, actionParams.slotName);
9188

9289
let config = await appService.getConfiguration();
@@ -98,6 +95,6 @@ export class ValidatorFactory {
9895
&& !linuxFxVersion.startsWith("COMPOSE|")
9996
&& linuxFxVersion !== "SITECONTAINERS");
10097

101-
return actionParams.blessedAppSitecontainers;
98+
core.debug(`Is blessed app sitecontainers: ${actionParams.blessedAppSitecontainers}`);
10299
}
103100
}

src/DeploymentProvider/DeploymentProviderFactory.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,24 @@ import { WebAppSiteContainersDeploymentProvider } from "./Providers/WebAppSiteCo
99

1010
export class DeploymentProviderFactory {
1111

12-
public static getDeploymentProvider(type: DEPLOYMENT_PROVIDER_TYPES) : IWebAppDeploymentProvider[] {
12+
public static getDeploymentProvider(type: DEPLOYMENT_PROVIDER_TYPES) : IWebAppDeploymentProvider {
1313
if(type === DEPLOYMENT_PROVIDER_TYPES.PUBLISHPROFILE) {
1414
if (!!ActionParameters.getActionParams().images) {
15-
return [new PublishProfileWebAppContainerDeploymentProvider(type)];
15+
return new PublishProfileWebAppContainerDeploymentProvider(type);
1616
}
1717
else {
18-
return [new WebAppDeploymentProvider(type)];
18+
return new WebAppDeploymentProvider(type);
1919
}
2020
}
2121
else if(type == DEPLOYMENT_PROVIDER_TYPES.SPN) {
22-
if (!!ActionParameters.getActionParams().blessedAppSitecontainers) {
23-
return [new WebAppDeploymentProvider(type), new WebAppSiteContainersDeploymentProvider(type)];
24-
}
25-
else if (!!ActionParameters.getActionParams().siteContainers) {
26-
return [new WebAppSiteContainersDeploymentProvider(type)];
22+
if (!!ActionParameters.getActionParams().blessedAppSitecontainers || !!ActionParameters.getActionParams().siteContainers) {
23+
return new WebAppSiteContainersDeploymentProvider(type);
2724
}
2825
else if(!!ActionParameters.getActionParams().images || (!!ActionParameters.getActionParams().isLinux && !!ActionParameters.getActionParams().multiContainerConfigFile)) {
29-
return [new WebAppContainerDeploymentProvider(type)];
26+
return new WebAppContainerDeploymentProvider(type);
3027
}
3128
else {
32-
return [new WebAppDeploymentProvider(type)];
29+
return new WebAppDeploymentProvider(type);
3330
}
3431
}
3532
else {

src/DeploymentProvider/Providers/WebAppSiteContainersDeploymentProvider.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
import { BaseWebAppDeploymentProvider } from './BaseWebAppDeploymentProvider';
22
import { SiteContainerDeploymentUtility } from 'azure-actions-appservice-rest/Utilities/SiteContainerDeploymentUtility';
33
import * as core from '@actions/core';
4+
import { WebAppDeploymentProvider } from './WebAppDeploymentProvider';
45

5-
export class WebAppSiteContainersDeploymentProvider extends BaseWebAppDeploymentProvider {
6+
export class WebAppSiteContainersDeploymentProvider extends WebAppDeploymentProvider {
67
public async DeployWebAppStep() {
8+
9+
if(!!this.actionParams.blessedAppSitecontainers){
10+
core.info("Blessed site containers detected, using WebAppDeploymentProvider for deployment.");
11+
await super.DeployWebAppStep();
12+
}
13+
714
let siteContainerDeploymentUtility = new SiteContainerDeploymentUtility(this.appService);
815
let siteContainers = this.actionParams.siteContainers;
916

0 commit comments

Comments
 (0)