diff --git a/src/Proto.Cluster.Kubernetes/KubernetesProvider.cs b/src/Proto.Cluster.Kubernetes/KubernetesProvider.cs index a9f398850a..7b8c67d8e4 100644 --- a/src/Proto.Cluster.Kubernetes/KubernetesProvider.cs +++ b/src/Proto.Cluster.Kubernetes/KubernetesProvider.cs @@ -12,6 +12,7 @@ using k8s; using k8s.Models; using Microsoft.Extensions.Logging; +using Proto.Diagnostics; using Proto.Utils; using static Proto.Cluster.Kubernetes.Messages; using static Proto.Cluster.Kubernetes.ProtoLabels; @@ -38,6 +39,29 @@ public class KubernetesProvider : IClusterProvider private string _podName; private int _port; + public async Task GetDiagnostics() + { + try + { + var selector = $"{LabelCluster}={_clusterName}"; + using var client = _config.ClientFactory(); + var res = await client.ListNamespacedPodWithHttpMessagesAsync( + KubernetesExtensions.GetKubeNamespace(), + labelSelector: selector, + watch: false, + timeoutSeconds: _config.WatchTimeoutSeconds + ); + + var pods = new DiagnosticsEntry("KubernetesProvider", "Pods", res.Body); + + return new[] { pods }; + } + catch (Exception x) + { + return new[] { new DiagnosticsEntry("KubernetesProvider", "Exception", x.ToString() ) }; + } + } + public KubernetesProvider() : this(new KubernetesProviderConfig()) { }