Fixes serialization issue for running containers for discord bot and metrics container

This commit is contained in:
benbierens 2023-11-07 11:17:20 +01:00
parent 1412dd84fe
commit 655f4895d0
No known key found for this signature in database
GPG Key ID: FE44815D96D0A1AA
9 changed files with 21 additions and 22 deletions

View File

@ -28,19 +28,18 @@ namespace CodexDiscordBotPlugin
{ {
} }
public RunningContainer Deploy(DiscordBotStartupConfig config) public RunningContainers Deploy(DiscordBotStartupConfig config)
{ {
var workflow = tools.CreateWorkflow(); var workflow = tools.CreateWorkflow();
return StartContainer(workflow, config); return StartContainer(workflow, config);
} }
private RunningContainer StartContainer(IStartupWorkflow workflow, DiscordBotStartupConfig config) private RunningContainers StartContainer(IStartupWorkflow workflow, DiscordBotStartupConfig config)
{ {
var startupConfig = new StartupConfig(); var startupConfig = new StartupConfig();
startupConfig.NameOverride = config.Name; startupConfig.NameOverride = config.Name;
startupConfig.Add(config); startupConfig.Add(config);
var rc = workflow.Start(1, new DiscordBotContainerRecipe(), startupConfig); return workflow.Start(1, new DiscordBotContainerRecipe(), startupConfig);
return rc.Containers.Single();
} }
} }
} }

View File

