Browse Source

remove redundant state machines (#236)

davidfowl/build-earlier
Simon Cropp 7 years ago
committed by GitHub
parent
commit
dd726229f7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      src/Microsoft.Tye.Core/GenerateDockerfileStep.cs
  2. 10
      src/Microsoft.Tye.Core/GenerateHelmChartStep.cs
  3. 6
      src/Microsoft.Tye.Hosting/DockerRunner.cs
  4. 5
      src/Microsoft.Tye.Hosting/ProcessRunner.cs
  5. 4
      src/Microsoft.Tye.Hosting/ProxyService.cs
  6. 32
      src/Microsoft.Tye.Hosting/TyeDashboardApi.cs
  7. 4
      src/tye/Program.cs
  8. 6
      test/E2ETest/testassets/projects/multi-phase-dockerfile/Startup.cs
  9. 6
      test/E2ETest/testassets/projects/single-phase-dockerfile/Startup.cs

10
src/Microsoft.Tye.Core/GenerateDockerfileStep.cs

@ -13,16 +13,16 @@ namespace Microsoft.Tye
public bool Force { get; set; }
public override async Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service)
public override Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service)
{
if (SkipWithoutProject(output, service, out var project))
{
return;
return Task.CompletedTask;
}
if (SkipWithoutContainerInfo(output, service, out var container))
{
return;
return Task.CompletedTask;
}
if (container.UseMultiphaseDockerfile == false)
@ -40,8 +40,8 @@ namespace Microsoft.Tye
File.Delete(dockerFilePath);
await DockerfileGenerator.WriteDockerfileAsync(output, application, project, container, dockerFilePath);
output.WriteInfoLine($"Generated Dockerfile at '{dockerFilePath}'.");
output.WriteInfoLine($"Generating Dockerfile at '{dockerFilePath}'.");
return DockerfileGenerator.WriteDockerfileAsync(output, application, project, container, dockerFilePath);
}
}
}

10
src/Microsoft.Tye.Core/GenerateHelmChartStep.cs

@ -13,16 +13,16 @@ namespace Microsoft.Tye
public bool Force { get; set; }
public override async Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service)
public override Task ExecuteAsync(OutputContext output, ApplicationBuilder application, ServiceBuilder service)
{
if (SkipWithoutProject(output, service, out var project))
{
return;
return Task.CompletedTask;
}
if (SkipWithoutContainerInfo(output, service, out var container))
{
return;
return Task.CompletedTask;
}
var chartDirectory = Path.Combine(project.ProjectFile.DirectoryName, "charts");
@ -36,14 +36,14 @@ namespace Microsoft.Tye
}
var chart = new HelmChartStep();
await HelmChartGenerator.GenerateAsync(
output.WriteInfoLine($"Generating Helm Chart at '{Path.Combine(chartDirectory, chart.ChartName)}'.");
return HelmChartGenerator.GenerateAsync(
output,
application,
project,
container,
chart,
new DirectoryInfo(chartDirectory));
output.WriteInfoLine($"Generated Helm Chart at '{Path.Combine(chartDirectory, chart.ChartName)}'.");
}
}

6
src/Microsoft.Tye.Hosting/DockerRunner.cs

@ -359,14 +359,16 @@ namespace Microsoft.Tye.Hosting
}
}
private async Task StopContainerAsync(Service service)
private Task StopContainerAsync(Service service)
{
if (service.Items.TryGetValue(typeof(DockerInformation), out var value) && value is DockerInformation di)
{
di.StoppingTokenSource.Cancel();
await Task.WhenAll(di.Tasks);
return Task.WhenAll(di.Tasks);
}
return Task.CompletedTask;
}
private static string? GetUserSecretsPathFromSecrets()

5
src/Microsoft.Tye.Hosting/ProcessRunner.cs

@ -294,15 +294,16 @@ namespace Microsoft.Tye.Hosting
private Task KillRunningProcesses(IDictionary<string, Service> services)
{
static async Task KillProcessAsync(Service service)
static Task KillProcessAsync(Service service)
{
if (service.Items.TryGetValue(typeof(ProcessInfo), out var stateObj) && stateObj is ProcessInfo state)
{
// Cancel the token before stopping the process
state.StoppedTokenSource.Cancel();
await Task.WhenAll(state.Tasks);
return Task.WhenAll(state.Tasks);
}
return Task.CompletedTask;
}
var index = 0;

4
src/Microsoft.Tye.Hosting/ProxyService.cs

@ -29,7 +29,7 @@ namespace Microsoft.Tye.Hosting
_logger = logger;
}
public async Task StartAsync(Application application)
public Task StartAsync(Application application)
{
_host = new HostBuilder()
.ConfigureServer(server =>
@ -148,7 +148,7 @@ namespace Microsoft.Tye.Hosting
})
.Build();
await _host.StartAsync();
return _host.StartAsync();
}
public async Task StopAsync(Application application)

