Skip to content

Commit 98b5e8c

Browse files
pragnagopafabiocav
authored andcommitted
[port]Allow overriding defaultWorkerRuntimeVersion (#6173)
1 parent 9282673 commit 98b5e8c

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

src/WebJobs.Script/Workers/Rpc/Configuration/RpcWorkerConfigFactory.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ internal void AddProvider(string workerDir)
145145
// Check if any appsettings are provided for that langauge
146146
var languageSection = _config.GetSection($"{RpcWorkerConstants.LanguageWorkersSectionName}:{workerDescription.Language}");
147147
workerDescription.Arguments = workerDescription.Arguments ?? new List<string>();
148-
GetDefaultExecutablePathFromAppSettings(workerDescription, languageSection);
148+
GetWorkerDescriptionFromAppSettings(workerDescription, languageSection);
149149
AddArgumentsFromAppSettings(workerDescription, languageSection);
150150

151151
// Validate workerDescription
@@ -199,10 +199,13 @@ private static WorkerDescription GetWorkerDescriptionFromProfiles(string key, Di
199199
return defaultWorkerDescription;
200200
}
201201

202-
private static void GetDefaultExecutablePathFromAppSettings(WorkerDescription workerDescription, IConfigurationSection languageSection)
202+
private static void GetWorkerDescriptionFromAppSettings(RpcWorkerDescription workerDescription, IConfigurationSection languageSection)
203203
{
204-
var defaultExecutablePath = languageSection.GetSection($"{WorkerConstants.WorkerDescriptionDefaultExecutablePath}");
205-
workerDescription.DefaultExecutablePath = defaultExecutablePath.Value != null ? defaultExecutablePath.Value : workerDescription.DefaultExecutablePath;
204+
var defaultExecutablePathSetting = languageSection.GetSection($"{WorkerConstants.WorkerDescriptionDefaultExecutablePath}");
205+
workerDescription.DefaultExecutablePath = defaultExecutablePathSetting.Value != null ? defaultExecutablePathSetting.Value : workerDescription.DefaultExecutablePath;
206+
207+
var defaultRuntimeVersionAppSetting = languageSection.GetSection($"{WorkerConstants.WorkerDescriptionDefaultRuntimeVersion}");
208+
workerDescription.DefaultRuntimeVersion = defaultRuntimeVersionAppSetting.Value != null ? defaultRuntimeVersionAppSetting.Value : workerDescription.DefaultRuntimeVersion;
206209
}
207210

208211
internal static void AddArgumentsFromAppSettings(RpcWorkerDescription workerDescription, IConfigurationSection languageSection)

src/WebJobs.Script/Workers/WorkerConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public static class WorkerConstants
2525
public const string WorkerDescriptionDefaultWorkerPath = "defaultWorkerPath";
2626
public const string WorkerDescription = "description";
2727
public const string WorkerDescriptionArguments = "arguments";
28+
public const string WorkerDescriptionDefaultRuntimeVersion = "defaultRuntimeVersion";
2829

2930
// Profiles
3031
public const string WorkerDescriptionProfiles = "profiles";

test/WebJobs.Script.Tests/WebJobs.Script.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<PackageReference Include="appinsights.testlogger" Version="1.0.0" />
5252
<PackageReference Include="FluentAssertions" Version="5.9.0" />
5353
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" />
54+
<PackageReference Include="Microsoft.Azure.Functions.PythonWorker" Version="1.1.202005032" />
5455
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
5556
<PackageReference Include="Moq" Version="4.9.0" />
5657
<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta004" />

test/WebJobs.Script.Tests/Workers/Rpc/RpcWorkerConfigFactoryTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.IO;
7+
using System.Linq;
78
using System.Runtime.InteropServices;
89
using Microsoft.Azure.WebJobs.Script.Config;
910
using Microsoft.Azure.WebJobs.Script.Workers;
@@ -112,6 +113,32 @@ public void JavaPath_AppServiceEnv()
112113
}
113114
}
114115

116+
[Fact]
117+
public void DefaultWorkerConfigs_Overrides_DefaultWorkerRuntimeVersion_AppSetting()
118+
{
119+
var configBuilder = ScriptSettingsManager.CreateDefaultConfigurationBuilder()
120+
.AddInMemoryCollection(new Dictionary<string, string>
121+
{
122+
["languageWorkers:python:defaultRuntimeVersion"] = "3.8"
123+
});
124+
var config = configBuilder.Build();
125+
var scriptSettingsManager = new ScriptSettingsManager(config);
126+
var testLogger = new TestLogger("test");
127+
var testEnvVariables = new Dictionary<string, string>
128+
{
129+
{ "languageWorkers:python:defaultRuntimeVersion", "3.8" }
130+
};
131+
using (var variables = new TestScopedSettings(scriptSettingsManager, testEnvVariables))
132+
{
133+
var configFactory = new RpcWorkerConfigFactory(config, testLogger, _testSysRuntimeInfo, _testEnvironment, new TestMetricsLogger());
134+
var workerConfigs = configFactory.GetConfigs();
135+
var pythonWorkerConfig = workerConfigs.Where(w => w.Description.Language.Equals("python", StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
136+
Assert.Equal(4, workerConfigs.Count);
137+
Assert.NotNull(pythonWorkerConfig);
138+
Assert.Equal("3.8", pythonWorkerConfig.Description.DefaultRuntimeVersion);
139+
}
140+
}
141+
115142
[Fact]
116143
public void JavaPath_AppServiceEnv_JavaHomeSet_AppServiceEnvOverrides()
117144
{

0 commit comments

Comments
 (0)