Browse Source

Make ports go away (#255)

* Make ports go away
- Make AutoAssignPort true by default for binding and ingress. If a binding is defined auto assign the port. This will of course be ignored if there's a port defined.
- Don't auto assign a port if it's there's a connection string defined.
davidfowl/build-earlier
David Fowler 7 years ago
committed by GitHub
parent
commit
36b0c0e211
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/Microsoft.Tye.Core/ApplicationFactory.cs
  2. 1
      src/Microsoft.Tye.Core/BindingBuilder.cs
  3. 4
      src/Microsoft.Tye.Core/CombineStep.cs
  4. 1
      src/Microsoft.Tye.Core/ConfigModel/ConfigIngressBinding.cs
  5. 1
      src/Microsoft.Tye.Core/ConfigModel/ConfigServiceBinding.cs
  6. 1
      src/Microsoft.Tye.Core/IngressBindingBuilder.cs
  7. 3
      src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs
  8. 1
      src/Microsoft.Tye.Hosting/Model/ServiceBinding.cs
  9. 3
      src/Microsoft.Tye.Hosting/PortAssigner.cs
  10. 9
      src/Microsoft.Tye.Hosting/TyeDashboardApi.cs
  11. 6
      src/tye/ApplicationBuilderExtensions.cs

4
src/Microsoft.Tye.Core/ApplicationFactory.cs

@ -123,14 +123,12 @@ namespace Microsoft.Tye
// HTTP is the default binding // HTTP is the default binding
service.Bindings.Add(new BindingBuilder() service.Bindings.Add(new BindingBuilder()
{ {
AutoAssignPort = true,
Protocol = "http" Protocol = "http"
}); });
service.Bindings.Add(new BindingBuilder() service.Bindings.Add(new BindingBuilder()
{ {
Name = "https", Name = "https",
AutoAssignPort = true,
Protocol = "https" Protocol = "https"
}); });
} }
@ -141,7 +139,6 @@ namespace Microsoft.Tye
var binding = new BindingBuilder() var binding = new BindingBuilder()
{ {
Name = configBinding.Name, Name = configBinding.Name,
AutoAssignPort = configBinding.AutoAssignPort,
ConnectionString = configBinding.ConnectionString, ConnectionString = configBinding.ConnectionString,
Host = configBinding.Host, Host = configBinding.Host,
ContainerPort = configBinding.ContainerPort, ContainerPort = configBinding.ContainerPort,
@ -224,7 +221,6 @@ namespace Microsoft.Tye
{ {
var binding = new IngressBindingBuilder() var binding = new IngressBindingBuilder()
{ {
AutoAssignPort = configBinding.AutoAssignPort,
Name = configBinding.Name, Name = configBinding.Name,
Port = configBinding.Port, Port = configBinding.Port,
Protocol = configBinding.Protocol ?? "http", Protocol = configBinding.Protocol ?? "http",

1
src/Microsoft.Tye.Core/BindingBuilder.cs

@ -8,7 +8,6 @@ namespace Microsoft.Tye
{ {
public string? Name { get; set; } public string? Name { get; set; }
public string? ConnectionString { get; set; } public string? ConnectionString { get; set; }
public bool AutoAssignPort { get; set; }
public int? Port { get; set; } public int? Port { get; set; }
public int? ContainerPort { get; set; } public int? ContainerPort { get; set; }
public string? Host { get; set; } public string? Host { get; set; }

4
src/Microsoft.Tye.Core/CombineStep.cs

@ -29,7 +29,7 @@ namespace Microsoft.Tye
binding.Protocol = "http"; binding.Protocol = "http";
} }
if (binding.AutoAssignPort && binding.Port == null && binding.Protocol == "http") if (binding.Port == null && binding.Protocol == "http")
{ {
binding.Port = 80; binding.Port = 80;
} }
@ -87,7 +87,7 @@ namespace Microsoft.Tye
binding.Protocol = "http"; binding.Protocol = "http";
} }
if (binding.AutoAssignPort && binding.Port == null && binding.Protocol == "http") if (binding.Port == null && binding.Protocol == "http")
{ {
binding.Port = 80; binding.Port = 80;
} }

1
src/Microsoft.Tye.Core/ConfigModel/ConfigIngressBinding.cs

@ -7,7 +7,6 @@ namespace Microsoft.Tye.ConfigModel
public class ConfigIngressBinding public class ConfigIngressBinding
{ {
public string? Name { get; set; } public string? Name { get; set; }
public bool AutoAssignPort { get; set; }
public int? Port { get; set; } public int? Port { get; set; }
public string? Protocol { get; set; } // HTTP or HTTPS public string? Protocol { get; set; } // HTTP or HTTPS
} }

1
src/Microsoft.Tye.Core/ConfigModel/ConfigServiceBinding.cs

@ -8,7 +8,6 @@ namespace Microsoft.Tye.ConfigModel
{ {
public string? Name { get; set; } public string? Name { get; set; }
public string? ConnectionString { get; set; } public string? ConnectionString { get; set; }
public bool AutoAssignPort { get; set; }
public int? Port { get; set; } public int? Port { get; set; }
public int? ContainerPort { get; set; } public int? ContainerPort { get; set; }
public string? Host { get; set; } public string? Host { get; set; }

1
src/Microsoft.Tye.Core/IngressBindingBuilder.cs

@ -7,7 +7,6 @@ namespace Microsoft.Tye
public sealed class IngressBindingBuilder public sealed class IngressBindingBuilder
{ {
public string? Name { get; set; } public string? Name { get; set; }
public bool AutoAssignPort { get; set; }
public int? Port { get; set; } public int? Port { get; set; }
public string? Protocol { get; set; } // HTTP or HTTPS public string? Protocol { get; set; } // HTTP or HTTPS
} }

3
src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs

@ -44,7 +44,6 @@ namespace Microsoft.Tye.Extensions.Dapr
// Listen for grpc on an auto-assigned port // Listen for grpc on an auto-assigned port
var grpc = new BindingBuilder() var grpc = new BindingBuilder()
{ {
AutoAssignPort = true,
Name = "grpc", Name = "grpc",
Protocol = "https", Protocol = "https",
}; };
@ -53,7 +52,6 @@ namespace Microsoft.Tye.Extensions.Dapr
// Listen for http on an auto-assigned port // Listen for http on an auto-assigned port
var http = new BindingBuilder() var http = new BindingBuilder()
{ {
AutoAssignPort = true,
Name = "http", Name = "http",
Protocol = "http", Protocol = "http",
}; };
@ -62,7 +60,6 @@ namespace Microsoft.Tye.Extensions.Dapr
// Listen for metrics on an auto-assigned port // Listen for metrics on an auto-assigned port
var metrics = new BindingBuilder() var metrics = new BindingBuilder()
{ {
AutoAssignPort = true,
Name = "metrics", Name = "metrics",
Protocol = "http", Protocol = "http",
}; };

1
src/Microsoft.Tye.Hosting/Model/ServiceBinding.cs

@ -10,7 +10,6 @@ namespace Microsoft.Tye.Hosting.Model
{ {
public string? Name { get; set; } public string? Name { get; set; }
public string? ConnectionString { get; set; } public string? ConnectionString { get; set; }
public bool AutoAssignPort { get; set; }
public int? Port { get; set; } public int? Port { get; set; }
public int? ContainerPort { get; set; } public int? ContainerPort { get; set; }
public string? Host { get; set; } public string? Host { get; set; }

3
src/Microsoft.Tye.Hosting/PortAssigner.cs

@ -44,8 +44,9 @@ namespace Microsoft.Tye.Hosting
foreach (var binding in service.Description.Bindings) foreach (var binding in service.Description.Bindings)
{ {
if (binding.Port == null && !binding.AutoAssignPort) if (binding.ConnectionString != null)
{ {
// Skip if there is a port or if there is a connection string
continue; continue;
} }

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

@ -2,17 +2,17 @@
// The .NET Foundation licenses this file to you under the MIT license. // The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Tye.Hosting.Model;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System.Text.Json.Serialization; using Microsoft.Tye.Hosting.Model;
using System.Collections.Generic;
using Microsoft.Tye.Hosting.Model.V1; using Microsoft.Tye.Hosting.Model.V1;
namespace Microsoft.Tye.Hosting namespace Microsoft.Tye.Hosting
@ -95,7 +95,7 @@ namespace Microsoft.Tye.Hosting
return JsonSerializer.SerializeAsync(context.Response.Body, serviceJson, _options); return JsonSerializer.SerializeAsync(context.Response.Body, serviceJson, _options);
} }
private static V1Service CreateServiceJson(Model.Service service) private static V1Service CreateServiceJson(Service service)
{ {
var description = service.Description; var description = service.Description;
var bindings = description.Bindings; var bindings = description.Bindings;
@ -108,7 +108,6 @@ namespace Microsoft.Tye.Hosting
{ {
Name = binding.Name, Name = binding.Name,
ConnectionString = binding.ConnectionString, ConnectionString = binding.ConnectionString,
AutoAssignPort = binding.AutoAssignPort,
Port = binding.Port, Port = binding.Port,
ContainerPort = binding.ContainerPort, ContainerPort = binding.ContainerPort,
Host = binding.Host, Host = binding.Host,

6
src/tye/ApplicationBuilderExtensions.cs

@ -108,11 +108,10 @@ namespace Microsoft.Tye
foreach (var binding in service.Bindings) foreach (var binding in service.Bindings)
{ {
description.Bindings.Add(new Hosting.Model.ServiceBinding() description.Bindings.Add(new ServiceBinding()
{ {
ConnectionString = binding.ConnectionString, ConnectionString = binding.ConnectionString,
Host = binding.Host, Host = binding.Host,
AutoAssignPort = binding.AutoAssignPort,
ContainerPort = binding.ContainerPort, ContainerPort = binding.ContainerPort,
Name = binding.Name, Name = binding.Name,
Port = binding.Port, Port = binding.Port,
@ -142,9 +141,8 @@ namespace Microsoft.Tye
foreach (var binding in ingress.Bindings) foreach (var binding in ingress.Bindings)
{ {
description.Bindings.Add(new Hosting.Model.ServiceBinding() description.Bindings.Add(new ServiceBinding()
{ {
AutoAssignPort = binding.AutoAssignPort,
Name = binding.Name, Name = binding.Name,
Port = binding.Port, Port = binding.Port,
Protocol = binding.Protocol, Protocol = binding.Protocol,

Loading…
Cancel
Save