RunningPod.cs
1 using Newtonsoft.Json; 2 3 namespace KubernetesWorkflow.Types 4 { 5 public class RunningPod 6 { 7 public RunningPod(string id, StartupConfig startupConfig, StartResult startResult, RunningContainer[] containers) 8 { 9 Id = id; 10 PodInfo = null!; 11 StartupConfig = startupConfig; 12 StartResult = startResult; 13 Containers = containers; 14 15 foreach (var c in containers) c.RunningPod = this; 16 } 17 18 public string Id { get; } 19 public PodInfo PodInfo { get; private set; } 20 public StartupConfig StartupConfig { get; } 21 public StartResult StartResult { get; } 22 public RunningContainer[] Containers { get; } 23 24 [JsonIgnore] 25 public string Name 26 { 27 get { return $"'{string.Join("&", Containers.Select(c => c.Name).ToArray())}'"; } 28 } 29 30 [JsonIgnore] 31 public bool IsStopped { get; internal set; } 32 33 public void Initialize(PodInfo podInfo) 34 { 35 PodInfo = podInfo; 36 } 37 38 public string Describe() 39 { 40 return string.Join(",", Containers.Select(c => c.Name)); 41 } 42 43 public override bool Equals(object? obj) 44 { 45 return obj is RunningPod pod && 46 Id == pod.Id; 47 } 48 49 public override int GetHashCode() 50 { 51 return HashCode.Combine(Id); 52 } 53 54 public override string ToString() 55 { 56 if (IsStopped) return Name + " (*)"; 57 return Name; 58 } 59 } 60 61 public static class RunningContainersExtensions 62 { 63 public static string Describe(this RunningPod[] runningContainers) 64 { 65 return string.Join(",", runningContainers.Select(c => c.Describe())); 66 } 67 } 68 }