|
|
|
@ -77,8 +77,11 @@ namespace Microsoft.Tye.Extensions.Dapr |
|
|
|
} |
|
|
|
|
|
|
|
// For local run, enumerate all projects, and add services for each dapr proxy.
|
|
|
|
var projects = context.Application.Services.OfType<ProjectServiceBuilder>().ToList(); |
|
|
|
foreach (var project in projects) |
|
|
|
var projects = context.Application.Services.OfType<ProjectServiceBuilder>().Cast<LaunchedServiceBuilder>(); |
|
|
|
var executables = context.Application.Services.OfType<ExecutableServiceBuilder>().Cast<LaunchedServiceBuilder>(); |
|
|
|
var services = projects.Concat(executables).ToList(); |
|
|
|
|
|
|
|
foreach (var project in services) |
|
|
|
{ |
|
|
|
// Dapr requires http. If this project isn't listening to HTTP then it's not daprized.
|
|
|
|
var httpBinding = project.Bindings.FirstOrDefault(b => b.Protocol == "http"); |
|
|
|
@ -107,7 +110,7 @@ namespace Microsoft.Tye.Extensions.Dapr |
|
|
|
|
|
|
|
// These environment variables are replaced with environment variables
|
|
|
|
// defined for this service.
|
|
|
|
Args = $"-app-id {project.Name} -app-port %APP_PORT% -dapr-grpc-port %DAPR_GRPC_PORT% --dapr-http-port %DAPR_HTTP_PORT% --metrics-port %METRICS_PORT% --placement-host-address localhost:{daprPlacementPort}", |
|
|
|
Args = $"run --app-id {project.Name} --app-port %APP_PORT% --dapr-grpc-port %DAPR_GRPC_PORT% --dapr-http-port %DAPR_HTTP_PORT% --metrics-port %METRICS_PORT% --placement-host-address localhost:{daprPlacementPort}", |
|
|
|
}; |
|
|
|
|
|
|
|
// When running locally `-config` specifies a filename, not a configuration name. By convention
|
|
|
|
@ -117,7 +120,7 @@ namespace Microsoft.Tye.Extensions.Dapr |
|
|
|
var configFile = Path.Combine(context.Application.Source.DirectoryName!, "components", $"{daprConfig}.yaml"); |
|
|
|
if (File.Exists(configFile)) |
|
|
|
{ |
|
|
|
proxy.Args += $" -config \"{configFile}\""; |
|
|
|
proxy.Args += $" --config \"{configFile}\""; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
@ -127,12 +130,12 @@ namespace Microsoft.Tye.Extensions.Dapr |
|
|
|
|
|
|
|
if (config.Data.TryGetValue("log-level", out obj) && obj?.ToString() is string logLevel) |
|
|
|
{ |
|
|
|
proxy.Args += $" -log-level {logLevel}"; |
|
|
|
proxy.Args += $" --log-level {logLevel}"; |
|
|
|
} |
|
|
|
|
|
|
|
if (config.Data.TryGetValue("components-path", out obj) && obj?.ToString() is string componentsPath) |
|
|
|
{ |
|
|
|
proxy.Args += $" -components-path {componentsPath}"; |
|
|
|
proxy.Args += $" --components-path {componentsPath}"; |
|
|
|
} |
|
|
|
// Add dapr proxy as a service available to everyone.
|
|
|
|
proxy.Dependencies.UnionWith(context.Application.Services.Select(s => s.Name)); |
|
|
|
@ -268,10 +271,10 @@ namespace Microsoft.Tye.Extensions.Dapr |
|
|
|
|
|
|
|
private string GetDaprExecutablePath() |
|
|
|
{ |
|
|
|
// Starting with dapr version 11, dapr is installed in user profile/home.
|
|
|
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) |
|
|
|
{ |
|
|
|
var windowsPath = Environment.ExpandEnvironmentVariables("%USERPROFILE%/.dapr/bin/daprd.exe"); |
|
|
|
// The Dapr Windows installation script defaults to "C:\dapr".
|
|
|
|
var windowsPath = Environment.ExpandEnvironmentVariables("C:/dapr/dapr.exe"); |
|
|
|
if (File.Exists(windowsPath)) |
|
|
|
{ |
|
|
|
return windowsPath; |
|
|
|
@ -279,15 +282,15 @@ namespace Microsoft.Tye.Extensions.Dapr |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
var nixpath = Environment.ExpandEnvironmentVariables("%HOME%/.dapr/bin/daprd"); |
|
|
|
var nixpath = Environment.ExpandEnvironmentVariables("/usr/local/bin/dapr"); |
|
|
|
if (File.Exists(nixpath)) |
|
|
|
{ |
|
|
|
return nixpath; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Older version of dapr don't have dapr in the bin directory, but it is usually on the path.
|
|
|
|
return "daprd"; |
|
|
|
// Dapr is usually on the path.
|
|
|
|
return "dapr"; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|