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

54 lines
1.8 KiB
C#
Raw Normal View History

using CodexPlugin.Hooks;
using Core;
2023-09-19 09:51:59 +00:00
using GethPlugin;
2023-09-20 10:55:09 +00:00
using KubernetesWorkflow;
using KubernetesWorkflow.Types;
2023-09-12 09:43:46 +00:00
namespace CodexPlugin
{
public interface ICodexNodeFactory
{
2023-09-19 09:51:59 +00:00
CodexNode CreateOnlineCodexNode(CodexAccess access, CodexNodeGroup group);
2023-09-20 10:55:09 +00:00
CrashWatcher CreateCrashWatcher(RunningContainer c);
}
public class CodexNodeFactory : ICodexNodeFactory
{
2023-09-12 09:43:46 +00:00
private readonly IPluginTools tools;
private readonly CodexHooksFactory codexHooksFactory;
2023-09-12 09:43:46 +00:00
public CodexNodeFactory(IPluginTools tools, CodexHooksFactory codexHooksFactory)
2023-09-12 09:43:46 +00:00
{
this.tools = tools;
this.codexHooksFactory = codexHooksFactory;
2023-09-12 09:43:46 +00:00
}
2023-09-19 09:51:59 +00:00
public CodexNode CreateOnlineCodexNode(CodexAccess access, CodexNodeGroup group)
2023-09-11 14:57:57 +00:00
{
2024-05-24 13:34:42 +00:00
var ethAccount = GetEthAccount(access);
var hooks = codexHooksFactory.CreateHooks(access.Container.Name);
var marketplaceAccess = GetMarketplaceAccess(access, ethAccount, hooks);
return new CodexNode(tools, access, group, marketplaceAccess, hooks, ethAccount);
2023-09-20 06:45:55 +00:00
}
private IMarketplaceAccess GetMarketplaceAccess(CodexAccess codexAccess, EthAccount? ethAccount, ICodexNodeHooks hooks)
2023-09-20 06:45:55 +00:00
{
2024-05-24 13:34:42 +00:00
if (ethAccount == null) return new MarketplaceUnavailable();
return new MarketplaceAccess(tools.GetLog(), codexAccess, hooks);
2023-09-19 09:51:59 +00:00
}
2024-05-24 13:34:42 +00:00
private EthAccount? GetEthAccount(CodexAccess access)
2023-09-19 09:51:59 +00:00
{
2024-04-13 14:09:17 +00:00
var ethAccount = access.Container.Containers.Single().Recipe.Additionals.Get<EthAccount>();
if (ethAccount == null) return null;
2024-05-24 13:34:42 +00:00
return ethAccount;
2023-09-11 14:57:57 +00:00
}
2023-09-20 10:55:09 +00:00
public CrashWatcher CreateCrashWatcher(RunningContainer c)
{
return tools.CreateWorkflow().CreateCrashWatcher(c);
}
}
}