PluginTools.cs
1 using FileUtils; 2 using KubernetesWorkflow; 3 using Logging; 4 using WebUtils; 5 6 namespace Core 7 { 8 public interface IPluginTools : IWorkflowTool, ILogTool, IHttpFactory, IFileTool 9 { 10 IK8sTimeSet K8STimeSet { get; } 11 12 /// <summary> 13 /// Deletes kubernetes and tracked file resources. 14 /// when `waitTillDone` is true, this function will block until resources are deleted. 15 /// </summary> 16 void Decommission(bool deleteKubernetesResources, bool deleteTrackedFiles, bool waitTillDone); 17 } 18 19 public interface IWorkflowTool 20 { 21 IStartupWorkflow CreateWorkflow(string? namespaceOverride = null); 22 } 23 24 public interface ILogTool 25 { 26 ILog GetLog(); 27 } 28 29 public interface IFileTool 30 { 31 IFileManager GetFileManager(); 32 } 33 34 internal class PluginTools : IPluginTools 35 { 36 private readonly WorkflowCreator workflowCreator; 37 private readonly HttpFactory httpFactory; 38 private readonly IFileManager fileManager; 39 private readonly LogPrefixer log; 40 41 internal PluginTools(ILog log, WorkflowCreator workflowCreator, string fileManagerRootFolder, IWebCallTimeSet webCallTimeSet, IK8sTimeSet k8STimeSet) 42 { 43 this.log = new LogPrefixer(log); 44 this.workflowCreator = workflowCreator; 45 httpFactory = new HttpFactory(log, webCallTimeSet); 46 WebCallTimeSet = webCallTimeSet; 47 K8STimeSet = k8STimeSet; 48 fileManager = new FileManager(log, fileManagerRootFolder); 49 } 50 51 public IWebCallTimeSet WebCallTimeSet { get; } 52 public IK8sTimeSet K8STimeSet { get; } 53 54 public void ApplyLogPrefix(string prefix) 55 { 56 log.Prefix = prefix; 57 } 58 59 public IHttp CreateHttp(string id, Action<HttpClient> onClientCreated) 60 { 61 return httpFactory.CreateHttp(id, onClientCreated); 62 } 63 64 public IHttp CreateHttp(string id, Action<HttpClient> onClientCreated, IWebCallTimeSet timeSet) 65 { 66 return httpFactory.CreateHttp(id, onClientCreated, timeSet); 67 } 68 69 public IHttp CreateHttp(string id) 70 { 71 return httpFactory.CreateHttp(id); 72 } 73 74 public IStartupWorkflow CreateWorkflow(string? namespaceOverride = null) 75 { 76 return workflowCreator.CreateWorkflow(namespaceOverride); 77 } 78 79 public void Decommission(bool deleteKubernetesResources, bool deleteTrackedFiles, bool waitTillDone) 80 { 81 if (deleteKubernetesResources) CreateWorkflow().DeleteNamespace(waitTillDone); 82 if (deleteTrackedFiles) fileManager.DeleteAllFiles(); 83 } 84 85 public IFileManager GetFileManager() 86 { 87 return fileManager; 88 } 89 90 public ILog GetLog() 91 { 92 return log; 93 } 94 } 95 }