Add a simple example of creating and deleting a namespace.

This commit is contained in:
Brendan Burns
2017-11-03 22:01:53 -07:00
parent e7726f7c36
commit f8d0e868ec
2 changed files with 92 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
namespace simple
{
using System;
using System.IO;
using System.Net;
using System.Threading.Tasks;
using k8s;
using k8s.Models;
class NamespaceExample
{
static void ListNamespaces(IKubernetes client) {
var listTask = client.ListNamespaceWithHttpMessagesAsync().Result;
var list = listTask.Body;
foreach (var item in list.Items) {
Console.WriteLine(item.Metadata.Name);
}
if (list.Items.Count == 0) {
Console.WriteLine("Empty!");
}
}
static async Task asyncAwaitDelete(IKubernetes client, string name, int delayMillis) {
while (true) {
await Task.Delay(delayMillis);
try {
var result = await client.ReadNamespaceWithHttpMessagesAsync(name);
var ns = result.Body;
Console.WriteLine(ns);
} catch (AggregateException ex) {
foreach (var innerEx in ex.InnerExceptions) {
if (innerEx is Microsoft.Rest.HttpOperationException) {
var code = ((Microsoft.Rest.HttpOperationException)innerEx).Response.StatusCode;
if (code == HttpStatusCode.NotFound) {
return;
}
throw ex;
}
}
} catch (Microsoft.Rest.HttpOperationException ex) {
if (ex.Response.StatusCode == HttpStatusCode.NotFound) {
return;
}
throw ex;
}
}
}
static void awaitDelete(IKubernetes client, string name, int delayMillis) {
asyncAwaitDelete(client, name, delayMillis).Wait();
}
static void Main(string[] args)
{
var k8sClientConfig = KubernetesClientConfiguration.BuildConfigFromConfigFile();
IKubernetes client = new Kubernetes(k8sClientConfig);
ListNamespaces(client);
var ns = new Corev1Namespace();
ns.Metadata = new V1ObjectMeta();
ns.Metadata.Name = "test";
var result = client.CreateNamespaceWithHttpMessagesAsync(ns).Result;
Console.WriteLine(result);
ListNamespaces(client);
var task = client.DeleteNamespaceWithHttpMessagesAsync(new V1DeleteOptions(), ns.Metadata.Name);
var obj = ObjectOrStatus<Corev1Namespace>.ReadObjectOrStatus(task);
if (obj.Status != null) {
Console.WriteLine(obj.Status);
} else {
awaitDelete(client, ns.Metadata.Name, 3 * 1000);
}
ListNamespaces(client);
}
}
}

View File

@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\..\src\KubernetesClient.csproj" />
</ItemGroup>
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
</Project>