76 lines
2.9 KiB
C#
76 lines
2.9 KiB
C#
|
using DistTestCore;
|
|||
|
using DistTestCore.Codex;
|
|||
|
using DistTestCore.Marketplace;
|
|||
|
using KubernetesWorkflow;
|
|||
|
using Logging;
|
|||
|
|
|||
|
namespace CodexNetDeployer
|
|||
|
{
|
|||
|
public class CodexNodeStarter
|
|||
|
{
|
|||
|
private readonly Configuration config;
|
|||
|
private readonly WorkflowCreator workflowCreator;
|
|||
|
private readonly TestLifecycle lifecycle;
|
|||
|
private readonly BaseLog log;
|
|||
|
private readonly ITimeSet timeSet;
|
|||
|
private readonly GethStartResult gethResult;
|
|||
|
private string bootstrapSpr = "";
|
|||
|
private int validatorsLeft;
|
|||
|
|
|||
|
public CodexNodeStarter(Configuration config, WorkflowCreator workflowCreator, TestLifecycle lifecycle, BaseLog log, ITimeSet timeSet, GethStartResult gethResult, int numberOfValidators)
|
|||
|
{
|
|||
|
this.config = config;
|
|||
|
this.workflowCreator = workflowCreator;
|
|||
|
this.lifecycle = lifecycle;
|
|||
|
this.log = log;
|
|||
|
this.timeSet = timeSet;
|
|||
|
this.gethResult = gethResult;
|
|||
|
this.validatorsLeft = numberOfValidators;
|
|||
|
}
|
|||
|
|
|||
|
public RunningContainer? Start(int i)
|
|||
|
{
|
|||
|
Console.Write($" - {i} = ");
|
|||
|
var workflow = workflowCreator.CreateWorkflow();
|
|||
|
var workflowStartup = new StartupConfig();
|
|||
|
workflowStartup.Add(gethResult);
|
|||
|
workflowStartup.Add(CreateCodexStartupConfig(bootstrapSpr, i, validatorsLeft));
|
|||
|
|
|||
|
var containers = workflow.Start(1, Location.Unspecified, new CodexContainerRecipe(), workflowStartup);
|
|||
|
|
|||
|
var container = containers.Containers.First();
|
|||
|
var address = lifecycle.Configuration.GetAddress(container);
|
|||
|
var codexNode = new CodexNode(log, timeSet, address);
|
|||
|
var debugInfo = codexNode.GetDebugInfo();
|
|||
|
|
|||
|
if (!string.IsNullOrWhiteSpace(debugInfo.spr))
|
|||
|
{
|
|||
|
var pod = container.Pod.PodInfo;
|
|||
|
Console.Write($"Online ({pod.Name} at {pod.Ip} on '{pod.K8SNodeName}')" + Environment.NewLine);
|
|||
|
|
|||
|
if (string.IsNullOrEmpty(bootstrapSpr)) bootstrapSpr = debugInfo.spr;
|
|||
|
validatorsLeft--;
|
|||
|
return container;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Console.Write("Unknown failure." + Environment.NewLine);
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private CodexStartupConfig CreateCodexStartupConfig(string bootstrapSpr, int i, int validatorsLeft)
|
|||
|
{
|
|||
|
var codexStart = new CodexStartupConfig(config.CodexLogLevel);
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(bootstrapSpr)) codexStart.BootstrapSpr = bootstrapSpr;
|
|||
|
codexStart.StorageQuota = config.StorageQuota!.Value.MB();
|
|||
|
var marketplaceConfig = new MarketplaceInitialConfig(100000.Eth(), 0.TestTokens(), validatorsLeft > 0);
|
|||
|
marketplaceConfig.AccountIndexOverride = i;
|
|||
|
codexStart.MarketplaceConfig = marketplaceConfig;
|
|||
|
|
|||
|
return codexStart;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|