2020-11-23 02:59:34 -08:00
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace k8s
|
|
|
|
|
{
|
|
|
|
|
public class GenericClient : IDisposable
|
|
|
|
|
{
|
2021-04-08 21:21:11 +03:00
|
|
|
private readonly IKubernetes kubernetes;
|
|
|
|
|
private readonly string group;
|
|
|
|
|
private readonly string version;
|
|
|
|
|
private readonly string plural;
|
2020-11-23 02:59:34 -08:00
|
|
|
|
2021-09-17 08:23:01 -07:00
|
|
|
[Obsolete]
|
2020-11-23 02:59:34 -08:00
|
|
|
public GenericClient(KubernetesClientConfiguration config, string group, string version, string plural)
|
2021-09-17 08:23:01 -07:00
|
|
|
: this(new Kubernetes(config), group, version, plural)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public GenericClient(IKubernetes kubernetes, string version, string plural)
|
|
|
|
|
: this(kubernetes, "", version, plural)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public GenericClient(IKubernetes kubernetes, string group, string version, string plural)
|
2020-11-23 02:59:34 -08:00
|
|
|
{
|
|
|
|
|
this.group = group;
|
|
|
|
|
this.version = version;
|
|
|
|
|
this.plural = plural;
|
2021-09-17 08:23:01 -07:00
|
|
|
this.kubernetes = kubernetes;
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
|
2021-11-12 12:06:28 -08:00
|
|
|
public async Task<T> CreateAsync<T>(T obj, CancellationToken cancel = default)
|
2020-11-23 02:59:34 -08:00
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
2021-11-12 12:06:28 -08:00
|
|
|
var resp = await kubernetes.CreateClusterCustomObjectWithHttpMessagesAsync(obj, group, version, plural, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
|
2021-11-12 12:06:28 -08:00
|
|
|
public async Task<T> CreateNamespacedAsync<T>(T obj, string ns, CancellationToken cancel = default)
|
2020-11-23 02:59:34 -08:00
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
2021-11-12 12:06:28 -08:00
|
|
|
var resp = await kubernetes.CreateNamespacedCustomObjectWithHttpMessagesAsync(obj, group, version, ns, plural, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
|
2021-11-12 12:06:28 -08:00
|
|
|
public async Task<T> ListAsync<T>(CancellationToken cancel = default)
|
2020-11-23 02:59:34 -08:00
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
2021-11-12 12:06:28 -08:00
|
|
|
var resp = await kubernetes.ListClusterCustomObjectWithHttpMessagesAsync(group, version, plural, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
|
2021-11-12 12:06:28 -08:00
|
|
|
public async Task<T> ListNamespacedAsync<T>(string ns, CancellationToken cancel = default)
|
2020-11-23 02:59:34 -08:00
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
2021-11-12 12:06:28 -08:00
|
|
|
var resp = await kubernetes.ListNamespacedCustomObjectWithHttpMessagesAsync(group, version, ns, plural, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
|
2021-11-12 12:06:28 -08:00
|
|
|
public async Task<T> ReadNamespacedAsync<T>(string ns, string name, CancellationToken cancel = default)
|
2020-11-23 02:59:34 -08:00
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
2021-11-12 12:06:28 -08:00
|
|
|
var resp = await kubernetes.GetNamespacedCustomObjectWithHttpMessagesAsync(group, version, ns, plural, name, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
|
2021-11-12 12:06:28 -08:00
|
|
|
public async Task<T> ReadAsync<T>(string name, CancellationToken cancel = default)
|
2020-11-23 02:59:34 -08:00
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
2021-11-12 12:06:28 -08:00
|
|
|
var resp = await kubernetes.GetClusterCustomObjectWithHttpMessagesAsync(group, version, plural, name, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2021-11-12 12:06:28 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<T> DeleteAsync<T>(string name, CancellationToken cancel = default)
|
|
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
|
|
|
|
var resp = await kubernetes.DeleteClusterCustomObjectWithHttpMessagesAsync(group, version, plural, name, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2021-11-12 12:06:28 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<T> DeleteNamespacedAsync<T>(string ns, string name, CancellationToken cancel = default)
|
|
|
|
|
where T : IKubernetesObject
|
|
|
|
|
{
|
|
|
|
|
var resp = await kubernetes.DeleteNamespacedCustomObjectWithHttpMessagesAsync(group, version, ns, plural, name, cancellationToken: cancel).ConfigureAwait(false);
|
2021-12-13 07:31:59 -08:00
|
|
|
return KubernetesJson.Deserialize<T>(resp.Body.ToString());
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
Dispose(true);
|
|
|
|
|
GC.SuppressFinalize(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual void Dispose(bool disposing)
|
|
|
|
|
{
|
2021-11-12 12:06:28 -08:00
|
|
|
kubernetes.Dispose();
|
2020-11-23 02:59:34 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|