Skip to content

Commit 16d3c01

Browse files
authored
Fix strict yaml parsing (#1061)
1 parent 0b67950 commit 16d3c01

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/KubernetesClient.Models/KubernetesYaml.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ public static List<object> LoadAllFromString(string content, IDictionary<string,
157157
parser.Consume<StreamStart>();
158158
while (parser.Accept<DocumentStart>(out _))
159159
{
160-
var obj = GetDeserializer(strict).Deserialize<KubernetesObject>(parser);
161-
types.Add(mergedTypeMap[obj.ApiVersion + "/" + obj.Kind]);
160+
var dict = GetDeserializer(strict).Deserialize<Dictionary<object, object>>(parser);
161+
types.Add(mergedTypeMap[dict["apiVersion"] + "/" + dict["kind"]]);
162162
}
163163

164164
parser = new Parser(new StringReader(content));

tests/KubernetesClient.Tests/KubernetesYamlTests.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ public void LoadPropertyNamedReadOnlyFromString()
275275
readOnly: false
276276
";
277277

278-
var obj = KubernetesYaml.Deserialize<V1Pod>(content);
278+
var obj = KubernetesYaml.Deserialize<V1Pod>(content, true);
279279

280280
Assert.True(obj.Spec.Containers[0].VolumeMounts[0].ReadOnlyProperty);
281281
Assert.False(obj.Spec.Containers[0].VolumeMounts[1].ReadOnlyProperty);
@@ -476,7 +476,7 @@ public void CpuRequestAndLimitFromString()
476476
- -cpus
477477
- ""2""";
478478

479-
var obj = KubernetesYaml.Deserialize<V1Pod>(content);
479+
var obj = KubernetesYaml.Deserialize<V1Pod>(content, true);
480480

481481
Assert.NotNull(obj?.Spec?.Containers);
482482
var container = Assert.Single(obj.Spec.Containers);
@@ -811,7 +811,7 @@ public void LoadSecret()
811811
password: Mzk1MjgkdmRnN0pi
812812
";
813813

814-
var result = KubernetesYaml.Deserialize<V1Secret>(kManifest);
814+
var result = KubernetesYaml.Deserialize<V1Secret>(kManifest, true);
815815
Assert.Equal("bXktYXBw", Encoding.UTF8.GetString(result.Data["username"]));
816816
Assert.Equal("Mzk1MjgkdmRnN0pi", Encoding.UTF8.GetString(result.Data["password"]));
817817
}
@@ -890,7 +890,7 @@ public void LoadAllFromStringWithTypeMapGenericCRD()
890890
var objs = KubernetesYaml.LoadAllFromString(content, new Dictionary<string, Type>
891891
{
892892
{ $"{V1AlphaFoo.KubeGroup}/{V1AlphaFoo.KubeApiVersion}/Foo", typeof(V1AlphaFoo) },
893-
});
893+
}, true);
894894
Assert.Single(objs);
895895
var v1AlphaFoo = Assert.IsType<V1AlphaFoo>(objs[0]);
896896
Assert.Equal("foo", v1AlphaFoo.Metadata.Name);

0 commit comments

Comments
 (0)