2023-04-14 07:54:07 +00:00
|
|
|
|
using KubernetesWorkflow;
|
|
|
|
|
|
|
|
|
|
namespace DistTestCore.Marketplace
|
|
|
|
|
{
|
|
|
|
|
public class GethContainerRecipe : ContainerRecipeFactory
|
|
|
|
|
{
|
2023-05-02 05:16:10 +00:00
|
|
|
|
#if Arm64
|
|
|
|
|
public const string DockerImage = "emizzle/geth-confenv:latest";
|
|
|
|
|
#else
|
|
|
|
|
public const string DockerImage = "thatbenbierens/geth-confenv:latest";
|
|
|
|
|
#endif
|
2023-04-14 08:51:35 +00:00
|
|
|
|
public const string HttpPortTag = "http_port";
|
2023-04-17 08:31:14 +00:00
|
|
|
|
public const string DiscoveryPortTag = "disc_port";
|
2023-04-25 12:58:19 +00:00
|
|
|
|
private const string defaultArgs = "--ipcdisable --syncmode full";
|
2023-04-18 11:22:41 +00:00
|
|
|
|
|
2023-04-26 09:12:33 +00:00
|
|
|
|
public static string GetAccountFilename(int? orderNumber)
|
|
|
|
|
{
|
|
|
|
|
if (orderNumber == null) return "account_string.txt";
|
|
|
|
|
return $"account_string_{orderNumber.Value}.txt";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetPrivateKeyFilename(int? orderNumber)
|
|
|
|
|
{
|
|
|
|
|
if (orderNumber == null) return "private.key";
|
|
|
|
|
return $"private_{orderNumber.Value}.key";
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-14 10:37:05 +00:00
|
|
|
|
protected override string Image => DockerImage;
|
2023-04-14 07:54:07 +00:00
|
|
|
|
|
|
|
|
|
protected override void Initialize(StartupConfig startupConfig)
|
|
|
|
|
{
|
|
|
|
|
var config = startupConfig.Get<GethStartupConfig>();
|
|
|
|
|
|
|
|
|
|
var args = CreateArgs(config);
|
|
|
|
|
|
|
|
|
|
AddEnvVar("GETH_ARGS", args);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string CreateArgs(GethStartupConfig config)
|
|
|
|
|
{
|
2023-04-17 08:31:14 +00:00
|
|
|
|
var discovery = AddInternalPort(tag: DiscoveryPortTag);
|
|
|
|
|
|
2023-04-14 07:54:07 +00:00
|
|
|
|
if (config.IsBootstrapNode)
|
|
|
|
|
{
|
2023-04-21 07:11:45 +00:00
|
|
|
|
return CreateBootstapArgs(discovery);
|
2023-04-14 07:54:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-04-21 07:11:45 +00:00
|
|
|
|
return CreateCompanionArgs(discovery, config);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string CreateBootstapArgs(Port discovery)
|
|
|
|
|
{
|
|
|
|
|
AddEnvVar("IS_BOOTSTRAP", "1");
|
|
|
|
|
var exposedPort = AddExposedPort(tag: HttpPortTag);
|
2023-04-25 12:58:19 +00:00
|
|
|
|
return $"--http.port {exposedPort.Number} --port {discovery.Number} --discovery.port {discovery.Number} {defaultArgs}";
|
2023-04-21 07:11:45 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string CreateCompanionArgs(Port discovery, GethStartupConfig config)
|
|
|
|
|
{
|
2023-04-26 09:12:33 +00:00
|
|
|
|
AddEnvVar("NUMBER_OF_ACCOUNTS", config.NumberOfCompanionAccounts.ToString());
|
|
|
|
|
|
2023-04-14 07:54:07 +00:00
|
|
|
|
var port = AddInternalPort();
|
|
|
|
|
var authRpc = AddInternalPort();
|
2023-04-24 12:09:23 +00:00
|
|
|
|
var httpPort = AddExposedPort(tag: HttpPortTag);
|
2023-04-17 08:31:14 +00:00
|
|
|
|
|
|
|
|
|
var bootPubKey = config.BootstrapNode.PubKey;
|
|
|
|
|
var bootIp = config.BootstrapNode.RunningContainers.Containers[0].Pod.Ip;
|
|
|
|
|
var bootPort = config.BootstrapNode.DiscoveryPort.Number;
|
2023-04-25 12:58:19 +00:00
|
|
|
|
var bootstrapArg = $"--bootnodes enode://{bootPubKey}@{bootIp}:{bootPort} --nat=extip:{bootIp}";
|
2023-04-17 08:31:14 +00:00
|
|
|
|
|
2023-04-25 12:58:19 +00:00
|
|
|
|
return $"--port {port.Number} --discovery.port {discovery.Number} --authrpc.port {authRpc.Number} --http.addr 0.0.0.0 --http.port {httpPort.Number} --ws --ws.addr 0.0.0.0 --ws.port {httpPort.Number} {bootstrapArg} {defaultArgs}";
|
2023-04-14 07:54:07 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|