diff --git a/src/KubernetesClient/Yaml.cs b/src/KubernetesClient/Yaml.cs
index accdb94..4aa9b63 100644
--- a/src/KubernetesClient/Yaml.cs
+++ b/src/KubernetesClient/Yaml.cs
@@ -80,11 +80,11 @@ namespace k8s
/// The name of the file to load from.
/// A map from apiVersion/kind to Type. For example "v1/Pod" -> typeof(V1Pod)
/// collection of objects
- public static Task> LoadAllFromFileAsync(string fileName, Dictionary typeMap)
+ public static async Task> LoadAllFromFileAsync(string fileName, Dictionary typeMap)
{
- using (var reader = File.OpenRead(fileName))
+ using (var fileStream = File.OpenRead(fileName))
{
- return LoadAllFromStreamAsync(reader, typeMap);
+ return await LoadAllFromStreamAsync(fileStream, typeMap).ConfigureAwait(false);
}
}
diff --git a/tests/KubernetesClient.Tests/YamlTests.cs b/tests/KubernetesClient.Tests/YamlTests.cs
index d00b30e..be4a34b 100644
--- a/tests/KubernetesClient.Tests/YamlTests.cs
+++ b/tests/KubernetesClient.Tests/YamlTests.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
+using System.Threading.Tasks;
using k8s.Models;
using Xunit;
@@ -34,6 +35,44 @@ metadata:
Assert.Equal("ns", ((V1Namespace)objs[1]).Metadata.Name);
}
+ [Fact]
+ public async Task LoadAllFromFile()
+ {
+ var content = @"apiVersion: v1
+kind: Pod
+metadata:
+ name: foo
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: ns";
+
+ var types = new Dictionary();
+ types.Add("v1/Pod", typeof(V1Pod));
+ types.Add("v1/Namespace", typeof(V1Namespace));
+
+ var tempFileName = Path.GetTempFileName();
+ try
+ {
+ await File.WriteAllTextAsync(tempFileName, content).ConfigureAwait(false);
+
+ var objs = await Yaml.LoadAllFromFileAsync(tempFileName, types).ConfigureAwait(false);
+ Assert.Equal(2, objs.Count);
+ Assert.IsType(objs[0]);
+ Assert.IsType(objs[1]);
+ Assert.Equal("foo", ((V1Pod)objs[0]).Metadata.Name);
+ Assert.Equal("ns", ((V1Namespace)objs[1]).Metadata.Name);
+ }
+ finally
+ {
+ if (File.Exists(tempFileName))
+ {
+ File.Delete(tempFileName);
+ }
+ }
+ }
+
[Fact]
public void LoadFromString()
{
@@ -107,6 +146,32 @@ metadata:
}
}
+ [Fact]
+ public async Task LoadFromFile()
+ {
+ var content = @"apiVersion: v1
+kind: Pod
+metadata:
+ name: foo
+";
+
+ var tempFileName = Path.GetTempFileName();
+ try
+ {
+ await File.WriteAllTextAsync(tempFileName, content).ConfigureAwait(false);
+
+ var obj = await Yaml.LoadFromFileAsync(tempFileName).ConfigureAwait(false);
+ Assert.Equal("foo", obj.Metadata.Name);
+ }
+ finally
+ {
+ if (File.Exists(tempFileName))
+ {
+ File.Delete(tempFileName);
+ }
+ }
+ }
+
[Fact]
public void WriteToString()
{