diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 3d55c2da..47caa67d 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -3,25 +3,25 @@
-
+
https://github.com/dotnet/arcade
- b03966cd85285e425ffe56003c0ab57e103dd14e
+ 89806f0b9e93ad2bbe32c654412835c0801a2032
-
+
https://github.com/dotnet/arcade
- b03966cd85285e425ffe56003c0ab57e103dd14e
+ 89806f0b9e93ad2bbe32c654412835c0801a2032
-
+
https://github.com/dotnet/arcade
- b03966cd85285e425ffe56003c0ab57e103dd14e
+ 89806f0b9e93ad2bbe32c654412835c0801a2032
-
+
https://github.com/dotnet/arcade
- b03966cd85285e425ffe56003c0ab57e103dd14e
+ 89806f0b9e93ad2bbe32c654412835c0801a2032
-
+
https://github.com/dotnet/arcade
- b03966cd85285e425ffe56003c0ab57e103dd14e
+ 89806f0b9e93ad2bbe32c654412835c0801a2032
https://github.com/dotnet/arcade-services
diff --git a/global.json b/global.json
index 99b9d011..9e1dfefa 100644
--- a/global.json
+++ b/global.json
@@ -11,6 +11,6 @@
}
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.21366.1"
+ "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.21370.12"
}
}
diff --git a/src/Microsoft.Tye.Core/ApplicationFactory.cs b/src/Microsoft.Tye.Core/ApplicationFactory.cs
index a8120be5..b20aa3ea 100644
--- a/src/Microsoft.Tye.Core/ApplicationFactory.cs
+++ b/src/Microsoft.Tye.Core/ApplicationFactory.cs
@@ -165,7 +165,7 @@ namespace Microsoft.Tye
if (!string.IsNullOrEmpty(configService.Project))
{
// TODO: Investigate possible null.
- var project = new DotnetProjectServiceBuilder(configService.Name!, new FileInfo(configService.ProjectFullPath!));
+ var project = new DotnetProjectServiceBuilder(configService.Name!, new FileInfo(configService.ProjectFullPath!), ServiceSource.Configuration);
service = project;
project.Build = configService.Build ?? true;
@@ -196,7 +196,7 @@ namespace Microsoft.Tye
}
else if (!string.IsNullOrEmpty(configService.Image))
{
- var container = new ContainerServiceBuilder(configService.Name!, configService.Image!)
+ var container = new ContainerServiceBuilder(configService.Name!, configService.Image!, ServiceSource.Configuration)
{
Args = configService.Args,
Replicas = configService.Replicas ?? 1
@@ -208,7 +208,7 @@ namespace Microsoft.Tye
}
else if (!string.IsNullOrEmpty(configService.DockerFile))
{
- var dockerFile = new DockerFileServiceBuilder(configService.Name!, configService.Image!)
+ var dockerFile = new DockerFileServiceBuilder(configService.Name!, configService.Image!, ServiceSource.Configuration)
{
Args = configService.Args,
Build = configService.Build ?? true,
@@ -242,7 +242,7 @@ namespace Microsoft.Tye
workingDirectory = Path.GetDirectoryName(expandedExecutable)!;
}
- var executable = new ExecutableServiceBuilder(configService.Name!, expandedExecutable)
+ var executable = new ExecutableServiceBuilder(configService.Name!, expandedExecutable, ServiceSource.Configuration)
{
Args = configService.Args,
WorkingDirectory = configService.WorkingDirectory != null ?
@@ -311,7 +311,8 @@ namespace Microsoft.Tye
var functionBuilder = new AzureFunctionServiceBuilder(
configService.Name,
- azureFunctionDirectory)
+ azureFunctionDirectory,
+ ServiceSource.Configuration)
{
Args = configService.Args,
Replicas = configService.Replicas ?? 1,
@@ -333,7 +334,7 @@ namespace Microsoft.Tye
}
else if (configService.External)
{
- var external = new ExternalServiceBuilder(configService.Name);
+ var external = new ExternalServiceBuilder(configService.Name, ServiceSource.Configuration);
service = external;
}
else
diff --git a/src/Microsoft.Tye.Core/AzureFunctionServiceBuilder.cs b/src/Microsoft.Tye.Core/AzureFunctionServiceBuilder.cs
index ff315929..48487793 100644
--- a/src/Microsoft.Tye.Core/AzureFunctionServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/AzureFunctionServiceBuilder.cs
@@ -6,8 +6,8 @@ namespace Microsoft.Tye
{
public class AzureFunctionServiceBuilder : ServiceBuilder
{
- public AzureFunctionServiceBuilder(string name, string path)
- : base(name)
+ public AzureFunctionServiceBuilder(string name, string path, ServiceSource source)
+ : base(name, source)
{
FunctionPath = path;
}
diff --git a/src/Microsoft.Tye.Core/ContainerServiceBuilder.cs b/src/Microsoft.Tye.Core/ContainerServiceBuilder.cs
index a28c0be8..ae47d50a 100644
--- a/src/Microsoft.Tye.Core/ContainerServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/ContainerServiceBuilder.cs
@@ -8,8 +8,8 @@ namespace Microsoft.Tye
{
public sealed class ContainerServiceBuilder : ServiceBuilder
{
- public ContainerServiceBuilder(string name, string image)
- : base(name)
+ public ContainerServiceBuilder(string name, string image, ServiceSource source)
+ : base(name, source)
{
Image = image;
}
diff --git a/src/Microsoft.Tye.Core/DockerFileServiceBuilder.cs b/src/Microsoft.Tye.Core/DockerFileServiceBuilder.cs
index 07f5e255..7cfee824 100644
--- a/src/Microsoft.Tye.Core/DockerFileServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/DockerFileServiceBuilder.cs
@@ -8,8 +8,8 @@ namespace Microsoft.Tye
{
public class DockerFileServiceBuilder : ProjectServiceBuilder
{
- public DockerFileServiceBuilder(string name, string image)
- : base(name)
+ public DockerFileServiceBuilder(string name, string image, ServiceSource source)
+ : base(name, source)
{
Image = image;
}
diff --git a/src/Microsoft.Tye.Core/DotnetProjectServiceBuilder.cs b/src/Microsoft.Tye.Core/DotnetProjectServiceBuilder.cs
index 6f43cd5c..5baaf7ac 100644
--- a/src/Microsoft.Tye.Core/DotnetProjectServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/DotnetProjectServiceBuilder.cs
@@ -9,8 +9,8 @@ namespace Microsoft.Tye
{
public class DotnetProjectServiceBuilder : ProjectServiceBuilder
{
- public DotnetProjectServiceBuilder(string name, FileInfo projectFile)
- : base(name)
+ public DotnetProjectServiceBuilder(string name, FileInfo projectFile, ServiceSource source)
+ : base(name, source)
{
ProjectFile = projectFile;
}
diff --git a/src/Microsoft.Tye.Core/ExecutableServiceBuilder.cs b/src/Microsoft.Tye.Core/ExecutableServiceBuilder.cs
index b5c7bc5d..b1aebdf3 100644
--- a/src/Microsoft.Tye.Core/ExecutableServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/ExecutableServiceBuilder.cs
@@ -8,8 +8,8 @@ namespace Microsoft.Tye
{
public sealed class ExecutableServiceBuilder : LaunchedServiceBuilder
{
- public ExecutableServiceBuilder(string name, string executable)
- : base(name)
+ public ExecutableServiceBuilder(string name, string executable, ServiceSource source)
+ : base(name, source)
{
Executable = executable;
}
diff --git a/src/Microsoft.Tye.Core/ExternalServiceBuilder.cs b/src/Microsoft.Tye.Core/ExternalServiceBuilder.cs
index 158c4662..7fb75693 100644
--- a/src/Microsoft.Tye.Core/ExternalServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/ExternalServiceBuilder.cs
@@ -6,8 +6,8 @@ namespace Microsoft.Tye
{
public sealed class ExternalServiceBuilder : ServiceBuilder
{
- public ExternalServiceBuilder(string name)
- : base(name)
+ public ExternalServiceBuilder(string name, ServiceSource source)
+ : base(name, source)
{
}
}
diff --git a/src/Microsoft.Tye.Core/LaunchedServiceBuilder.cs b/src/Microsoft.Tye.Core/LaunchedServiceBuilder.cs
index ac821e43..165883a0 100644
--- a/src/Microsoft.Tye.Core/LaunchedServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/LaunchedServiceBuilder.cs
@@ -8,8 +8,8 @@ namespace Microsoft.Tye
{
public abstract class LaunchedServiceBuilder : ServiceBuilder
{
- public LaunchedServiceBuilder(string name)
- : base(name)
+ public LaunchedServiceBuilder(string name, ServiceSource source)
+ : base(name, source)
{
}
diff --git a/src/Microsoft.Tye.Core/ProjectServiceBuilder.cs b/src/Microsoft.Tye.Core/ProjectServiceBuilder.cs
index 2c5bf482..a8030f40 100644
--- a/src/Microsoft.Tye.Core/ProjectServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/ProjectServiceBuilder.cs
@@ -8,8 +8,8 @@ namespace Microsoft.Tye
{
public class ProjectServiceBuilder : LaunchedServiceBuilder
{
- public ProjectServiceBuilder(string name)
- : base(name)
+ public ProjectServiceBuilder(string name, ServiceSource source)
+ : base(name, source)
{
}
public bool IsAspNet { get; set; }
diff --git a/src/Microsoft.Tye.Core/ServiceBuilder.cs b/src/Microsoft.Tye.Core/ServiceBuilder.cs
index dfcb0a9e..7482665a 100644
--- a/src/Microsoft.Tye.Core/ServiceBuilder.cs
+++ b/src/Microsoft.Tye.Core/ServiceBuilder.cs
@@ -4,9 +4,10 @@ namespace Microsoft.Tye
{
public abstract class ServiceBuilder
{
- public ServiceBuilder(string name)
+ public ServiceBuilder(string name, ServiceSource source)
{
Name = name;
+ Source = source;
}
public string Name { get; }
@@ -17,5 +18,7 @@ namespace Microsoft.Tye
public List Outputs { get; } = new List();
public HashSet Dependencies { get; } = new HashSet();
+
+ public ServiceSource Source { get; }
}
}
diff --git a/src/Microsoft.Tye.Core/ServiceSource.cs b/src/Microsoft.Tye.Core/ServiceSource.cs
new file mode 100644
index 00000000..8d2883d7
--- /dev/null
+++ b/src/Microsoft.Tye.Core/ServiceSource.cs
@@ -0,0 +1,14 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace Microsoft.Tye
+{
+ public enum ServiceSource
+ {
+ Unknown = 0,
+ Configuration,
+ Extension,
+ Host
+ }
+}
diff --git a/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs b/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs
index 10c675b7..1d0be276 100644
--- a/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs
+++ b/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs
@@ -58,7 +58,7 @@ namespace Microsoft.Tye.Extensions.Dapr
}
context.Output.WriteDebugLine("Injecting Dapr placement service...");
- var daprPlacement = new ContainerServiceBuilder("placement", daprPlacementImage)
+ var daprPlacement = new ContainerServiceBuilder("placement", daprPlacementImage, ServiceSource.Extension)
{
Args = "./placement",
Bindings = {
@@ -104,7 +104,7 @@ namespace Microsoft.Tye.Extensions.Dapr
var daprExecutablePath = GetDaprExecutablePath();
- var proxy = new ExecutableServiceBuilder($"{project.Name}-dapr", daprExecutablePath)
+ var proxy = new ExecutableServiceBuilder($"{project.Name}-dapr", daprExecutablePath, ServiceSource.Extension)
{
WorkingDirectory = context.Application.Source.DirectoryName,
diff --git a/src/Microsoft.Tye.Extensions/Elastic/ElasticStackExtension.cs b/src/Microsoft.Tye.Extensions/Elastic/ElasticStackExtension.cs
index 6414e876..384f774c 100644
--- a/src/Microsoft.Tye.Extensions/Elastic/ElasticStackExtension.cs
+++ b/src/Microsoft.Tye.Extensions/Elastic/ElasticStackExtension.cs
@@ -24,7 +24,7 @@ namespace Microsoft.Tye.Extensions.Elastic
// easy to set up.
//
// See: https://elk-docker.readthedocs.io/
- var elastic = new ContainerServiceBuilder("elastic", "sebp/elk")
+ var elastic = new ContainerServiceBuilder("elastic", "sebp/elk", ServiceSource.Extension)
{
Bindings =
{
diff --git a/src/Microsoft.Tye.Extensions/Seq/SeqExtensions.cs b/src/Microsoft.Tye.Extensions/Seq/SeqExtensions.cs
index b9d28a51..92d16511 100644
--- a/src/Microsoft.Tye.Extensions/Seq/SeqExtensions.cs
+++ b/src/Microsoft.Tye.Extensions/Seq/SeqExtensions.cs
@@ -20,7 +20,7 @@ namespace Microsoft.Tye.Extensions.Seq
{
context.Output.WriteDebugLine("Injecting seq service...");
- var seq = new ContainerServiceBuilder("seq", "datalust/seq")
+ var seq = new ContainerServiceBuilder("seq", "datalust/seq", ServiceSource.Extension)
{
EnvironmentVariables =
{
diff --git a/src/Microsoft.Tye.Extensions/Zipkin/ZipkinExtension.cs b/src/Microsoft.Tye.Extensions/Zipkin/ZipkinExtension.cs
index 062ec349..e3409768 100644
--- a/src/Microsoft.Tye.Extensions/Zipkin/ZipkinExtension.cs
+++ b/src/Microsoft.Tye.Extensions/Zipkin/ZipkinExtension.cs
@@ -21,7 +21,7 @@ namespace Microsoft.Tye.Extensions.Zipkin
else
{
context.Output.WriteDebugLine("Injecting zipkin service...");
- var service = new ContainerServiceBuilder("zipkin", "openzipkin/zipkin")
+ var service = new ContainerServiceBuilder("zipkin", "openzipkin/zipkin", ServiceSource.Extension)
{
Bindings =
{
diff --git a/src/Microsoft.Tye.Hosting/DockerRunner.cs b/src/Microsoft.Tye.Hosting/DockerRunner.cs
index d29839a5..7067d697 100644
--- a/src/Microsoft.Tye.Hosting/DockerRunner.cs
+++ b/src/Microsoft.Tye.Hosting/DockerRunner.cs
@@ -96,7 +96,7 @@ namespace Microsoft.Tye.Hosting
b.ReplicaPorts.Add(b.Port.Value);
proxyDescription.Bindings.Add(b);
}
- var proxyContainerService = new Service(proxyDescription);
+ var proxyContainerService = new Service(proxyDescription, ServiceSource.Host);
containers.Add(proxyContainerService);
proxies.Add(proxyContainerService);
}
diff --git a/src/Microsoft.Tye.Hosting/Model/Service.cs b/src/Microsoft.Tye.Hosting/Model/Service.cs
index 3a24ef72..265a1c6c 100644
--- a/src/Microsoft.Tye.Hosting/Model/Service.cs
+++ b/src/Microsoft.Tye.Hosting/Model/Service.cs
@@ -11,7 +11,7 @@ namespace Microsoft.Tye.Hosting.Model
{
public class Service
{
- public Service(ServiceDescription description)
+ public Service(ServiceDescription description, ServiceSource source)
{
Description = description;
@@ -29,12 +29,16 @@ namespace Microsoft.Tye.Hosting.Model
{
entry.Replica.State = entry.State;
});
+
+ ServiceSource = source;
}
public ServiceDescription Description { get; }
public int Restarts { get; set; }
+ public ServiceSource ServiceSource { get; }
+
public ServiceType ServiceType
{
get
diff --git a/src/Microsoft.Tye.Hosting/Model/V1/V1Service.cs b/src/Microsoft.Tye.Hosting/Model/V1/V1Service.cs
index 03dc904a..00f4c855 100644
--- a/src/Microsoft.Tye.Hosting/Model/V1/V1Service.cs
+++ b/src/Microsoft.Tye.Hosting/Model/V1/V1Service.cs
@@ -9,6 +9,7 @@ namespace Microsoft.Tye.Hosting.Model.V1
public class V1Service
{
public V1ServiceDescription? Description { get; set; }
+ public ServiceSource ServiceSource { get; set; }
public ServiceType ServiceType { get; set; }
public int Restarts { get; set; }
public V1ServiceStatus? Status { get; set; }
diff --git a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs
index 8c454a36..6f7caa92 100644
--- a/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs
+++ b/src/Microsoft.Tye.Hosting/TyeDashboardApi.cs
@@ -228,6 +228,7 @@ namespace Microsoft.Tye.Hosting
var serviceJson = new V1Service()
{
+ ServiceSource = service.ServiceSource,
ServiceType = service.ServiceType,
Status = v1Status,
Description = v1ServiceDescription,
diff --git a/src/tye/ApplicationBuilderExtensions.cs b/src/tye/ApplicationBuilderExtensions.cs
index a3bab007..1012e669 100644
--- a/src/tye/ApplicationBuilderExtensions.cs
+++ b/src/tye/ApplicationBuilderExtensions.cs
@@ -180,7 +180,7 @@ namespace Microsoft.Tye
});
}
- services.Add(service.Name, new Service(description));
+ services.Add(service.Name, new Service(description, service.Source));
}
// Ingress get turned into services for hosting
@@ -210,7 +210,7 @@ namespace Microsoft.Tye
});
}
- services.Add(ingress.Name, new Service(description));
+ services.Add(ingress.Name, new Service(description, ServiceSource.Host));
}
return new Application(application.Name, application.Source, services, application.ContainerEngine) { Network = application.Network };
diff --git a/test/E2ETest/TyeRunTests.cs b/test/E2ETest/TyeRunTests.cs
index ac9ae81d..8e8db4fd 100644
--- a/test/E2ETest/TyeRunTests.cs
+++ b/test/E2ETest/TyeRunTests.cs
@@ -249,7 +249,7 @@ services:
application.Services.Remove(project);
var outputFileName = project.AssemblyName + ".dll";
- var container = new ContainerServiceBuilder(project.Name, $"mcr.microsoft.com/dotnet/core/aspnet:{project.TargetFrameworkVersion}")
+ var container = new ContainerServiceBuilder(project.Name, $"mcr.microsoft.com/dotnet/core/aspnet:{project.TargetFrameworkVersion}", ServiceSource.Configuration)
{
IsAspNet = true
};
@@ -296,7 +296,7 @@ services:
application.Services.Remove(project);
var outputFileName = project.AssemblyName + ".dll";
- var container = new ContainerServiceBuilder(project.Name, $"mcr.microsoft.com/dotnet/core/aspnet:{project.TargetFrameworkVersion}")
+ var container = new ContainerServiceBuilder(project.Name, $"mcr.microsoft.com/dotnet/core/aspnet:{project.TargetFrameworkVersion}", ServiceSource.Configuration)
{
IsAspNet = true
};