mirror of
https://github.com/logos-storage/logos-storage-nim-cs-dist-tests.git
synced 2026-01-08 16:33:07 +00:00
Replaces Pod types on codex plugin and starter interface
This commit is contained in:
parent
2586f4a756
commit
940b8122e7
@ -1,7 +1,6 @@
|
||||
using CodexClient;
|
||||
using CodexClient.Hooks;
|
||||
using Core;
|
||||
using KubernetesWorkflow.Types;
|
||||
|
||||
namespace CodexPlugin
|
||||
{
|
||||
@ -34,16 +33,16 @@ namespace CodexPlugin
|
||||
{
|
||||
}
|
||||
|
||||
public RunningPod[] DeployCodexNodes(int numberOfNodes, Action<ICodexSetup> setup)
|
||||
public ICodexInstance[] DeployCodexNodes(int numberOfNodes, Action<ICodexSetup> setup)
|
||||
{
|
||||
var codexSetup = GetSetup(numberOfNodes, setup);
|
||||
return codexStarter.BringOnline(codexSetup);
|
||||
}
|
||||
|
||||
public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, RunningPod[] containers)
|
||||
public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, ICodexInstance[] instances)
|
||||
{
|
||||
containers = containers.Select(c => SerializeGate.Gate(c)).ToArray();
|
||||
return codexStarter.WrapCodexContainers(coreInterface, containers);
|
||||
instances = instances.Select(c => SerializeGate.Gate(c as CodexInstance)).ToArray();
|
||||
return codexStarter.WrapCodexContainers(coreInterface, instances);
|
||||
}
|
||||
|
||||
public void WireUpMarketplace(ICodexNodeGroup result, Action<ICodexSetup> setup)
|
||||
|
||||
@ -13,7 +13,7 @@ namespace CodexPlugin
|
||||
private readonly IPluginTools pluginTools;
|
||||
private readonly CodexContainerRecipe recipe = new CodexContainerRecipe();
|
||||
private readonly ApiChecker apiChecker;
|
||||
private readonly Dictionary<ICodexInstance, RunningPod> podMap = new Dictionary<ICodexInstance, RunningPod>();
|
||||
private readonly Dictionary<string, CodexContainerProcessControl> processControlMap = new Dictionary<string, CodexContainerProcessControl>();
|
||||
private DebugInfoVersion? versionResponse;
|
||||
|
||||
public CodexStarter(IPluginTools pluginTools)
|
||||
@ -27,14 +27,10 @@ namespace CodexPlugin
|
||||
|
||||
public IProcessControl CreateProcessControl(ICodexInstance instance)
|
||||
{
|
||||
var pod = podMap[instance];
|
||||
return new CodexContainerProcessControl(pluginTools, pod, onStop: () =>
|
||||
{
|
||||
podMap.Remove(instance);
|
||||
});
|
||||
return processControlMap[instance.Name];
|
||||
}
|
||||
|
||||
public RunningPod[] BringOnline(CodexSetup codexSetup)
|
||||
public ICodexInstance[] BringOnline(CodexSetup codexSetup)
|
||||
{
|
||||
LogSeparator();
|
||||
Log($"Starting {codexSetup.Describe()}...");
|
||||
@ -54,10 +50,10 @@ namespace CodexPlugin
|
||||
}
|
||||
LogSeparator();
|
||||
|
||||
return containers;
|
||||
return containers.Select(CreateInstance).ToArray();
|
||||
}
|
||||
|
||||
public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, RunningPod[] containers)
|
||||
public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, ICodexInstance[] instances)
|
||||
{
|
||||
var codexNodeFactory = new CodexNodeFactory(
|
||||
log: pluginTools.GetLog(),
|
||||
@ -66,7 +62,7 @@ namespace CodexPlugin
|
||||
httpFactory: pluginTools,
|
||||
processControlFactory: this);
|
||||
|
||||
var group = CreateCodexGroup(coreInterface, containers, codexNodeFactory);
|
||||
var group = CreateCodexGroup(coreInterface, instances, codexNodeFactory);
|
||||
|
||||
Log($"Codex version: {group.Version}");
|
||||
versionResponse = group.Version;
|
||||
@ -114,9 +110,8 @@ namespace CodexPlugin
|
||||
return workflow.GetPodInfo(rc);
|
||||
}
|
||||
|
||||
private CodexNodeGroup CreateCodexGroup(CoreInterface coreInterface, RunningPod[] runningContainers, CodexNodeFactory codexNodeFactory)
|
||||
private CodexNodeGroup CreateCodexGroup(CoreInterface coreInterface, ICodexInstance[] instances, CodexNodeFactory codexNodeFactory)
|
||||
{
|
||||
var instances = runningContainers.Select(CreateInstance).ToArray();
|
||||
var nodes = instances.Select(codexNodeFactory.CreateCodexNode).ToArray();
|
||||
var group = new CodexNodeGroup(pluginTools, nodes);
|
||||
|
||||
@ -126,7 +121,7 @@ namespace CodexPlugin
|
||||
}
|
||||
catch
|
||||
{
|
||||
CodexNodesNotOnline(coreInterface, runningContainers);
|
||||
CodexNodesNotOnline(coreInterface, instances);
|
||||
throw;
|
||||
}
|
||||
|
||||
@ -136,14 +131,23 @@ namespace CodexPlugin
|
||||
private ICodexInstance CreateInstance(RunningPod pod)
|
||||
{
|
||||
var instance = CodexInstanceContainerExtension.CreateFromPod(pod);
|
||||
podMap.Add(instance, pod);
|
||||
var processControl = new CodexContainerProcessControl(pluginTools, pod, onStop: () =>
|
||||
{
|
||||
processControlMap.Remove(instance.Name);
|
||||
});
|
||||
processControlMap.Add(instance.Name, processControl);
|
||||
return instance;
|
||||
}
|
||||
|
||||
private void CodexNodesNotOnline(CoreInterface coreInterface, RunningPod[] runningContainers)
|
||||
private void CodexNodesNotOnline(CoreInterface coreInterface, ICodexInstance[] instances)
|
||||
{
|
||||
Log("Codex nodes failed to start");
|
||||
foreach (var container in runningContainers.First().Containers) coreInterface.DownloadLog(container);
|
||||
var log = pluginTools.GetLog();
|
||||
foreach (var i in instances)
|
||||
{
|
||||
var pc = processControlMap[i.Name];
|
||||
pc.DownloadLog(log.CreateSubfile(i.Name + "_failed_to_start"));
|
||||
}
|
||||
}
|
||||
|
||||
private void LogSeparator()
|
||||
|
||||
@ -1,20 +1,19 @@
|
||||
using CodexClient;
|
||||
using CodexClient.Hooks;
|
||||
using Core;
|
||||
using KubernetesWorkflow.Types;
|
||||
|
||||
namespace CodexPlugin
|
||||
{
|
||||
public static class CoreInterfaceExtensions
|
||||
{
|
||||
public static RunningPod[] DeployCodexNodes(this CoreInterface ci, int number, Action<ICodexSetup> setup)
|
||||
public static ICodexInstance[] DeployCodexNodes(this CoreInterface ci, int number, Action<ICodexSetup> setup)
|
||||
{
|
||||
return Plugin(ci).DeployCodexNodes(number, setup);
|
||||
}
|
||||
|
||||
public static ICodexNodeGroup WrapCodexContainers(this CoreInterface ci, RunningPod[] containers)
|
||||
public static ICodexNodeGroup WrapCodexContainers(this CoreInterface ci, ICodexInstance[] instances)
|
||||
{
|
||||
return Plugin(ci).WrapCodexContainers(ci, containers);
|
||||
return Plugin(ci).WrapCodexContainers(ci, instances);
|
||||
}
|
||||
|
||||
public static ICodexNode StartCodexNode(this CoreInterface ci)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user