2023-03-21 12:20:21 +00:00
|
|
|
|
namespace CodexDistTestCore
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
2023-03-21 14:17:48 +00:00
|
|
|
|
public interface IOfflineCodexNodes
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
2023-03-21 14:17:48 +00:00
|
|
|
|
IOfflineCodexNodes WithLogLevel(CodexLogLevel level);
|
|
|
|
|
IOfflineCodexNodes WithBootstrapNode(IOnlineCodexNode node);
|
|
|
|
|
IOfflineCodexNodes WithStorageQuota(ByteSize storageQuota);
|
|
|
|
|
IOnlineCodexNodes BringOnline();
|
2023-03-19 09:49:03 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum CodexLogLevel
|
|
|
|
|
{
|
|
|
|
|
Trace,
|
|
|
|
|
Debug,
|
|
|
|
|
Info,
|
|
|
|
|
Warn,
|
|
|
|
|
Error
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-21 14:17:48 +00:00
|
|
|
|
public class OfflineCodexNodes : IOfflineCodexNodes
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
|
|
|
|
private readonly IK8sManager k8SManager;
|
2023-03-21 14:17:48 +00:00
|
|
|
|
|
|
|
|
|
public int NumberOfNodes { get; }
|
2023-03-19 09:49:03 +00:00
|
|
|
|
public CodexLogLevel? LogLevel { get; private set; }
|
|
|
|
|
public IOnlineCodexNode? BootstrapNode { get; private set; }
|
2023-03-21 08:20:09 +00:00
|
|
|
|
public ByteSize? StorageQuota { get; private set; }
|
2023-03-19 09:49:03 +00:00
|
|
|
|
|
2023-03-21 14:17:48 +00:00
|
|
|
|
public OfflineCodexNodes(IK8sManager k8SManager, int numberOfNodes)
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
|
|
|
|
this.k8SManager = k8SManager;
|
2023-03-21 14:17:48 +00:00
|
|
|
|
NumberOfNodes = numberOfNodes;
|
2023-03-19 09:49:03 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-03-21 14:17:48 +00:00
|
|
|
|
public IOnlineCodexNodes BringOnline()
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
|
|
|
|
return k8SManager.BringOnline(this);
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-21 14:17:48 +00:00
|
|
|
|
public IOfflineCodexNodes WithBootstrapNode(IOnlineCodexNode node)
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
|
|
|
|
BootstrapNode = node;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-21 14:17:48 +00:00
|
|
|
|
public IOfflineCodexNodes WithLogLevel(CodexLogLevel level)
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
|
|
|
|
LogLevel = level;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-21 14:17:48 +00:00
|
|
|
|
public IOfflineCodexNodes WithStorageQuota(ByteSize storageQuota)
|
2023-03-19 09:49:03 +00:00
|
|
|
|
{
|
2023-03-21 08:20:09 +00:00
|
|
|
|
StorageQuota = storageQuota;
|
2023-03-19 09:49:03 +00:00
|
|
|
|
return this;
|
|
|
|
|
}
|
2023-03-20 10:37:02 +00:00
|
|
|
|
|
|
|
|
|
public string Describe()
|
|
|
|
|
{
|
|
|
|
|
var result = "";
|
|
|
|
|
if (LogLevel != null) result += $"LogLevel={LogLevel},";
|
|
|
|
|
if (BootstrapNode != null) result += "BootstrapNode=set,";
|
2023-03-21 08:20:09 +00:00
|
|
|
|
if (StorageQuota != null) result += $"StorageQuote={StorageQuota.SizeInBytes},";
|
2023-03-20 10:37:02 +00:00
|
|
|
|
return result;
|
|
|
|
|
}
|
2023-03-19 09:49:03 +00:00
|
|
|
|
}
|
|
|
|
|
}
|