Skip to content

Commit c10723d

Browse files
.Net: Include the operation in the KernelFunction.Metadata (#9556)
### Motivation and Context Update for #9496 to include the `RestApiOperation` in the `KernelFunction.MetaData` ### Description This will help us avoid having to add all `RestApiOperation` properties individually to metadata. ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
1 parent ca4badf commit c10723d

File tree

4 files changed

+12
-8
lines changed

4 files changed

+12
-8
lines changed

dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public sealed class RestApiOperation
5252
/// <summary>
5353
/// The server.
5454
/// </summary>
55-
public RestApiOperationServer Server { get; }
55+
internal RestApiOperationServer Server { get; }
5656

5757
/// <summary>
5858
/// The operation parameters.

dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ async Task<RestApiOperationResponse> ExecuteAsync(Kernel kernel, KernelFunction
266266
var additionalMetadata = new Dictionary<string, object?>
267267
{
268268
{ OpenApiKernelPluginFactory.OperationExtensionsMethodKey, operation.Method.ToString().ToUpperInvariant() },
269-
{ OpenApiKernelPluginFactory.OperationExtensionsPathKey, operation.Path },
269+
{ OpenApiKernelPluginFactory.OperationExtensionsOperationKey, operation },
270270
{ OpenApiKernelPluginFactory.OperationExtensionsServerUrlsKey, string.IsNullOrEmpty(operation.Server?.Url) ? Array.Empty<string>() : [ operation.Server!.Url! ] }
271271
};
272272
if (operation.Extensions is { Count: > 0 })
@@ -292,8 +292,8 @@ async Task<RestApiOperationResponse> ExecuteAsync(Kernel kernel, KernelFunction
292292
/// <summary>The metadata property bag key to use when storing the method of an operation.</summary>
293293
private const string OperationExtensionsMethodKey = "method";
294294

295-
/// <summary>The metadata property bag key to use when storing the path of an operation.</summary>
296-
private const string OperationExtensionsPathKey = "path";
295+
/// <summary>The metadata property bag key to use when storing the operation.</summary>
296+
private const string OperationExtensionsOperationKey = "operation";
297297

298298
/// <summary>The metadata property bag key to use when storing the server of an operation.</summary>
299299
private const string OperationExtensionsServerUrlsKey = "server-urls";

dotnet/src/Functions/Functions.UnitTests/OpenApi/Extensions/OpenApiKernelExtensionsTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,14 @@ public async Task ItShouldReplicateMetadataToOperationAsync(string documentFileN
279279
Assert.Equal(4, additionalProperties.Count);
280280

281281
Assert.Contains("method", additionalProperties.Keys);
282-
Assert.Contains("path", additionalProperties.Keys);
282+
Assert.Contains("operation", additionalProperties.Keys);
283283
Assert.Contains("server-urls", additionalProperties.Keys);
284284
Assert.Contains("operation-extensions", additionalProperties.Keys);
285285

286+
var operation = additionalProperties["operation"] as RestApiOperation;
287+
Assert.NotNull(operation);
286288
Assert.Equal("GET", additionalProperties["method"]);
287-
Assert.Equal("/api-with-open-api-extensions", additionalProperties["path"]);
289+
Assert.Equal("/api-with-open-api-extensions", operation.Path);
288290
var serverUrls = additionalProperties["server-urls"] as string[];
289291
Assert.NotNull(serverUrls);
290292
Assert.Equal(["https://my-key-vault.vault.azure.net"], serverUrls);

dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiKernelPluginFactoryTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,12 +270,14 @@ public async Task ItShouldReplicateMetadataToOperationAsync(string documentFileN
270270
Assert.Equal(4, additionalProperties.Count);
271271

272272
Assert.Contains("method", additionalProperties.Keys);
273-
Assert.Contains("path", additionalProperties.Keys);
273+
Assert.Contains("operation", additionalProperties.Keys);
274274
Assert.Contains("server-urls", additionalProperties.Keys);
275275
Assert.Contains("operation-extensions", additionalProperties.Keys);
276276

277+
var operation = additionalProperties["operation"] as RestApiOperation;
278+
Assert.NotNull(operation);
277279
Assert.Equal("GET", additionalProperties["method"]);
278-
Assert.Equal("/api-with-open-api-extensions", additionalProperties["path"]);
280+
Assert.Equal("/api-with-open-api-extensions", operation.Path);
279281
var serverUrls = additionalProperties["server-urls"] as string[];
280282
Assert.NotNull(serverUrls);
281283
Assert.Equal(["https://my-key-vault.vault.azure.net"], serverUrls);

0 commit comments

Comments
 (0)