-
Notifications
You must be signed in to change notification settings - Fork 311
Enable JSON Patch in AOT #1588
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
k8s-ci-robot
merged 2 commits into
kubernetes-client:master
from
hwoodiwiss:fix-v1-patch
Nov 5, 2024
Merged
Enable JSON Patch in AOT #1588
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| using k8s; | ||
| using k8s.Models; | ||
|
|
||
| var config = KubernetesClientConfiguration.BuildConfigFromConfigFile(); | ||
| IKubernetes client = new Kubernetes(config); | ||
| Console.WriteLine("Starting Request!"); | ||
|
|
||
| var pod = client.CoreV1.ListNamespacedPod("default").Items.First(); | ||
| var name = pod.Metadata.Name; | ||
| PrintLabels(pod); | ||
|
|
||
| var patchStr = @" | ||
| { | ||
| ""metadata"": { | ||
| ""labels"": { | ||
| ""test"": ""test"" | ||
| } | ||
| } | ||
| }"; | ||
|
|
||
| client.CoreV1.PatchNamespacedPod(new V1Patch(patchStr, V1Patch.PatchType.MergePatch), name, "default"); | ||
| PrintLabels(client.CoreV1.ReadNamespacedPod(name, "default")); | ||
|
|
||
| static void PrintLabels(V1Pod pod) | ||
| { | ||
| Console.WriteLine($"Labels: for {pod.Metadata.Name}"); | ||
| foreach (var (k, v) in pod.Metadata.Labels) | ||
| { | ||
| Console.WriteLine($"{k} : {v}"); | ||
| } | ||
| Console.WriteLine("=-=-=-=-=-=-=-=-=-=-="); | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| <Project Sdk="Microsoft.NET.Sdk"> | ||
| <PropertyGroup> | ||
| <OutputType>Exe</OutputType> | ||
| <ImplicitUsings>enable</ImplicitUsings> | ||
| <Nullable>enable</Nullable> | ||
| <PublishAot>true</PublishAot> | ||
| </PropertyGroup> | ||
| <ItemGroup> | ||
| <ProjectReference Include="..\..\src\KubernetesClient.Aot\KubernetesClient.Aot.csproj"/> | ||
| </ItemGroup> | ||
| </Project> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i did not get it, is it still some dynamic thing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't quite understand the question?
In the usages I've seen, the Content property of the V1Patch object is always set as the json string value of the patch request body. This pattern, broken down, checks:
value is of type V1Patch, and is not null
value.Content is of type string
Then it assigns the value of value.Content to jsonValue, however this is all essentially just syntactic sugar, so all of that is resolved at compile time into a slightly uglier string of conditions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let me ask this way?
is it a breaking change or different behavior from non-aot version?
the assumption is that V1Patch must be json string?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ahhh, got you, this isn't a breaking behaviour, and I would say it's restoring some functionality that exists in the non-aot version to the aot version.
This only restores the ability to use json string in the json patch, however I don't think full parity can be achieved without changing the API surface.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you please also provide an example of aot json, thne i think i am good with this pr
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've added that, mostly copying the existing patch example