diff --git a/ProjectPlugins/CodexPlugin/CodexDeployment.cs b/ProjectPlugins/CodexPlugin/CodexDeployment.cs index 25224e6..f1b8f3b 100644 --- a/ProjectPlugins/CodexPlugin/CodexDeployment.cs +++ b/ProjectPlugins/CodexPlugin/CodexDeployment.cs @@ -6,9 +6,9 @@ namespace CodexPlugin { public class CodexDeployment { - public CodexDeployment(RunningContainer[] codexContainers, GethDeployment gethDeployment, CodexContractsDeployment codexContractsDeployment, RunningContainer? prometheusContainer, RunningContainer? discordBotContainer, DeploymentMetadata metadata) + public CodexDeployment(CodexInstance[] codexInstances, GethDeployment gethDeployment, CodexContractsDeployment codexContractsDeployment, RunningContainer? prometheusContainer, RunningContainer? discordBotContainer, DeploymentMetadata metadata) { - CodexContainers = codexContainers; + CodexInstances = codexInstances; GethDeployment = gethDeployment; CodexContractsDeployment = codexContractsDeployment; PrometheusContainer = prometheusContainer; @@ -16,7 +16,7 @@ namespace CodexPlugin Metadata = metadata; } - public RunningContainer[] CodexContainers { get; } + public CodexInstance[] CodexInstances { get; } public GethDeployment GethDeployment { get; } public CodexContractsDeployment CodexContractsDeployment { get; } public RunningContainer? PrometheusContainer { get; } @@ -24,6 +24,18 @@ namespace CodexPlugin public DeploymentMetadata Metadata { get; } } + public class CodexInstance + { + public CodexInstance(RunningContainer container, CodexDebugResponse info) + { + Container = container; + Info = info; + } + + public RunningContainer Container { get; } + public CodexDebugResponse Info { get; } + } + public class DeploymentMetadata { public DeploymentMetadata(string name, DateTime startUtc, DateTime finishedUtc, string kubeNamespace, int numberOfCodexNodes, int numberOfValidators, int storageQuotaMB, CodexLogLevel codexLogLevel, int initialTestTokens, int minPrice, int maxCollateral, int maxDuration, int blockTTL, int blockMI, int blockMN) diff --git a/Tests/CodexContinuousTests/SingleTestRun.cs b/Tests/CodexContinuousTests/SingleTestRun.cs index b3a4988..dc3ffcf 100644 --- a/Tests/CodexContinuousTests/SingleTestRun.cs +++ b/Tests/CodexContinuousTests/SingleTestRun.cs @@ -247,9 +247,9 @@ namespace ContinuousTests private RunningContainer[] SelectRandomContainers() { var number = handle.Test.RequiredNumberOfNodes; - if (number == -1) return config.CodexDeployment.CodexContainers; + var containers = config.CodexDeployment.CodexInstances.Select(i => i.Container).ToList(); + if (number == -1) return containers.ToArray(); - var containers = config.CodexDeployment.CodexContainers.ToList(); var result = new RunningContainer[number]; for (var i = 0; i < number; i++) { diff --git a/Tests/CodexContinuousTests/StartupChecker.cs b/Tests/CodexContinuousTests/StartupChecker.cs index a6e539d..3234aed 100644 --- a/Tests/CodexContinuousTests/StartupChecker.cs +++ b/Tests/CodexContinuousTests/StartupChecker.cs @@ -39,8 +39,9 @@ namespace ContinuousTests { log.Log(""); var deployment = config.CodexDeployment; - foreach (var container in deployment.CodexContainers) + foreach (var instance in deployment.CodexInstances) { + var container = instance.Container; log.Log($"Codex environment variables for '{container.Name}':"); log.Log($"Pod name: {container.Pod.PodInfo.Name} - Deployment name: {container.Pod.DeploymentName}"); var codexVars = container.Recipe.EnvVars; @@ -81,7 +82,7 @@ namespace ContinuousTests private void CheckCodexNodes(BaseLog log, Configuration config) { - var nodes = entryPoint.CreateInterface().WrapCodexContainers(config.CodexDeployment.CodexContainers); + var nodes = entryPoint.CreateInterface().WrapCodexContainers(config.CodexDeployment.CodexInstances.Select(i => i.Container).ToArray()); var pass = true; foreach (var n in nodes) { @@ -166,9 +167,9 @@ namespace ContinuousTests { errors.Add($"Test '{test.Name}' requires {test.RequiredNumberOfNodes} nodes. Test must require > 0 nodes, or -1 to select all nodes."); } - else if (test.RequiredNumberOfNodes > config.CodexDeployment.CodexContainers.Length) + else if (test.RequiredNumberOfNodes > config.CodexDeployment.CodexInstances.Length) { - errors.Add($"Test '{test.Name}' requires {test.RequiredNumberOfNodes} nodes. Deployment only has {config.CodexDeployment.CodexContainers.Length}"); + errors.Add($"Test '{test.Name}' requires {test.RequiredNumberOfNodes} nodes. Deployment only has {config.CodexDeployment.CodexInstances.Length}"); } } } diff --git a/Tools/CodexNetDeployer/Deployer.cs b/Tools/CodexNetDeployer/Deployer.cs index 359adae..51edaab 100644 --- a/Tools/CodexNetDeployer/Deployer.cs +++ b/Tools/CodexNetDeployer/Deployer.cs @@ -80,26 +80,11 @@ namespace CodexNetDeployer CheckPeerConnectivity(startResults); CheckContainerRestarts(startResults); - var codexContainers = startResults.Select(s => s.CodexNode.Container).ToArray(); + var codexInstances = CreateCodexInstances(startResults); var discordBotContainer = DeployDiscordBot(ci); - return new CodexDeployment(codexContainers, gethDeployment, contractsDeployment, metricsService, discordBotContainer, CreateMetadata(startUtc)); - } - - private RunningContainer? DeployDiscordBot(CoreInterface ci) - { - if (!config.DeployDiscordBot) return null; - Log("Deploying Discord bot..."); - - var rc = ci.DeployCodexDiscordBot(new DiscordBotStartupConfig( - name: "discordbot-" + config.DeploymentName, - token: config.DiscordBotToken, - serverName: config.DiscordBotServerName, - adminRoleName: config.DiscordBotAdminRoleName)); - - Log("Discord bot deployed."); - return rc; + return new CodexDeployment(codexInstances, gethDeployment, contractsDeployment, metricsService, discordBotContainer, CreateMetadata(startUtc)); } private EntryPoint CreateEntryPoint(ILog log) @@ -135,6 +120,21 @@ namespace CodexNetDeployer }); } + private RunningContainer? DeployDiscordBot(CoreInterface ci) + { + if (!config.DeployDiscordBot) return null; + Log("Deploying Discord bot..."); + + var rc = ci.DeployCodexDiscordBot(new DiscordBotStartupConfig( + name: "discordbot-" + config.DeploymentName, + token: config.DiscordBotToken, + serverName: config.DiscordBotServerName, + adminRoleName: config.DiscordBotAdminRoleName)); + + Log("Discord bot deployed."); + return rc; + } + private RunningContainer? StartMetricsService(CoreInterface ci, List startResults) { if (!config.MetricsScraper) return null; @@ -148,6 +148,16 @@ namespace CodexNetDeployer return runningContainer; } + private CodexInstance[] CreateCodexInstances(List startResults) + { + return startResults.Select(r => CreateCodexInstance(r.CodexNode)).ToArray(); + } + + private CodexInstance CreateCodexInstance(ICodexNode node) + { + return new CodexInstance(node.Container, node.GetDebugInfo()); + } + private string? GetKubeConfig(string kubeConfigFile) { if (string.IsNullOrEmpty(kubeConfigFile) || kubeConfigFile.ToLowerInvariant() == "null") return null;