From d6afc6874b041511771f937fc416741c0979a15c Mon Sep 17 00:00:00 2001 From: ThatBen Date: Mon, 27 Jan 2025 09:59:19 +0100 Subject: [PATCH] Applies codexStarter interface --- ProjectPlugins/CodexPlugin/CodexPlugin.cs | 11 +++++----- ...dexStarter.cs => ContainerCodexStarter.cs} | 21 +++++++++---------- .../CodexPlugin/CoreInterfaceExtensions.cs | 2 +- ProjectPlugins/CodexPlugin/ICodexStarter.cs | 12 +++++++++++ 4 files changed, 29 insertions(+), 17 deletions(-) rename ProjectPlugins/CodexPlugin/{CodexStarter.cs => ContainerCodexStarter.cs} (90%) create mode 100644 ProjectPlugins/CodexPlugin/ICodexStarter.cs diff --git a/ProjectPlugins/CodexPlugin/CodexPlugin.cs b/ProjectPlugins/CodexPlugin/CodexPlugin.cs index 57e68d09..5c33754e 100644 --- a/ProjectPlugins/CodexPlugin/CodexPlugin.cs +++ b/ProjectPlugins/CodexPlugin/CodexPlugin.cs @@ -6,13 +6,14 @@ namespace CodexPlugin { public class CodexPlugin : IProjectPlugin, IHasLogPrefix, IHasMetadata { - private readonly CodexStarter codexStarter; + private readonly ICodexStarter codexStarter; private readonly IPluginTools tools; private readonly CodexLogLevel defaultLogLevel = CodexLogLevel.Trace; + private readonly CodexHooksFactory hooksFactory = new CodexHooksFactory(); public CodexPlugin(IPluginTools tools) { - codexStarter = new CodexStarter(tools); + codexStarter = new ContainerCodexStarter(tools, hooksFactory); this.tools = tools; } @@ -39,10 +40,10 @@ namespace CodexPlugin return codexStarter.BringOnline(codexSetup); } - public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, ICodexInstance[] instances) + public ICodexNodeGroup WrapCodexContainers(ICodexInstance[] instances) { instances = instances.Select(c => SerializeGate.Gate(c as CodexInstance)).ToArray(); - return codexStarter.WrapCodexContainers(coreInterface, instances); + return codexStarter.WrapCodexContainers(instances); } public void WireUpMarketplace(ICodexNodeGroup result, Action setup) @@ -64,7 +65,7 @@ namespace CodexPlugin public void SetCodexHooksProvider(ICodexHooksProvider hooksProvider) { - codexStarter.HooksFactory.Provider = hooksProvider; + hooksFactory.Provider = hooksProvider; } private CodexSetup GetSetup(int numberOfNodes, Action setup) diff --git a/ProjectPlugins/CodexPlugin/CodexStarter.cs b/ProjectPlugins/CodexPlugin/ContainerCodexStarter.cs similarity index 90% rename from ProjectPlugins/CodexPlugin/CodexStarter.cs rename to ProjectPlugins/CodexPlugin/ContainerCodexStarter.cs index 08c31efd..f40d8115 100644 --- a/ProjectPlugins/CodexPlugin/CodexStarter.cs +++ b/ProjectPlugins/CodexPlugin/ContainerCodexStarter.cs @@ -8,23 +8,22 @@ using Utils; namespace CodexPlugin { - public class CodexStarter : IProcessControlFactory + public class ContainerCodexStarter : ICodexStarter { private readonly IPluginTools pluginTools; + private readonly CodexHooksFactory hooksFactory; private readonly CodexContainerRecipe recipe = new CodexContainerRecipe(); private readonly ApiChecker apiChecker; private readonly Dictionary processControlMap = new Dictionary(); private DebugInfoVersion? versionResponse; - public CodexStarter(IPluginTools pluginTools) + public ContainerCodexStarter(IPluginTools pluginTools, CodexHooksFactory hooksFactory) { this.pluginTools = pluginTools; - + this.hooksFactory = hooksFactory; apiChecker = new ApiChecker(pluginTools); } - public CodexHooksFactory HooksFactory { get; } = new CodexHooksFactory(); - public IProcessControl CreateProcessControl(ICodexInstance instance) { return processControlMap[instance.Name]; @@ -53,16 +52,16 @@ namespace CodexPlugin return containers.Select(CreateInstance).ToArray(); } - public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, ICodexInstance[] instances) + public ICodexNodeGroup WrapCodexContainers(ICodexInstance[] instances) { var codexNodeFactory = new CodexNodeFactory( log: pluginTools.GetLog(), fileManager: pluginTools.GetFileManager(), - hooksFactory: HooksFactory, + hooksFactory: hooksFactory, httpFactory: pluginTools, processControlFactory: this); - var group = CreateCodexGroup(coreInterface, instances, codexNodeFactory); + var group = CreateCodexGroup(instances, codexNodeFactory); Log($"Codex version: {group.Version}"); versionResponse = group.Version; @@ -110,7 +109,7 @@ namespace CodexPlugin return workflow.GetPodInfo(rc); } - private CodexNodeGroup CreateCodexGroup(CoreInterface coreInterface, ICodexInstance[] instances, CodexNodeFactory codexNodeFactory) + private CodexNodeGroup CreateCodexGroup(ICodexInstance[] instances, CodexNodeFactory codexNodeFactory) { var nodes = instances.Select(codexNodeFactory.CreateCodexNode).ToArray(); var group = new CodexNodeGroup(pluginTools, nodes); @@ -121,7 +120,7 @@ namespace CodexPlugin } catch { - CodexNodesNotOnline(coreInterface, instances); + CodexNodesNotOnline(instances); throw; } @@ -139,7 +138,7 @@ namespace CodexPlugin return instance; } - private void CodexNodesNotOnline(CoreInterface coreInterface, ICodexInstance[] instances) + private void CodexNodesNotOnline(ICodexInstance[] instances) { Log("Codex nodes failed to start"); var log = pluginTools.GetLog(); diff --git a/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs b/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs index 3542e52c..06b9246e 100644 --- a/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs +++ b/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs @@ -13,7 +13,7 @@ namespace CodexPlugin public static ICodexNodeGroup WrapCodexContainers(this CoreInterface ci, ICodexInstance[] instances) { - return Plugin(ci).WrapCodexContainers(ci, instances); + return Plugin(ci).WrapCodexContainers(instances); } public static ICodexNode StartCodexNode(this CoreInterface ci) diff --git a/ProjectPlugins/CodexPlugin/ICodexStarter.cs b/ProjectPlugins/CodexPlugin/ICodexStarter.cs new file mode 100644 index 00000000..5becf6a3 --- /dev/null +++ b/ProjectPlugins/CodexPlugin/ICodexStarter.cs @@ -0,0 +1,12 @@ +using CodexClient; + +namespace CodexPlugin +{ + public interface ICodexStarter : IProcessControlFactory + { + string GetCodexId(); + string GetCodexRevision(); + ICodexInstance[] BringOnline(CodexSetup codexSetup); + ICodexNodeGroup WrapCodexContainers(ICodexInstance[] instances); + } +}