Skip to content

Commit d9a26a5

Browse files
VpOfEngineeringTonewallTony Choiazfuncgh
authored
3.19.1 Hotfix (#9143)
* Add InstanceName for Mesh Requests (#9009) (#9136) * 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]> * Updating method --------- Co-authored-by: Tony Choi <[email protected]> Co-authored-by: Tony Choi <[email protected]> Co-authored-by: azfuncgh <[email protected]> * Bumping minor version --------- Co-authored-by: Tony Choi <[email protected]> Co-authored-by: Tony Choi <[email protected]> Co-authored-by: azfuncgh <[email protected]>
1 parent 5fc800b commit d9a26a5

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
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>3</MajorVersion>
77
<MinorVersion>19</MinorVersion>
8-
<PatchVersion>0</PatchVersion>
8+
<PatchVersion>1</PatchVersion>
99
<VersionPrefix>$(MajorVersion).$(MinorVersion).$(PatchVersion)</VersionPrefix>
1010
<Version Condition=" '$(BuildNumber)' != '' ">$(VersionPrefix)-$(BuildNumber)</Version>
1111
<Version Condition=" '$(Version)' == '' ">$(VersionPrefix)</Version>

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/ScriptConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public static class ScriptConstants
100100
public const string AntaresPlatformInternal = "x-ms-platform-internal";
101101
public const string AzureVersionHeader = "x-ms-version";
102102
public const string XIdentityHeader = "X-IDENTITY-HEADER";
103+
public const string ContainerInstanceHeader = "fx-current-instance";
103104
public const string DynamicSku = "Dynamic";
104105
public const string ElasticPremiumSku = "ElasticPremium";
105106
public const string DefaultProductionSlotName = "production";

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

Lines changed: 9 additions & 5 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,16 +31,17 @@ public MeshServiceClientTests()
3031
_handlerMock = new Mock<HttpMessageHandler>(MockBehavior.Strict);
3132
_environment = new TestEnvironment();
3233
_environment.SetEnvironmentVariable(EnvironmentSettingNames.MeshInitURI, MeshInitUri);
33-
_meshServiceClient = new MeshServiceClient(new HttpClient(_handlerMock.Object), _environment,
34-
NullLogger<MeshServiceClient>.Instance);
34+
_environment.SetEnvironmentVariable(EnvironmentSettingNames.ContainerName, ContainerName);
35+
_meshServiceClient = new MeshServiceClient(new HttpClient(_handlerMock.Object), _environment, NullLogger<MeshServiceClient>.Instance);
3536
}
3637

3738
private static bool IsMountCifsRequest(HttpRequestMessage request, string targetPath)
3839
{
3940
var formData = request.Content.ReadAsFormDataAsync().Result;
4041
return string.Equals(MeshInitUri, request.RequestUri.AbsoluteUri) &&
4142
string.Equals("cifs", formData["operation"]) &&
42-
string.Equals(targetPath, formData["targetPath"]);
43+
string.Equals(targetPath, formData["targetPath"]) &&
44+
string.Equals(ContainerName, request.Headers.GetValues(ScriptConstants.ContainerInstanceHeader).FirstOrDefault());
4345
}
4446

4547
private static bool IsMountFuseRequest(HttpRequestMessage request, string filePath, string targetPath)
@@ -48,14 +50,16 @@ private static bool IsMountFuseRequest(HttpRequestMessage request, string filePa
4850
return string.Equals(MeshInitUri, request.RequestUri.AbsoluteUri) &&
4951
string.Equals("squashfs", formData["operation"]) &&
5052
string.Equals(filePath, formData["filePath"]) &&
51-
string.Equals(targetPath, formData["targetPath"]);
53+
string.Equals(targetPath, formData["targetPath"]) &&
54+
string.Equals(ContainerName, request.Headers.GetValues(ScriptConstants.ContainerInstanceHeader).FirstOrDefault());
5255
}
5356

5457
private static bool IsPublishExecutionStatusRequest(HttpRequestMessage request, params ContainerFunctionExecutionActivity[] expectedActivities)
5558
{
5659
var formData = request.Content.ReadAsFormDataAsync().Result;
5760
if (string.Equals(MeshInitUri, request.RequestUri.AbsoluteUri) &&
58-
string.Equals(MeshServiceClient.AddFES, formData["operation"]))
61+
string.Equals(MeshServiceClient.AddFES, formData["operation"]) &&
62+
string.Equals(ContainerName, request.Headers.GetValues(ScriptConstants.ContainerInstanceHeader).FirstOrDefault()))
5963
{
6064
var activityContent = formData["content"];
6165
var activities = JsonConvert.DeserializeObject<IEnumerable<ContainerFunctionExecutionActivity>>(activityContent);

0 commit comments

Comments
 (0)