diff --git a/examples/patch-aot/Program.cs b/examples/patch-aot/Program.cs new file mode 100644 index 000000000..06a693dde --- /dev/null +++ b/examples/patch-aot/Program.cs @@ -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("=-=-=-=-=-=-=-=-=-=-="); +} diff --git a/examples/patch-aot/patch-aot.csproj b/examples/patch-aot/patch-aot.csproj new file mode 100644 index 000000000..c2c806215 --- /dev/null +++ b/examples/patch-aot/patch-aot.csproj @@ -0,0 +1,11 @@ + + + Exe + enable + enable + true + + + + + diff --git a/src/KubernetesClient.Aot/KubernetesJson.cs b/src/KubernetesClient.Aot/KubernetesJson.cs index cfa69ec01..f6285ccc2 100644 --- a/src/KubernetesClient.Aot/KubernetesJson.cs +++ b/src/KubernetesClient.Aot/KubernetesJson.cs @@ -91,6 +91,11 @@ public static TValue Deserialize(Stream json, JsonSerializerOptions json public static string Serialize(object value, JsonSerializerOptions jsonSerializerOptions = null) { + if (value is V1Patch { Content: string jsonValue }) + { + return jsonValue; + } + var info = SourceGenerationContext.Default.GetTypeInfo(value.GetType()); return JsonSerializer.Serialize(value, info); }