@ -5,7 +5,7 @@ namespace CodexDiscordBotPlugin
{ {
public static class CoreInterfaceExtensions public static class CoreInterfaceExtensions
{ {
public static RunningContainer DeployCodexDiscordBot(this CoreInterface ci, DiscordBotStartupConfig config) public static RunningContainers DeployCodexDiscordBot(this CoreInterface ci, DiscordBotStartupConfig config)
{ {
return Plugin(ci).Deploy(config); return Plugin(ci).Deploy(config);
} }

View File

@ -6,7 +6,7 @@ namespace CodexPlugin
{ {
public class CodexDeployment public class CodexDeployment
{ {
public CodexDeployment(CodexInstance[] codexInstances, GethDeployment gethDeployment, CodexContractsDeployment codexContractsDeployment, RunningContainer? prometheusContainer, RunningContainer? discordBotContainer, DeploymentMetadata metadata) public CodexDeployment(CodexInstance[] codexInstances, GethDeployment gethDeployment, CodexContractsDeployment codexContractsDeployment, RunningContainers? prometheusContainer, RunningContainers? discordBotContainer, DeploymentMetadata metadata)
{ {
CodexInstances = codexInstances; CodexInstances = codexInstances;
GethDeployment = gethDeployment; GethDeployment = gethDeployment;
@ -19,8 +19,8 @@ namespace CodexPlugin
public CodexInstance[] CodexInstances { get; } public CodexInstance[] CodexInstances { get; }
public GethDeployment GethDeployment { get; } public GethDeployment GethDeployment { get; }
public CodexContractsDeployment CodexContractsDeployment { get; } public CodexContractsDeployment CodexContractsDeployment { get; }
public RunningContainer? PrometheusContainer { get; } public RunningContainers? PrometheusContainer { get; }
public RunningContainer? DiscordBotContainer { get; } public RunningContainers? DiscordBotContainer { get; }
public DeploymentMetadata Metadata { get; } public DeploymentMetadata Metadata { get; }
} }

View File

@ -6,22 +6,22 @@ namespace MetricsPlugin
{ {
public static class CoreInterfaceExtensions public static class CoreInterfaceExtensions
{ {
public static RunningContainer DeployMetricsCollector(this CoreInterface ci, params IHasMetricsScrapeTarget[] scrapeTargets) public static RunningContainers DeployMetricsCollector(this CoreInterface ci, params IHasMetricsScrapeTarget[] scrapeTargets)
{ {
return Plugin(ci).DeployMetricsCollector(scrapeTargets.Select(t => t.MetricsScrapeTarget).ToArray()); return Plugin(ci).DeployMetricsCollector(scrapeTargets.Select(t => t.MetricsScrapeTarget).ToArray());
} }
public static RunningContainer DeployMetricsCollector(this CoreInterface ci, params IMetricsScrapeTarget[] scrapeTargets) public static RunningContainers DeployMetricsCollector(this CoreInterface ci, params IMetricsScrapeTarget[] scrapeTargets)
{ {
return Plugin(ci).DeployMetricsCollector(scrapeTargets); return Plugin(ci).DeployMetricsCollector(scrapeTargets);
} }
public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningContainer metricsContainer, IHasMetricsScrapeTarget scrapeTarget) public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningContainers metricsContainer, IHasMetricsScrapeTarget scrapeTarget)
{ {
return ci.WrapMetricsCollector(metricsContainer, scrapeTarget.MetricsScrapeTarget); return ci.WrapMetricsCollector(metricsContainer, scrapeTarget.MetricsScrapeTarget);
} }
public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningContainer metricsContainer, IMetricsScrapeTarget scrapeTarget) public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningContainers metricsContainer, IMetricsScrapeTarget scrapeTarget)
{ {
return Plugin(ci).WrapMetricsCollectorDeployment(metricsContainer, scrapeTarget); return Plugin(ci).WrapMetricsCollectorDeployment(metricsContainer, scrapeTarget);
} }

View File

@ -31,12 +31,12 @@ namespace MetricsPlugin
{ {
} }
public RunningContainer DeployMetricsCollector(IMetricsScrapeTarget[] scrapeTargets) public RunningContainers DeployMetricsCollector(IMetricsScrapeTarget[] scrapeTargets)
{ {
return starter.CollectMetricsFor(scrapeTargets); return starter.CollectMetricsFor(scrapeTargets);
} }
public IMetricsAccess WrapMetricsCollectorDeployment(RunningContainer runningContainer, IMetricsScrapeTarget target) public IMetricsAccess WrapMetricsCollectorDeployment(RunningContainers runningContainer, IMetricsScrapeTarget target)
{ {
runningContainer = SerializeGate.Gate(runningContainer); runningContainer = SerializeGate.Gate(runningContainer);
return starter.CreateAccessForTarget(runningContainer, target); return starter.CreateAccessForTarget(runningContainer, target);

View File

@ -14,7 +14,7 @@ namespace MetricsPlugin
this.tools = tools; this.tools = tools;
} }
public RunningContainer CollectMetricsFor(IMetricsScrapeTarget[] targets) public RunningContainers CollectMetricsFor(IMetricsScrapeTarget[] targets)
{ {
Log($"Starting metrics server for {targets.Length} targets..."); Log($"Starting metrics server for {targets.Length} targets...");
var startupConfig = new StartupConfig(); var startupConfig = new StartupConfig();
@ -25,12 +25,12 @@ namespace MetricsPlugin
if (runningContainers.Containers.Length != 1) throw new InvalidOperationException("Expected only 1 Prometheus container to be created."); if (runningContainers.Containers.Length != 1) throw new InvalidOperationException("Expected only 1 Prometheus container to be created.");
Log("Metrics server started."); Log("Metrics server started.");
return runningContainers.Containers.Single(); return runningContainers;
} }
public MetricsAccess CreateAccessForTarget(RunningContainer metricsContainer, IMetricsScrapeTarget target) public MetricsAccess CreateAccessForTarget(RunningContainers metricsContainer, IMetricsScrapeTarget target)
{ {
var metricsQuery = new MetricsQuery(tools, metricsContainer); var metricsQuery = new MetricsQuery(tools, metricsContainer.Containers.Single());
return new MetricsAccess(metricsQuery, target); return new MetricsAccess(metricsQuery, target);
} }

View File

@ -126,7 +126,7 @@ namespace CodexTests.BasicTests
private const string BytesStoredMetric = "codexRepostoreBytesUsed"; private const string BytesStoredMetric = "codexRepostoreBytesUsed";
private void PerformTest(ICodexNode primary, ICodexNode secondary, RunningContainer rc) private void PerformTest(ICodexNode primary, ICodexNode secondary, RunningContainers rc)
{ {
ScopedTestFiles(() => ScopedTestFiles(() =>
{ {

View File

@ -121,7 +121,7 @@ namespace CodexNetDeployer
}); });
} }
private RunningContainer? DeployDiscordBot(CoreInterface ci) private RunningContainers? DeployDiscordBot(CoreInterface ci)
{ {
if (!config.DeployDiscordBot) return null; if (!config.DeployDiscordBot) return null;
Log("Deploying Discord bot..."); Log("Deploying Discord bot...");
@ -140,7 +140,7 @@ namespace CodexNetDeployer
return rc; return rc;
} }
private RunningContainer? StartMetricsService(CoreInterface ci, List<CodexNodeStartResult> startResults) private RunningContainers? StartMetricsService(CoreInterface ci, List<CodexNodeStartResult> startResults)
{ {
if (!config.MetricsScraper) return null; if (!config.MetricsScraper) return null;

View File

@ -13,7 +13,7 @@ dotnet run \
--block-mn=10000 \ --block-mn=10000 \
--metrics-endpoints=1 \ --metrics-endpoints=1 \
--metrics-scraper=0 \ --metrics-scraper=0 \
--check-connect=1 \ --check-connect=0 \
\ \
--public-testnet=1 \ --public-testnet=1 \
--public-ip=1.2.3.4 \ --public-ip=1.2.3.4 \