Applies codexStarter interface

This commit is contained in:
ThatBen 2025-01-27 09:59:19 +01:00
parent 940b8122e7
commit d6afc6874b
No known key found for this signature in database
GPG Key ID: 62C543548433D43E
4 changed files with 29 additions and 17 deletions

View File

@ -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<ICodexSetup> 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<ICodexSetup> setup)

View File

@ -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<string, CodexContainerProcessControl> processControlMap = new Dictionary<string, CodexContainerProcessControl>();
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();

View File

@ -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)

View File

@ -0,0 +1,12 @@
using CodexClient;
namespace CodexPlugin
{
public interface ICodexStarter : IProcessControlFactory
{
string GetCodexId();
string GetCodexRevision();
ICodexInstance[] BringOnline(CodexSetup codexSetup);
ICodexNodeGroup WrapCodexContainers(ICodexInstance[] instances);
}
}