From 36b0c0e2113a52a2ec4eb1ab8d0c300dadc1cc13 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Mon, 30 Mar 2020 16:50:56 -0700 Subject: [PATCH] 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. --- src/Microsoft.Tye.Core/ApplicationFactory.cs | 4 ---- src/Microsoft.Tye.Core/BindingBuilder.cs | 1 - src/Microsoft.Tye.Core/CombineStep.cs | 4 ++-- .../ConfigModel/ConfigIngressBinding.cs | 1 - .../ConfigModel/ConfigServiceBinding.cs | 1 - src/Microsoft.Tye.Core/IngressBindingBuilder.cs | 1 - src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs | 3 --- src/Microsoft.Tye.Hosting/Model/ServiceBinding.cs | 1 - src/Microsoft.Tye.Hosting/PortAssigner.cs | 3 ++- src/Microsoft.Tye.Hosting/TyeDashboardApi.cs | 9 ++++----- src/tye/ApplicationBuilderExtensions.cs | 6 ++---- 11 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/Microsoft.Tye.Core/ApplicationFactory.cs b/src/Microsoft.Tye.Core/ApplicationFactory.cs index f4fef4df..053ed4f3 100644 --- a/src/Microsoft.Tye.Core/ApplicationFactory.cs +++ b/src/Microsoft.Tye.Core/ApplicationFactory.cs @@ -123,14 +123,12 @@ namespace Microsoft.Tye // HTTP is the default binding service.Bindings.Add(new BindingBuilder() { - AutoAssignPort = true, Protocol = "http" }); service.Bindings.Add(new BindingBuilder() { Name = "https", - AutoAssignPort = true, Protocol = "https" }); } @@ -141,7 +139,6 @@ namespace Microsoft.Tye var binding = new BindingBuilder() { Name = configBinding.Name, - AutoAssignPort = configBinding.AutoAssignPort, ConnectionString = configBinding.ConnectionString, Host = configBinding.Host, ContainerPort = configBinding.ContainerPort, @@ -224,7 +221,6 @@ namespace Microsoft.Tye { var binding = new IngressBindingBuilder() { - AutoAssignPort = configBinding.AutoAssignPort, Name = configBinding.Name, Port = configBinding.Port, Protocol = configBinding.Protocol ?? "http", diff --git a/src/Microsoft.Tye.Core/BindingBuilder.cs b/src/Microsoft.Tye.Core/BindingBuilder.cs index 8e8b6307..8e795075 100644 --- a/src/Microsoft.Tye.Core/BindingBuilder.cs +++ b/src/Microsoft.Tye.Core/BindingBuilder.cs @@ -8,7 +8,6 @@ namespace Microsoft.Tye { public string? Name { get; set; } public string? ConnectionString { get; set; } - public bool AutoAssignPort { get; set; } public int? Port { get; set; } public int? ContainerPort { get; set; } public string? Host { get; set; } diff --git a/src/Microsoft.Tye.Core/CombineStep.cs b/src/Microsoft.Tye.Core/CombineStep.cs index de749a58..2fb8bd33 100644 --- a/src/Microsoft.Tye.Core/CombineStep.cs +++ b/src/Microsoft.Tye.Core/CombineStep.cs @@ -29,7 +29,7 @@ namespace Microsoft.Tye binding.Protocol = "http"; } - if (binding.AutoAssignPort && binding.Port == null && binding.Protocol == "http") + if (binding.Port == null && binding.Protocol == "http") { binding.Port = 80; } @@ -87,7 +87,7 @@ namespace Microsoft.Tye binding.Protocol = "http"; } - if (binding.AutoAssignPort && binding.Port == null && binding.Protocol == "http") + if (binding.Port == null && binding.Protocol == "http") { binding.Port = 80; } diff --git a/src/Microsoft.Tye.Core/ConfigModel/ConfigIngressBinding.cs b/src/Microsoft.Tye.Core/ConfigModel/ConfigIngressBinding.cs index 81f5fb4a..b5fe74bb 100644 --- a/src/Microsoft.Tye.Core/ConfigModel/ConfigIngressBinding.cs +++ b/src/Microsoft.Tye.Core/ConfigModel/ConfigIngressBinding.cs @@ -7,7 +7,6 @@ namespace Microsoft.Tye.ConfigModel public class ConfigIngressBinding { public string? Name { get; set; } - public bool AutoAssignPort { get; set; } public int? Port { get; set; } public string? Protocol { get; set; } // HTTP or HTTPS } diff --git a/src/Microsoft.Tye.Core/ConfigModel/ConfigServiceBinding.cs b/src/Microsoft.Tye.Core/ConfigModel/ConfigServiceBinding.cs index 9d229f09..5d6f9bd2 100644 --- a/src/Microsoft.Tye.Core/ConfigModel/ConfigServiceBinding.cs +++ b/src/Microsoft.Tye.Core/ConfigModel/ConfigServiceBinding.cs @@ -8,7 +8,6 @@ namespace Microsoft.Tye.ConfigModel { public string? Name { get; set; } public string? ConnectionString { get; set; } - public bool AutoAssignPort { get; set; } public int? Port { get; set; } public int? ContainerPort { get; set; } public string? Host { get; set; } diff --git a/src/Microsoft.Tye.Core/IngressBindingBuilder.cs b/src/Microsoft.Tye.Core/IngressBindingBuilder.cs index d5082087..8a3e1cb6 100644 --- a/src/Microsoft.Tye.Core/IngressBindingBuilder.cs +++ b/src/Microsoft.Tye.Core/IngressBindingBuilder.cs @@ -7,7 +7,6 @@ namespace Microsoft.Tye public sealed class IngressBindingBuilder { public string? Name { get; set; } - public bool AutoAssignPort { get; set; } public int? Port { get; set; } public string? Protocol { get; set; } // HTTP or HTTPS } diff --git a/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs b/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs index e3b92110..c7c58539 100644 --- a/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs +++ b/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs @@ -44,7 +44,6 @@ namespace Microsoft.Tye.Extensions.Dapr // Listen for grpc on an auto-assigned port var grpc = new BindingBuilder() { - AutoAssignPort = true, Name = "grpc", Protocol = "https", }; @@ -53,7 +52,6 @@ namespace Microsoft.Tye.Extensions.Dapr // Listen for http on an auto-assigned port var http = new BindingBuilder() { - AutoAssignPort = true, Name = "http", Protocol = "http", }; @@ -62,7 +60,6 @@ namespace Microsoft.Tye.Extensions.Dapr // Listen for metrics on an auto-assigned port var metrics = new BindingBuilder() { - AutoAssignPort = true, Name = "metrics", Protocol = "http", }; diff --git a/src/Microsoft.Tye.Hosting/Model/ServiceBinding.cs b/src/Microsoft.Tye.Hosting/Model/ServiceBinding.cs index bda01fd3..ac08ea03 100644 --- a/src/Microsoft.Tye.Hosting/Model/ServiceBinding.cs +++ b/src/Microsoft.Tye.Hosting/Model/ServiceBinding.cs @@ -10,7 +10,6 @@ namespace Microsoft.Tye.Hosting.Model { public string? Name { get; set; } public string? ConnectionString { get; set; } - public bool AutoAssignPort { get; set; } public int? Port { get; set; } public int? ContainerPort { get; set; } public string? Host { get; set; } diff --git a/src/Microsoft.Tye.Hosting/PortAssigner.cs b/src/Microsoft.Tye.Hosting/PortAssigner.cs index 9dbda6ca..a16e85bb 100644 --- a/src/Microsoft.Tye.Hosting/PortAssigner.cs +++ b/src/Microsoft.Tye.Hosting/PortAssigner.cs @@ -44,8 +44,9 @@ namespace Microsoft.Tye.Hosting 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; } diff --git a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs index 5266c9ab..84c66651 100644 --- a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs +++ b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs @@ -2,17 +2,17 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; +using System.Text.Json.Serialization; using System.Threading.Tasks; -using Microsoft.Tye.Hosting.Model; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; -using System.Text.Json.Serialization; -using System.Collections.Generic; +using Microsoft.Tye.Hosting.Model; using Microsoft.Tye.Hosting.Model.V1; namespace Microsoft.Tye.Hosting @@ -95,7 +95,7 @@ namespace Microsoft.Tye.Hosting 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 bindings = description.Bindings; @@ -108,7 +108,6 @@ namespace Microsoft.Tye.Hosting { Name = binding.Name, ConnectionString = binding.ConnectionString, - AutoAssignPort = binding.AutoAssignPort, Port = binding.Port, ContainerPort = binding.ContainerPort, Host = binding.Host, diff --git a/src/tye/ApplicationBuilderExtensions.cs b/src/tye/ApplicationBuilderExtensions.cs index 678fd752..8201d276 100644 --- a/src/tye/ApplicationBuilderExtensions.cs +++ b/src/tye/ApplicationBuilderExtensions.cs @@ -108,11 +108,10 @@ namespace Microsoft.Tye foreach (var binding in service.Bindings) { - description.Bindings.Add(new Hosting.Model.ServiceBinding() + description.Bindings.Add(new ServiceBinding() { ConnectionString = binding.ConnectionString, Host = binding.Host, - AutoAssignPort = binding.AutoAssignPort, ContainerPort = binding.ContainerPort, Name = binding.Name, Port = binding.Port, @@ -142,9 +141,8 @@ namespace Microsoft.Tye foreach (var binding in ingress.Bindings) { - description.Bindings.Add(new Hosting.Model.ServiceBinding() + description.Bindings.Add(new ServiceBinding() { - AutoAssignPort = binding.AutoAssignPort, Name = binding.Name, Port = binding.Port, Protocol = binding.Protocol,