WorkflowCreator.cs
1 using Logging; 2 using Utils; 3 4 namespace KubernetesWorkflow 5 { 6 public class WorkflowCreator 7 { 8 private readonly NumberSource numberSource = new NumberSource(0); 9 private readonly NumberSource containerNumberSource = new NumberSource(0); 10 private readonly K8sCluster cluster; 11 private readonly ILog log; 12 private readonly Configuration configuration; 13 private readonly string k8sNamespace; 14 15 public WorkflowCreator(ILog log, Configuration configuration) 16 { 17 this.log = log; 18 this.configuration = configuration; 19 cluster = new K8sCluster(configuration); 20 k8sNamespace = configuration.KubernetesNamespace.ToLowerInvariant(); 21 } 22 23 public IStartupWorkflow CreateWorkflow(string? namespaceOverride = null) 24 { 25 var workflowNumberSource = new WorkflowNumberSource(numberSource.GetNextNumber(), 26 containerNumberSource); 27 28 return new StartupWorkflow(log, workflowNumberSource, cluster, GetNamespace(namespaceOverride)); 29 } 30 31 private string GetNamespace(string? namespaceOverride) 32 { 33 if (namespaceOverride != null) 34 { 35 if (!configuration.AllowNamespaceOverride) throw new Exception("Namespace override is not allowed."); 36 return namespaceOverride; 37 } 38 return k8sNamespace; 39 } 40 } 41 }