/ Framework / KubernetesWorkflow / Types / RunningPod.cs
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  }