Files
csharp/examples/namespace/NamespaceExample.cs
Boshi Lian 0d719f1fc6 7.1 remove old autorest (#785)
* init removal

* clean up warning

* bump ver to 7.1

* fix build

* custom http client no long supported

* cleanup unused types

* fix npe

* remove service client

* modern ssl settings

* fix test

* fix client cert null

* fix ctor

* cleanup
2022-02-25 13:33:23 -08:00

99 lines
2.9 KiB
C#

using System;
using System.Net;
using System.Threading.Tasks;
using k8s;
using k8s.Models;
namespace @namespace
{
internal class NamespaceExample
{
private static void ListNamespaces(IKubernetes client)
{
var list = client.ListNamespace();
foreach (var item in list.Items)
{
Console.WriteLine(item.Metadata.Name);
}
if (list.Items.Count == 0)
{
Console.WriteLine("Empty!");
}
}
private static async Task DeleteAsync(IKubernetes client, string name, int delayMillis)
{
while (true)
{
await Task.Delay(delayMillis).ConfigureAwait(false);
try
{
await client.ReadNamespaceAsync(name).ConfigureAwait(false);
}
catch (AggregateException ex)
{
foreach (var innerEx in ex.InnerExceptions)
{
if (innerEx is k8s.Autorest.HttpOperationException)
{
var code = ((k8s.Autorest.HttpOperationException)innerEx).Response.StatusCode;
if (code == HttpStatusCode.NotFound)
{
return;
}
throw;
}
}
}
catch (k8s.Autorest.HttpOperationException ex)
{
if (ex.Response.StatusCode == HttpStatusCode.NotFound)
{
return;
}
throw;
}
}
}
private static void Delete(IKubernetes client, string name, int delayMillis)
{
DeleteAsync(client, name, delayMillis).Wait();
}
private static void Main(string[] args)
{
var k8SClientConfig = KubernetesClientConfiguration.BuildConfigFromConfigFile();
IKubernetes client = new Kubernetes(k8SClientConfig);
ListNamespaces(client);
var ns = new V1Namespace { Metadata = new V1ObjectMeta { Name = "test" } };
var result = client.CreateNamespace(ns);
Console.WriteLine(result);
ListNamespaces(client);
var status = client.DeleteNamespace(ns.Metadata.Name, new V1DeleteOptions());
if (status.HasObject)
{
var obj = status.ObjectView<V1Namespace>();
Console.WriteLine(obj.Status.Phase);
Delete(client, ns.Metadata.Name, 3 * 1000);
}
else
{
Console.WriteLine(status.Message);
}
ListNamespaces(client);
}
}
}