From 6c539873b547e006f082f3b712308e1585ada80c Mon Sep 17 00:00:00 2001 From: Binyang2014 Date: Fri, 3 Dec 2021 10:00:29 -0800 Subject: [PATCH] Fix x-kubernetes-int-or-string in CRD can not be desterilized correctly. (#747) * bug fix * add ut --- src/KubernetesClient/Yaml.cs | 2 +- tests/KubernetesClient.Tests/YamlTests.cs | 35 +++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/KubernetesClient/Yaml.cs b/src/KubernetesClient/Yaml.cs index 79981cd..87580ef 100644 --- a/src/KubernetesClient/Yaml.cs +++ b/src/KubernetesClient/Yaml.cs @@ -225,7 +225,7 @@ namespace k8s continue; } - var yamlAttribute = new YamlMemberAttribute { Alias = jsonAttribute.PropertyName }; + var yamlAttribute = new YamlMemberAttribute { Alias = jsonAttribute.PropertyName, ApplyNamingConventions = false }; builder.WithAttributeOverride(type, property.Name, yamlAttribute); } } diff --git a/tests/KubernetesClient.Tests/YamlTests.cs b/tests/KubernetesClient.Tests/YamlTests.cs index c3ffdab..c1597ae 100644 --- a/tests/KubernetesClient.Tests/YamlTests.cs +++ b/tests/KubernetesClient.Tests/YamlTests.cs @@ -559,5 +559,40 @@ data: Assert.Equal("bXktYXBw", Encoding.UTF8.GetString(result.Data["username"])); Assert.Equal("Mzk1MjgkdmRnN0pi", Encoding.UTF8.GetString(result.Data["password"])); } + + [Fact] + public void DeserializeWithJsonPropertyName() + { + var kManifest = @" +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: test-crd +spec: + group: test.crd + names: + kind: Crd + listKind: CrdList + plural: crds + singular: crd + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: This is a test crd. + x-kubernetes-int-or-string: true + required: + - metadata + - spec + type: object + served: true + storage: true +"; + var result = Yaml.LoadFromString(kManifest); + Assert.Single(result?.Spec?.Versions); + var ver = result.Spec.Versions[0]; + Assert.Equal(true, ver?.Schema?.OpenAPIV3Schema?.XKubernetesIntOrString); + } } }