cs-codex-dist-tests/ProjectPlugins/CodexPlugin/CodexPlugin.cs

71 lines
2.4 KiB
C#
Raw Normal View History

using Core;
using KubernetesWorkflow.Types;
2023-09-11 14:57:57 +00:00
namespace CodexPlugin
{
2023-09-13 14:06:05 +00:00
public class CodexPlugin : IProjectPlugin, IHasLogPrefix, IHasMetadata
2023-09-11 14:57:57 +00:00
{
2023-09-13 08:03:11 +00:00
private readonly CodexStarter codexStarter;
private readonly IPluginTools tools;
private readonly CodexLogLevel defaultLogLevel = CodexLogLevel.Trace;
2023-09-11 14:57:57 +00:00
2024-03-25 14:46:45 +00:00
private const string OpenApiYamlHash = "8B-DD-61-54-42-D7-28-8F-5A-A0-AF-C2-A4-53-A7-08-B6-C7-02-FD-59-1A-01-A9-B4-7D-E4-81-FA-84-23-7F";
2023-09-13 08:03:11 +00:00
public CodexPlugin(IPluginTools tools)
2023-09-11 14:57:57 +00:00
{
2023-09-13 08:03:11 +00:00
codexStarter = new CodexStarter(tools);
this.tools = tools;
2023-09-12 08:31:55 +00:00
}
public string LogPrefix => "(Codex) ";
2023-09-13 08:03:11 +00:00
public void Announce()
2023-09-12 08:31:55 +00:00
{
2023-11-13 08:37:45 +00:00
tools.GetLog().Log($"Loaded with Codex ID: '{codexStarter.GetCodexId()}' - Revision: {codexStarter.GetCodexRevision()}");
2023-09-13 14:06:05 +00:00
}
public void AddMetadata(IAddMetadata metadata)
{
metadata.Add("codexid", codexStarter.GetCodexId());
2023-11-13 08:37:45 +00:00
metadata.Add("codexrevision", codexStarter.GetCodexRevision());
2023-09-11 14:57:57 +00:00
}
2023-09-13 08:03:11 +00:00
public void Decommission()
2023-09-12 08:31:55 +00:00
{
}
2023-09-20 10:02:32 +00:00
public RunningContainers[] DeployCodexNodes(int numberOfNodes, Action<ICodexSetup> setup)
2023-09-11 14:57:57 +00:00
{
2023-09-20 06:45:55 +00:00
var codexSetup = GetSetup(numberOfNodes, setup);
2023-09-11 14:57:57 +00:00
return codexStarter.BringOnline(codexSetup);
}
2023-09-19 11:58:45 +00:00
public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, RunningContainers[] containers)
2023-09-11 14:57:57 +00:00
{
2023-09-20 08:13:29 +00:00
containers = containers.Select(c => SerializeGate.Gate(c)).ToArray();
return codexStarter.WrapCodexContainers(coreInterface, containers);
2023-09-11 14:57:57 +00:00
}
2023-09-20 06:45:55 +00:00
public void WireUpMarketplace(ICodexNodeGroup result, Action<ICodexSetup> setup)
{
var codexSetup = GetSetup(1, setup);
if (codexSetup.MarketplaceConfig == null) return;
var mconfig = codexSetup.MarketplaceConfig;
foreach (var node in result)
{
mconfig.GethNode.SendEth(node, mconfig.InitialEth);
2023-10-30 12:30:14 +00:00
mconfig.CodexContracts.MintTestTokens(node, mconfig.InitialTokens);
2023-09-20 06:45:55 +00:00
}
}
private CodexSetup GetSetup(int numberOfNodes, Action<ICodexSetup> setup)
{
var codexSetup = new CodexSetup(numberOfNodes);
codexSetup.LogLevel = defaultLogLevel;
setup(codexSetup);
return codexSetup;
}
2023-09-11 14:57:57 +00:00
}
}