2
0
mirror of synced 2025-02-09 23:23:31 +00:00

97 lines
2.9 KiB
C#
Raw Normal View History

2023-09-13 10:03:11 +02:00
using FileUtils;
using KubernetesWorkflow;
using Logging;
2025-01-16 11:31:50 +01:00
using WebUtils;
2023-09-13 10:03:11 +02:00
namespace Core
{
2025-01-16 11:31:50 +01:00
public interface IPluginTools : IWorkflowTool, ILogTool, IHttpFactory, IFileTool
{
2025-01-16 11:31:50 +01:00
IWebCallTimeSet WebCallTimeSet { get; }
IK8sTimeSet K8STimeSet { get; }
/// <summary>
/// Deletes kubernetes and tracked file resources.
/// when `waitTillDone` is true, this function will block until resources are deleted.
/// </summary>
void Decommission(bool deleteKubernetesResources, bool deleteTrackedFiles, bool waitTillDone);
}
public interface IWorkflowTool
{
IStartupWorkflow CreateWorkflow(string? namespaceOverride = null);
}
public interface ILogTool
{
ILog GetLog();
}
public interface IFileTool
{
IFileManager GetFileManager();
}
internal class PluginTools : IPluginTools
2023-09-13 10:03:11 +02:00
{
private readonly WorkflowCreator workflowCreator;
2025-01-16 11:31:50 +01:00
private readonly HttpFactory httpFactory;
2023-09-13 10:03:11 +02:00
private readonly IFileManager fileManager;
2024-03-27 08:41:18 +01:00
private readonly LogPrefixer log;
2023-09-13 10:03:11 +02:00
2025-01-16 11:31:50 +01:00
internal PluginTools(ILog log, WorkflowCreator workflowCreator, string fileManagerRootFolder, IWebCallTimeSet webCallTimeSet, IK8sTimeSet k8STimeSet)
2023-09-13 10:03:11 +02:00
{
2024-03-27 08:41:18 +01:00
this.log = new LogPrefixer(log);
2023-09-13 11:59:21 +02:00
this.workflowCreator = workflowCreator;
2025-01-16 11:31:50 +01:00
httpFactory = new HttpFactory(log, webCallTimeSet);
WebCallTimeSet = webCallTimeSet;
K8STimeSet = k8STimeSet;
2023-09-13 10:03:11 +02:00
fileManager = new FileManager(log, fileManagerRootFolder);
}
2025-01-16 11:31:50 +01:00
public IWebCallTimeSet WebCallTimeSet { get; }
public IK8sTimeSet K8STimeSet { get; }
public void ApplyLogPrefix(string prefix)
{
2024-03-27 08:41:18 +01:00
log.Prefix = prefix;
}
2024-07-25 10:10:11 +02:00
public IHttp CreateHttp(string id, Action<HttpClient> onClientCreated)
2023-09-13 10:03:11 +02:00
{
2025-01-16 11:31:50 +01:00
return httpFactory.CreateHttp(id, onClientCreated);
}
2025-01-16 11:31:50 +01:00
public IHttp CreateHttp(string id, Action<HttpClient> onClientCreated, IWebCallTimeSet timeSet)
{
2025-01-16 11:31:50 +01:00
return httpFactory.CreateHttp(id, onClientCreated, timeSet);
2023-09-13 10:03:11 +02:00
}
2024-07-25 10:10:11 +02:00
public IHttp CreateHttp(string id)
2023-09-13 10:03:11 +02:00
{
2025-01-16 11:31:50 +01:00
return httpFactory.CreateHttp(id);
2023-09-13 10:03:11 +02:00
}
public IStartupWorkflow CreateWorkflow(string? namespaceOverride = null)
{
return workflowCreator.CreateWorkflow(namespaceOverride);
2023-09-13 10:03:11 +02:00
}
public void Decommission(bool deleteKubernetesResources, bool deleteTrackedFiles, bool waitTillDone)
2023-09-21 10:33:09 +02:00
{
if (deleteKubernetesResources) CreateWorkflow().DeleteNamespace(waitTillDone);
2023-09-21 10:33:09 +02:00
if (deleteTrackedFiles) fileManager.DeleteAllFiles();
}
2023-09-13 10:03:11 +02:00
public IFileManager GetFileManager()
{
return fileManager;
}
public ILog GetLog()
{
return log;
}
}
}