Skip to content

Commit afd2544

Browse files
VpOfEngineeringfabiocavTonewallTony Choiazfuncgh
authored
4.16.3 Hotfix (#9138)
* Temporarily pushing System.Private.Uri dependency (#9133) * Add InstanceName for Mesh Requests (#9009) * test logs * request body * request body * adding request body to all mesh client calls * adding header instead of as body * cleaning up * deleting old request body class * test to validate header Co-authored-by: Tony Choi <[email protected]> * Bumping minor version --------- Co-authored-by: Fabio Cavalcante <[email protected]> Co-authored-by: Tony Choi <[email protected]> Co-authored-by: Tony Choi <[email protected]> Co-authored-by: azfuncgh <[email protected]>
1 parent e8aed05 commit afd2544

File tree

5 files changed

+23
-6
lines changed

5 files changed

+23
-6
lines changed

build/common.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<LangVersion>latest</LangVersion>
66
<MajorVersion>4</MajorVersion>
77
<MinorVersion>16</MinorVersion>
8-
<PatchVersion>2</PatchVersion>
8+
<PatchVersion>3</PatchVersion>
99
<BuildNumber Condition="'$(BuildNumber)' == '' ">0</BuildNumber>
1010
<PreviewVersion></PreviewVersion>
1111

src/WebJobs.Script.WebHost/Management/MeshServiceClient.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public async Task<bool> MountCifs(string connectionString, string contentShare,
3838
{
3939
var sa = CloudStorageAccount.Parse(connectionString);
4040
var key = Convert.ToBase64String(sa.Credentials.ExportKey());
41+
4142
HttpResponseMessage responseMessage = await SendAsync(new[]
4243
{
4344
new KeyValuePair<string, string>(Operation, "cifs"),
@@ -142,9 +143,18 @@ private async Task<HttpResponseMessage> SendAsync(IEnumerable<KeyValuePair<strin
142143
{
143144
var operationName = formData.FirstOrDefault(f => string.Equals(f.Key, Operation)).Value;
144145
_logger.LogDebug($"Sending mesh request {operationName}");
145-
var res = await _client.PostAsync(_environment.GetEnvironmentVariable(EnvironmentSettingNames.MeshInitURI),
146-
new FormUrlEncodedContent(formData));
146+
147+
var request = new HttpRequestMessage(HttpMethod.Post, _environment.GetEnvironmentVariable(EnvironmentSettingNames.MeshInitURI))
148+
{
149+
Content = new FormUrlEncodedContent(formData)
150+
};
151+
152+
request.Headers.Add(ScriptConstants.ContainerInstanceHeader, _environment.GetEnvironmentVariable(EnvironmentSettingNames.ContainerName));
153+
154+
var res = await _client.SendAsync(request);
155+
147156
_logger.LogDebug($"Mesh response {res.StatusCode}");
157+
148158
return res;
149159
}
150160

src/WebJobs.Script.WebHost/WebJobs.Script.WebHost.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
<PrivateAssets>all</PrivateAssets>
8888
</PackageReference>
8989
<PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
90+
<PackageReference Include="System.Private.Uri" Version="4.3.2" />
9091
<PackageReference Include="System.Security.Cryptography.Xml" Version="4.7.1" />
9192
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
9293
</ItemGroup>

src/WebJobs.Script/ScriptConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ public static class ScriptConstants
105105
public const string AntaresPlatformInternal = "x-ms-platform-internal";
106106
public const string AzureVersionHeader = "x-ms-version";
107107
public const string XIdentityHeader = "X-IDENTITY-HEADER";
108+
public const string ContainerInstanceHeader = "fx-current-instance";
108109
public const string DynamicSku = "Dynamic";
109110
public const string ElasticPremiumSku = "ElasticPremium";
110111
public const string DefaultProductionSlotName = "production";

test/WebJobs.Script.Tests.Integration/Management/MeshServiceClientTests.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ namespace Microsoft.Azure.WebJobs.Script.Tests.Integration.Management
2121
public class MeshServiceClientTests
2222
{
2323
private const string MeshInitUri = "http://localhost:8954/";
24+
private const string ContainerName = "MockContainerName";
2425
private readonly IMeshServiceClient _meshServiceClient;
2526
private readonly Mock<HttpMessageHandler> _handlerMock;
2627
private readonly TestEnvironment _environment;
@@ -30,6 +31,7 @@ public MeshServiceClientTests()
3031
_handlerMock = new Mock<HttpMessageHandler>(MockBehavior.Strict);
3132
_environment = new TestEnvironment();
3233
_environment.SetEnvironmentVariable(EnvironmentSettingNames.MeshInitURI, MeshInitUri);
34+
_environment.SetEnvironmentVariable(EnvironmentSettingNames.ContainerName, ContainerName);
3335
_meshServiceClient = new MeshServiceClient(TestHelpers.CreateHttpClientFactory(_handlerMock.Object), _environment,
3436
NullLogger<MeshServiceClient>.Instance);
3537
}
@@ -39,7 +41,8 @@ private static bool IsMountCifsRequest(HttpRequestMessage request, string target
3941
var formData = request.Content.ReadAsFormDataAsync().Result;
4042
return string.Equals(MeshInitUri, request.RequestUri.AbsoluteUri) &&
4143
string.Equals("cifs", formData["operation"]) &&
42-
string.Equals(targetPath, formData["targetPath"]);
44+
string.Equals(targetPath, formData["targetPath"]) &&
45+
string.Equals(ContainerName, request.Headers.GetValues(ScriptConstants.ContainerInstanceHeader).FirstOrDefault());
4346
}
4447

4548
private static bool IsMountFuseRequest(HttpRequestMessage request, string filePath, string targetPath)
@@ -48,14 +51,16 @@ private static bool IsMountFuseRequest(HttpRequestMessage request, string filePa
4851
return string.Equals(MeshInitUri, request.RequestUri.AbsoluteUri) &&
4952
string.Equals("squashfs", formData["operation"]) &&
5053
string.Equals(filePath, formData["filePath"]) &&
51-
string.Equals(targetPath, formData["targetPath"]);
54+
string.Equals(targetPath, formData["targetPath"]) &&
55+
string.Equals(ContainerName, request.Headers.GetValues(ScriptConstants.ContainerInstanceHeader).FirstOrDefault());
5256
}
5357

5458
private static bool IsPublishExecutionStatusRequest(HttpRequestMessage request, params ContainerFunctionExecutionActivity[] expectedActivities)
5559
{
5660
var formData = request.Content.ReadAsFormDataAsync().Result;
5761
if (string.Equals(MeshInitUri, request.RequestUri.AbsoluteUri) &&
58-
string.Equals(MeshServiceClient.AddFES, formData["operation"]))
62+
string.Equals(MeshServiceClient.AddFES, formData["operation"]) &&
63+
string.Equals(ContainerName, request.Headers.GetValues(ScriptConstants.ContainerInstanceHeader).FirstOrDefault()))
5964
{
6065
var activityContent = formData["content"];
6166
var activities = JsonConvert.DeserializeObject<IEnumerable<ContainerFunctionExecutionActivity>>(activityContent);

0 commit comments

Comments
 (0)