mirror of
https://github.com/logos-storage/logos-storage-nim-cs-dist-tests.git
synced 2026-01-04 06:23:09 +00:00
Applies codexStarter interface
This commit is contained in:
parent
940b8122e7
commit
d6afc6874b
@ -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)
|
||||
|
||||
@ -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();
|
||||
@ -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)
|
||||
|
||||
12
ProjectPlugins/CodexPlugin/ICodexStarter.cs
Normal file
12
ProjectPlugins/CodexPlugin/ICodexStarter.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user