From 28eaee8864ab173d5146f115bd647cb55476f5bb Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 9 Mar 2021 09:55:25 +0300 Subject: [PATCH] Clear web from prometheus if not MVC UI for microservice solution resolves https://github.com/volosoft/volo/issues/5726 --- .../Steps/RemoveProjectFromPrometheusStep.cs | 54 +++++++++++++++++++ .../Steps/RemoveProjectFromTyeStep.cs | 4 +- .../Microservice/MicroserviceTemplateBase.cs | 3 ++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromPrometheusStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromPrometheusStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromPrometheusStep.cs new file mode 100644 index 0000000000..d2523fbc01 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromPrometheusStep.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RemoveProjectFromPrometheusStep : ProjectBuildPipelineStep + { + private readonly string _name; + + public RemoveProjectFromPrometheusStep(string name) + { + _name = name; + } + + public override void Execute(ProjectBuildContext context) + { + var tyeFile = context.Files.FirstOrDefault(f => f.Name == "/etc/prometheus/prometheus.yml"); + + if (tyeFile == null) + { + return; + } + + var lines = tyeFile.GetLines(); + var newLines = new List(); + + var nameLine = $"- job_name:"; + var isOneOfTargetLines = false; + + foreach (var line in lines) + { + if (line.Trim().Equals($"{nameLine} '{_name}'")) + { + isOneOfTargetLines = true; + continue; + } + + if (line.Trim().StartsWith(nameLine)) + { + isOneOfTargetLines = false; + } + + if (!isOneOfTargetLines) + { + newLines.Add(line); + } + } + + tyeFile.SetContent(String.Join(Environment.NewLine, newLines)); + } + + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromTyeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromTyeStep.cs index 1c51e22bc9..8c84acf9e9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromTyeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromTyeStep.cs @@ -30,13 +30,13 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps foreach (var line in lines) { - if (line.Equals($"{nameLine} {_name}")) + if (line.Trim().Equals($"{nameLine} {_name}")) { isOneOfTargetLines = true; continue; } - if (line.StartsWith(nameLine)) + if (line.Trim().StartsWith(nameLine)) { isOneOfTargetLines = false; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 1efbe09ff1..909c9841d9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -37,6 +37,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice "/applications/web/src/MyCompanyName.MyProjectName.Web")); steps.Add(new RemoveFolderStep("/applications/web")); steps.Add(new RemoveProjectFromTyeStep("web")); + steps.Add(new RemoveProjectFromPrometheusStep("web")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/applications/blazor/src/MyCompanyName.MyProjectName.Blazor")); @@ -51,6 +52,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice "/applications/web/src/MyCompanyName.MyProjectName.Web")); steps.Add(new RemoveFolderStep("/applications/web")); steps.Add(new RemoveProjectFromTyeStep("web")); + steps.Add(new RemoveProjectFromPrometheusStep("web")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/applications/blazor/src/MyCompanyName.MyProjectName.Blazor")); @@ -64,6 +66,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveFolderStep("/applications/web")); steps.Add(new RemoveFolderStep("/angular")); steps.Add(new RemoveProjectFromTyeStep("web")); + steps.Add(new RemoveProjectFromPrometheusStep("web")); break; case UiFramework.Mvc: