Skip to content

Commit f95cea5

Browse files
authored
Unifying CV2 SKU/Environment checks (#9334)
1 parent 66731fa commit f95cea5

File tree

11 files changed

+40
-17
lines changed

11 files changed

+40
-17
lines changed

src/WebJobs.Script.WebHost/ContainerManagement/LinuxContainerInitializationHostService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public async Task StartAsync(CancellationToken cancellationToken)
4141
{
4242
await ApplyStartContextIfPresent();
4343
}
44-
else if (_environment.IsLinuxConsumptionOnLegion())
44+
else if (_environment.IsFlexConsumptionSku())
4545
{
4646
_logger.LogInformation("Container has (re)started. Waiting for specialization");
4747
}

src/WebJobs.Script.WebHost/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ private static void InitializeProcess()
9191
{
9292
AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledExceptionInLinuxConsumption;
9393
}
94-
else if (SystemEnvironment.Instance.IsLinuxConsumptionOnLegion())
94+
else if (SystemEnvironment.Instance.IsFlexConsumptionSku())
9595
{
9696
//todo: Replace with legion specific logger.
9797
AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledExceptionInLinuxConsumption;

src/WebJobs.Script.WebHost/Security/Authentication/Jwt/ScriptJwtBearerExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public static AuthenticationBuilder AddScriptJwtBearer(this AuthenticationBuilde
7474
private static string[] GetValidAudiences()
7575
{
7676
if (SystemEnvironment.Instance.IsPlaceholderModeEnabled() &&
77-
SystemEnvironment.Instance.IsLinuxConsumptionOnLegion())
77+
SystemEnvironment.Instance.IsFlexConsumptionSku())
7878
{
7979
return new string[]
8080
{

src/WebJobs.Script.WebHost/WebHostServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public static void AddWebJobsScriptHost(this IServiceCollection services, IConfi
130130
services.AddTransient<VirtualFileSystem>();
131131
services.AddTransient<VirtualFileSystemMiddleware>();
132132

133-
if (SystemEnvironment.Instance.IsLinuxConsumptionOnLegion())
133+
if (SystemEnvironment.Instance.IsFlexConsumptionSku())
134134
{
135135
services.AddSingleton<IInstanceManager, LegionInstanceManager>();
136136
}

src/WebJobs.Script/Environment/EnvironmentExtensions.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,14 @@ public static bool IsConsumptionSku(this IEnvironment environment)
220220
public static bool IsFlexConsumptionSku(this IEnvironment environment)
221221
{
222222
string value = environment.GetEnvironmentVariable(AzureWebsiteSku);
223-
return string.Equals(value, ScriptConstants.FlexConsumptionSku, StringComparison.OrdinalIgnoreCase);
223+
if (string.Equals(value, ScriptConstants.FlexConsumptionSku, StringComparison.OrdinalIgnoreCase))
224+
{
225+
return true;
226+
}
227+
228+
// when in placeholder mode, site settings like SKU are not available
229+
// to enable this check to run in both modes, we check additional settings
230+
return environment.IsLinuxConsumptionOnLegion();
224231
}
225232

226233
/// <summary>
@@ -299,7 +306,7 @@ public static bool IsManagedAppEnvironment(this IEnvironment environment)
299306
/// <returns><see cref="true"/> if running in a Linux Consumption App Service app; otherwise, false.</returns>
300307
public static bool IsAnyLinuxConsumption(this IEnvironment environment)
301308
{
302-
return (environment.IsLinuxConsumptionOnAtlas() || environment.IsLinuxConsumptionOnLegion()) && !environment.IsManagedAppEnvironment();
309+
return (environment.IsLinuxConsumptionOnAtlas() || environment.IsFlexConsumptionSku()) && !environment.IsManagedAppEnvironment();
303310
}
304311

305312
public static bool IsLinuxConsumptionOnAtlas(this IEnvironment environment)
@@ -309,7 +316,7 @@ public static bool IsLinuxConsumptionOnAtlas(this IEnvironment environment)
309316
string.IsNullOrEmpty(environment.GetEnvironmentVariable(LegionServiceHost));
310317
}
311318

312-
public static bool IsLinuxConsumptionOnLegion(this IEnvironment environment)
319+
private static bool IsLinuxConsumptionOnLegion(this IEnvironment environment)
313320
{
314321
return !environment.IsAppService() &&
315322
(!string.IsNullOrEmpty(environment.GetEnvironmentVariable(ContainerName)) ||

test/WebJobs.Script.Tests.Integration/ContainerManagement/LinuxContainerInitializationHostServiceTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public async Task Does_Not_Run_In_Linux_Container_On_Legion()
5959
_environment.SetEnvironmentVariable(LegionServiceHost, "1");
6060
Assert.True(_environment.IsAnyLinuxConsumption());
6161
Assert.False(_environment.IsLinuxConsumptionOnAtlas());
62-
Assert.True(_environment.IsLinuxConsumptionOnLegion());
62+
Assert.True(_environment.IsFlexConsumptionSku());
6363

6464
var initializationHostService = new LinuxContainerInitializationHostService(_environment, _instanceManagerMock.Object, NullLogger<LinuxContainerInitializationHostService>.Instance, _startupContextProvider);
6565
await initializationHostService.StartAsync(CancellationToken.None);

test/WebJobs.Script.Tests.Integration/Host/StandbyManager/StandbyManagerE2ETests_Linux.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public async Task StandbyModeE2E_LinuxContainer()
5353
var environment = new TestEnvironment(vars);
5454

5555
Assert.True(environment.IsLinuxConsumptionOnAtlas());
56-
Assert.False(environment.IsLinuxConsumptionOnLegion());
56+
Assert.False(environment.IsFlexConsumptionSku());
5757
Assert.True(environment.IsAnyLinuxConsumption());
5858

5959
await InitializeTestHostAsync("Linux", environment);

test/WebJobs.Script.Tests/Environment/EnvironmentTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ public void Returns_IsLinuxConsumption(string websiteInstanceId, string containe
232232
testEnvironment.SetEnvironmentVariable(EnvironmentSettingNames.LegionServiceHost, legionServiceHost);
233233
Assert.Equal(isLinuxConsumptionOnAtlas || isLinuxConsumptionOnLegion, testEnvironment.IsAnyLinuxConsumption());
234234
Assert.Equal(isLinuxConsumptionOnAtlas, testEnvironment.IsLinuxConsumptionOnAtlas());
235-
Assert.Equal(isLinuxConsumptionOnLegion, testEnvironment.IsLinuxConsumptionOnLegion());
235+
Assert.Equal(isLinuxConsumptionOnLegion, testEnvironment.IsFlexConsumptionSku());
236236
Assert.Equal(isLinuxConsumptionOnAtlas || isLinuxConsumptionOnLegion, testEnvironment.IsConsumptionSku());
237237
Assert.Equal(isLinuxConsumptionOnAtlas || isLinuxConsumptionOnLegion, testEnvironment.IsDynamicSku());
238238
Assert.False(isLinuxConsumptionOnAtlas ? isLinuxConsumptionOnLegion : isLinuxConsumptionOnAtlas);

test/WebJobs.Script.Tests/Extensions/EnvironmentExtensionsTests.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,21 @@ public void IsConsumptionSku_ReturnsExpectedResult(bool isLinuxConsumption, bool
183183
}
184184

185185
[Theory]
186-
[InlineData("FlexConsumption", true)]
187-
[InlineData("Dynamic", false)]
188-
[InlineData("ElasticPremium", false)]
189-
[InlineData("", false)]
190-
public void IsFlexConsumptionSku_ReturnsExpectedResult(string sku, bool expected)
186+
[InlineData("FlexConsumption", "", "", "", true)] // not a valid configuration, but testing for thoroughness
187+
[InlineData(null, "", "container-name", "1", true)] // simulate placeholder mode where SKU not available yet
188+
[InlineData("FlexConsumption", "", "container-name", "1", true)] // expected state when specialized
189+
[InlineData(null, "website-instance-id", "container-name", "1", false)] // not a valid configuration, but testing for thoroughness
190+
[InlineData("Dynamic", "", "", "", false)]
191+
[InlineData("ElasticPremium", "", "", "", false)]
192+
[InlineData("", "", "", "", false)]
193+
public void IsFlexConsumptionSku_ReturnsExpectedResult(string sku, string websiteInstanceId, string containerName, string legionServiceHost, bool expected)
191194
{
192195
IEnvironment env = new TestEnvironment();
193196
env.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteSku, sku);
197+
env.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteInstanceId, websiteInstanceId);
198+
env.SetEnvironmentVariable(EnvironmentSettingNames.ContainerName, containerName);
199+
env.SetEnvironmentVariable(EnvironmentSettingNames.LegionServiceHost, legionServiceHost);
200+
194201
Assert.Equal(expected, env.IsFlexConsumptionSku());
195202
}
196203

test/WebJobs.Script.Tests/FunctionsSyncServiceTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,15 @@ public void IsSyncTriggersEnvironment_StandbyMode_ReturnsExpectedResult(bool isA
131131
{
132132
_mockWebHostEnvironment.SetupGet(p => p.InStandbyMode).Returns(standbyMode);
133133

134+
if (isConsumptionLinuxOnLegion)
135+
{
136+
_mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteSku)).Returns(ScriptConstants.FlexConsumptionSku);
137+
}
138+
else
139+
{
140+
_mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteSku)).Returns(ScriptConstants.DynamicSku);
141+
}
142+
134143
_mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteInstanceId)).Returns(isAppService ? "1" : null);
135144
_mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.WebSiteAuthEncryptionKey)).Returns(hasEncryptionKey ? "1" : null);
136145
_mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.ContainerName)).Returns(isConsumptionLinuxOnAtlas || isConsumptionLinuxOnLegion ? "1" : null);

0 commit comments

Comments
 (0)