32
src/Microsoft.Tye.Hosting/TyeDashboardApi.cs

@ -56,7 +56,7 @@ namespace Microsoft.Tye.Hosting
_options);
}
private async Task Services(HttpContext context)
private Task Services(HttpContext context)
{
var app = context.RequestServices.GetRequiredService<Application>();
@ -70,10 +70,10 @@ namespace Microsoft.Tye.Hosting
list.Add(CreateServiceJson(service));
}
await JsonSerializer.SerializeAsync(context.Response.Body, list, _options);
return JsonSerializer.SerializeAsync(context.Response.Body, list, _options);
}
private async Task Service(HttpContext context)
private Task Service(HttpContext context)
{
var app = context.RequestServices.GetRequiredService<Application>();
@ -83,18 +83,16 @@ namespace Microsoft.Tye.Hosting
if (!app.Services.TryGetValue(name, out var service))
{
context.Response.StatusCode = 404;
await JsonSerializer.SerializeAsync(context.Response.Body, new
return JsonSerializer.SerializeAsync(context.Response.Body, new
{
message = $"Unknown service {name}"
},
_options);
return;
}
var serviceJson = CreateServiceJson(service);
await JsonSerializer.SerializeAsync(context.Response.Body, serviceJson, _options);
return JsonSerializer.SerializeAsync(context.Response.Body, serviceJson, _options);
}
private static V1Service CreateServiceJson(Model.Service service)
@ -211,7 +209,7 @@ namespace Microsoft.Tye.Hosting
return serviceJson;
}
private async Task Logs(HttpContext context)
private Task Logs(HttpContext context)
{
var app = context.RequestServices.GetRequiredService<Tye.Hosting.Model.Application>();
@ -221,19 +219,17 @@ namespace Microsoft.Tye.Hosting
if (!app.Services.TryGetValue(name, out var service))
{
context.Response.StatusCode = 404;
await JsonSerializer.SerializeAsync(context.Response.Body, new
return JsonSerializer.SerializeAsync(context.Response.Body, new
{
message = $"Unknown service {name}"
},
_options);
return;
}
await JsonSerializer.SerializeAsync(context.Response.Body, service.CachedLogs, _options);
return JsonSerializer.SerializeAsync(context.Response.Body, service.CachedLogs, _options);
}
private async Task AllMetrics(HttpContext context)
private Task AllMetrics(HttpContext context)
{
var app = context.RequestServices.GetRequiredService<Tye.Hosting.Model.Application>();
@ -258,10 +254,10 @@ namespace Microsoft.Tye.Hosting
sb.AppendLine();
}
await context.Response.WriteAsync(sb.ToString());
return context.Response.WriteAsync(sb.ToString());
}
private async Task Metrics(HttpContext context)
private Task Metrics(HttpContext context)
{
var app = context.RequestServices.GetRequiredService<Application>();
@ -273,13 +269,11 @@ namespace Microsoft.Tye.Hosting
if (!app.Services.TryGetValue(name, out var service))
{
context.Response.StatusCode = 404;
await JsonSerializer.SerializeAsync(context.Response.Body, new
return JsonSerializer.SerializeAsync(context.Response.Body, new
{
message = $"Unknown service {name}"
},
_options);
return;
}
foreach (var replica in service.Replicas)
@ -296,7 +290,7 @@ namespace Microsoft.Tye.Hosting
}
}
await context.Response.WriteAsync(sb.ToString());
return context.Response.WriteAsync(sb.ToString());
}
}
}

4
src/tye/Program.cs

@ -16,7 +16,7 @@ namespace Microsoft.Tye
{
static partial class Program
{
public static async Task<int> Main(string[] args)
public static Task<int> Main(string[] args)
{
var command = new RootCommand()
{
@ -47,7 +47,7 @@ namespace Microsoft.Tye
builder.UseExceptionHandler(HandleException);
var parser = builder.Build();
return await parser.InvokeAsync(args);
return parser.InvokeAsync(args);
}
private static void HandleException(Exception exception, InvocationContext context)

6
test/E2ETest/testassets/projects/multi-phase-dockerfile/Startup.cs

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@ -30,9 +30,9 @@ namespace multi_phase_dockerfile
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
endpoints.MapGet("/", context =>
{
await context.Response.WriteAsync("Hello World!");
return context.Response.WriteAsync("Hello World!");
});
});
}

6
test/E2ETest/testassets/projects/single-phase-dockerfile/Startup.cs

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@ -30,9 +30,9 @@ namespace single_phase_dockerfile
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
endpoints.MapGet("/", context =>
{
await context.Response.WriteAsync("Hello World!");
return context.Response.WriteAsync("Hello World!");
});
});
}

Loading…
Cancel
Save