diff --git a/Framework/KubernetesWorkflow/K8sController.cs b/Framework/KubernetesWorkflow/K8sController.cs index 80b15d16..a17ad823 100644 --- a/Framework/KubernetesWorkflow/K8sController.cs +++ b/Framework/KubernetesWorkflow/K8sController.cs @@ -705,7 +705,7 @@ namespace KubernetesWorkflow private string GetPodName(RunningContainer container) { - return GetPodForDeployment(container.RunningContainers.StartResult.Deployment).Metadata.Name; + return GetPodForDeployment(container.RunningPod.StartResult.Deployment).Metadata.Name; } private V1Pod GetPodForDeployment(RunningDeployment deployment) diff --git a/Framework/KubernetesWorkflow/K8sHooks.cs b/Framework/KubernetesWorkflow/K8sHooks.cs index 74bb93b4..4dad7401 100644 --- a/Framework/KubernetesWorkflow/K8sHooks.cs +++ b/Framework/KubernetesWorkflow/K8sHooks.cs @@ -5,18 +5,18 @@ namespace KubernetesWorkflow { public interface IK8sHooks { - void OnContainersStarted(RunningContainers runningContainers); - void OnContainersStopped(RunningContainers runningContainers); + void OnContainersStarted(RunningPod runningPod); + void OnContainersStopped(RunningPod runningPod); void OnContainerRecipeCreated(ContainerRecipe recipe); } public class DoNothingK8sHooks : IK8sHooks { - public void OnContainersStarted(RunningContainers runningContainers) + public void OnContainersStarted(RunningPod runningPod) { } - public void OnContainersStopped(RunningContainers runningContainers) + public void OnContainersStopped(RunningPod runningPod) { } diff --git a/Framework/KubernetesWorkflow/StartupWorkflow.cs b/Framework/KubernetesWorkflow/StartupWorkflow.cs index b8f7d779..cda61489 100644 --- a/Framework/KubernetesWorkflow/StartupWorkflow.cs +++ b/Framework/KubernetesWorkflow/StartupWorkflow.cs @@ -12,9 +12,9 @@ namespace KubernetesWorkflow FutureContainers Start(int numberOfContainers, ContainerRecipeFactory recipeFactory, StartupConfig startupConfig); FutureContainers Start(int numberOfContainers, ILocation location, ContainerRecipeFactory recipeFactory, StartupConfig startupConfig); PodInfo GetPodInfo(RunningContainer container); - PodInfo GetPodInfo(RunningContainers containers); + PodInfo GetPodInfo(RunningPod pod); CrashWatcher CreateCrashWatcher(RunningContainer container); - void Stop(RunningContainers containers, bool waitTillStopped); + void Stop(RunningPod pod, bool waitTillStopped); void DownloadContainerLog(RunningContainer container, ILogHandler logHandler, int? tailLines = null); string ExecuteCommand(RunningContainer container, string command, params string[] args); void DeleteNamespace(); @@ -60,7 +60,7 @@ namespace KubernetesWorkflow var startResult = controller.BringOnline(recipes, location); var containers = CreateContainers(startResult, recipes, startupConfig); - var rc = new RunningContainers(startupConfig, startResult, containers); + var rc = new RunningPod(startupConfig, startResult, containers); cluster.Configuration.Hooks.OnContainersStarted(rc); if (startResult.ExternalService != null) @@ -71,7 +71,7 @@ namespace KubernetesWorkflow }); } - public void WaitUntilOnline(RunningContainers rc) + public void WaitUntilOnline(RunningPod rc) { K8s(controller => { @@ -84,12 +84,12 @@ namespace KubernetesWorkflow public PodInfo GetPodInfo(RunningContainer container) { - return K8s(c => c.GetPodInfo(container.RunningContainers.StartResult.Deployment)); + return K8s(c => c.GetPodInfo(container.RunningPod.StartResult.Deployment)); } - public PodInfo GetPodInfo(RunningContainers containers) + public PodInfo GetPodInfo(RunningPod pod) { - return K8s(c => c.GetPodInfo(containers.StartResult.Deployment)); + return K8s(c => c.GetPodInfo(pod.StartResult.Deployment)); } public CrashWatcher CreateCrashWatcher(RunningContainer container) @@ -97,12 +97,12 @@ namespace KubernetesWorkflow return K8s(c => c.CreateCrashWatcher(container)); } - public void Stop(RunningContainers runningContainers, bool waitTillStopped) + public void Stop(RunningPod runningPod, bool waitTillStopped) { K8s(controller => { - controller.Stop(runningContainers.StartResult, waitTillStopped); - cluster.Configuration.Hooks.OnContainersStopped(runningContainers); + controller.Stop(runningPod.StartResult, waitTillStopped); + cluster.Configuration.Hooks.OnContainersStopped(runningPod); }); } diff --git a/Framework/KubernetesWorkflow/Types/FutureContainers.cs b/Framework/KubernetesWorkflow/Types/FutureContainers.cs index 262eac44..296be534 100644 --- a/Framework/KubernetesWorkflow/Types/FutureContainers.cs +++ b/Framework/KubernetesWorkflow/Types/FutureContainers.cs @@ -2,19 +2,19 @@ { public class FutureContainers { - private readonly RunningContainers runningContainers; + private readonly RunningPod runningPod; private readonly StartupWorkflow workflow; - public FutureContainers(RunningContainers runningContainers, StartupWorkflow workflow) + public FutureContainers(RunningPod runningPod, StartupWorkflow workflow) { - this.runningContainers = runningContainers; + this.runningPod = runningPod; this.workflow = workflow; } - public RunningContainers WaitForOnline() + public RunningPod WaitForOnline() { - workflow.WaitUntilOnline(runningContainers); - return runningContainers; + workflow.WaitUntilOnline(runningPod); + return runningPod; } } } diff --git a/Framework/KubernetesWorkflow/Types/RunningContainer.cs b/Framework/KubernetesWorkflow/Types/RunningContainer.cs index f391e457..b0fbc02e 100644 --- a/Framework/KubernetesWorkflow/Types/RunningContainer.cs +++ b/Framework/KubernetesWorkflow/Types/RunningContainer.cs @@ -19,7 +19,7 @@ namespace KubernetesWorkflow.Types public ContainerAddress[] Addresses { get; } [JsonIgnore] - public RunningContainers RunningContainers { get; internal set; } = null!; + public RunningPod RunningPod { get; internal set; } = null!; public Address GetAddress(ILog log, string portTag) { diff --git a/Framework/KubernetesWorkflow/Types/RunningContainers.cs b/Framework/KubernetesWorkflow/Types/RunningPod.cs similarity index 61% rename from Framework/KubernetesWorkflow/Types/RunningContainers.cs rename to Framework/KubernetesWorkflow/Types/RunningPod.cs index 9a6e5f3a..7f1a24d7 100644 --- a/Framework/KubernetesWorkflow/Types/RunningContainers.cs +++ b/Framework/KubernetesWorkflow/Types/RunningPod.cs @@ -2,15 +2,15 @@ namespace KubernetesWorkflow.Types { - public class RunningContainers + public class RunningPod { - public RunningContainers(StartupConfig startupConfig, StartResult startResult, RunningContainer[] containers) + public RunningPod(StartupConfig startupConfig, StartResult startResult, RunningContainer[] containers) { StartupConfig = startupConfig; StartResult = startResult; Containers = containers; - foreach (var c in containers) c.RunningContainers = this; + foreach (var c in containers) c.RunningPod = this; } public StartupConfig StartupConfig { get; } @@ -31,12 +31,7 @@ namespace KubernetesWorkflow.Types public static class RunningContainersExtensions { - public static RunningContainer[] Containers(this RunningContainers[] runningContainers) - { - return runningContainers.SelectMany(c => c.Containers).ToArray(); - } - - public static string Describe(this RunningContainers[] runningContainers) + public static string Describe(this RunningPod[] runningContainers) { return string.Join(",", runningContainers.Select(c => c.Describe())); } diff --git a/ProjectPlugins/CodexDiscordBotPlugin/CodexDiscordBotPlugin.cs b/ProjectPlugins/CodexDiscordBotPlugin/CodexDiscordBotPlugin.cs index fd082cfa..f347805a 100644 --- a/ProjectPlugins/CodexDiscordBotPlugin/CodexDiscordBotPlugin.cs +++ b/ProjectPlugins/CodexDiscordBotPlugin/CodexDiscordBotPlugin.cs @@ -29,19 +29,19 @@ namespace CodexDiscordBotPlugin { } - public RunningContainers Deploy(DiscordBotStartupConfig config) + public RunningPod Deploy(DiscordBotStartupConfig config) { var workflow = tools.CreateWorkflow(); return StartContainer(workflow, config); } - public RunningContainers DeployRewarder(RewarderBotStartupConfig config) + public RunningPod DeployRewarder(RewarderBotStartupConfig config) { var workflow = tools.CreateWorkflow(); return StartRewarderContainer(workflow, config); } - private RunningContainers StartContainer(IStartupWorkflow workflow, DiscordBotStartupConfig config) + private RunningPod StartContainer(IStartupWorkflow workflow, DiscordBotStartupConfig config) { var startupConfig = new StartupConfig(); startupConfig.NameOverride = config.Name; @@ -49,7 +49,7 @@ namespace CodexDiscordBotPlugin return workflow.Start(1, new DiscordBotContainerRecipe(), startupConfig).WaitForOnline(); } - private RunningContainers StartRewarderContainer(IStartupWorkflow workflow, RewarderBotStartupConfig config) + private RunningPod StartRewarderContainer(IStartupWorkflow workflow, RewarderBotStartupConfig config) { var startupConfig = new StartupConfig(); startupConfig.Add(config); diff --git a/ProjectPlugins/CodexDiscordBotPlugin/CoreInterfaceExtensions.cs b/ProjectPlugins/CodexDiscordBotPlugin/CoreInterfaceExtensions.cs index c17cec15..c91d7118 100644 --- a/ProjectPlugins/CodexDiscordBotPlugin/CoreInterfaceExtensions.cs +++ b/ProjectPlugins/CodexDiscordBotPlugin/CoreInterfaceExtensions.cs @@ -5,12 +5,12 @@ namespace CodexDiscordBotPlugin { public static class CoreInterfaceExtensions { - public static RunningContainers DeployCodexDiscordBot(this CoreInterface ci, DiscordBotStartupConfig config) + public static RunningPod DeployCodexDiscordBot(this CoreInterface ci, DiscordBotStartupConfig config) { return Plugin(ci).Deploy(config); } - public static RunningContainers DeployRewarderBot(this CoreInterface ci, RewarderBotStartupConfig config) + public static RunningPod DeployRewarderBot(this CoreInterface ci, RewarderBotStartupConfig config) { return Plugin(ci).DeployRewarder(config); } diff --git a/ProjectPlugins/CodexPlugin/ApiChecker.cs b/ProjectPlugins/CodexPlugin/ApiChecker.cs index 212fa193..5cf3dc96 100644 --- a/ProjectPlugins/CodexPlugin/ApiChecker.cs +++ b/ProjectPlugins/CodexPlugin/ApiChecker.cs @@ -38,7 +38,7 @@ namespace CodexPlugin if (string.IsNullOrEmpty(OpenApiYamlHash)) throw new Exception("OpenAPI yaml hash was not inserted by pre-build trigger."); } - public void CheckCompatibility(RunningContainers[] containers) + public void CheckCompatibility(RunningPod[] containers) { if (checkPassed) return; diff --git a/ProjectPlugins/CodexPlugin/CodexAccess.cs b/ProjectPlugins/CodexPlugin/CodexAccess.cs index 697ff2cd..e35a9f9d 100644 --- a/ProjectPlugins/CodexPlugin/CodexAccess.cs +++ b/ProjectPlugins/CodexPlugin/CodexAccess.cs @@ -13,7 +13,7 @@ namespace CodexPlugin private readonly Mapper mapper = new Mapper(); private bool hasContainerCrashed; - public CodexAccess(IPluginTools tools, RunningContainer container, CrashWatcher crashWatcher) + public CodexAccess(IPluginTools tools, RunningPod container, CrashWatcher crashWatcher) { this.tools = tools; Container = container; @@ -23,7 +23,7 @@ namespace CodexPlugin CrashWatcher.Start(this); } - public RunningContainer Container { get; } + public RunningPod Container { get; } public CrashWatcher CrashWatcher { get; } public DebugInfo GetDebugInfo() @@ -136,7 +136,7 @@ namespace CodexPlugin private Address GetAddress() { - return Container.GetAddress(tools.GetLog(), CodexContainerRecipe.ApiPortTag); + return Container.Containers.Single().GetAddress(tools.GetLog(), CodexContainerRecipe.ApiPortTag); } private void CheckContainerCrashed(HttpClient client) diff --git a/ProjectPlugins/CodexPlugin/CodexDeployment.cs b/ProjectPlugins/CodexPlugin/CodexDeployment.cs index 9f74dd31..7cbf4506 100644 --- a/ProjectPlugins/CodexPlugin/CodexDeployment.cs +++ b/ProjectPlugins/CodexPlugin/CodexDeployment.cs @@ -7,8 +7,8 @@ namespace CodexPlugin public class CodexDeployment { public CodexDeployment(CodexInstance[] codexInstances, GethDeployment gethDeployment, - CodexContractsDeployment codexContractsDeployment, RunningContainers? prometheusContainer, - RunningContainers? discordBotContainer, DeploymentMetadata metadata, + CodexContractsDeployment codexContractsDeployment, RunningPod? prometheusContainer, + RunningPod? discordBotContainer, DeploymentMetadata metadata, String id) { Id = id; @@ -24,20 +24,20 @@ namespace CodexPlugin public CodexInstance[] CodexInstances { get; } public GethDeployment GethDeployment { get; } public CodexContractsDeployment CodexContractsDeployment { get; } - public RunningContainers? PrometheusContainer { get; } - public RunningContainers? DiscordBotContainer { get; } + public RunningPod? PrometheusContainer { get; } + public RunningPod? DiscordBotContainer { get; } public DeploymentMetadata Metadata { get; } } public class CodexInstance { - public CodexInstance(RunningContainers containers, DebugInfo info) + public CodexInstance(RunningPod pod, DebugInfo info) { - Containers = containers; + Pod = pod; Info = info; } - public RunningContainers Containers { get; } + public RunningPod Pod { get; } public DebugInfo Info { get; } } diff --git a/ProjectPlugins/CodexPlugin/CodexNode.cs b/ProjectPlugins/CodexPlugin/CodexNode.cs index e1e475ce..54299c3c 100644 --- a/ProjectPlugins/CodexPlugin/CodexNode.cs +++ b/ProjectPlugins/CodexPlugin/CodexNode.cs @@ -44,7 +44,9 @@ namespace CodexPlugin transferSpeeds = new TransferSpeeds(); } - public RunningContainer Container { get { return CodexAccess.Container; } } + public RunningPod Pod { get { return CodexAccess.Container; } } + + public RunningContainer Container { get { return Pod.Containers.Single(); } } public CodexAccess CodexAccess { get; } public CrashWatcher CrashWatcher { get => CodexAccess.CrashWatcher; } public CodexNodeGroup Group { get; } @@ -56,7 +58,7 @@ namespace CodexPlugin { get { - return new MetricsScrapeTarget(CodexAccess.Container, CodexContainerRecipe.MetricsPortTag); + return new MetricsScrapeTarget(CodexAccess.Container.Containers.First(), CodexContainerRecipe.MetricsPortTag); } } @@ -142,11 +144,13 @@ namespace CodexPlugin public void Stop(bool waitTillStopped) { - if (Group.Count() > 1) throw new InvalidOperationException("Codex-nodes that are part of a group cannot be " + - "individually shut down. Use 'BringOffline()' on the group object to stop the group. This method is only " + - "available for codex-nodes in groups of 1."); - - Group.BringOffline(waitTillStopped); + Group.Stop(this, waitTillStopped); + CrashWatcher.Stop(); + // if (Group.Count() > 1) throw new InvalidOperationException("Codex-nodes that are part of a group cannot be " + + // "individually shut down. Use 'BringOffline()' on the group object to stop the group. This method is only " + + // "available for codex-nodes in groups of 1."); + // + // Group.BringOffline(waitTillStopped); } public void EnsureOnlineGetVersionResponse() @@ -171,7 +175,7 @@ namespace CodexPlugin // The peer we want to connect is in a different pod. // We must replace the default IP with the pod IP in the multiAddress. var workflow = tools.CreateWorkflow(); - var podInfo = workflow.GetPodInfo(peer.Container); + var podInfo = workflow.GetPodInfo(peer.Pod); return peerInfo.Addrs.Select(a => a .Replace("0.0.0.0", podInfo.Ip)) diff --git a/ProjectPlugins/CodexPlugin/CodexNodeFactory.cs b/ProjectPlugins/CodexPlugin/CodexNodeFactory.cs index 05b80b28..18483de6 100644 --- a/ProjectPlugins/CodexPlugin/CodexNodeFactory.cs +++ b/ProjectPlugins/CodexPlugin/CodexNodeFactory.cs @@ -35,7 +35,7 @@ namespace CodexPlugin private EthAddress? GetEthAddress(CodexAccess access) { - var ethAccount = access.Container.Recipe.Additionals.Get(); + var ethAccount = access.Container.Containers.Single().Recipe.Additionals.Get(); if (ethAccount == null) return null; return ethAccount.EthAddress; } diff --git a/ProjectPlugins/CodexPlugin/CodexNodeGroup.cs b/ProjectPlugins/CodexPlugin/CodexNodeGroup.cs index 1f7ed4eb..47bf35d9 100644 --- a/ProjectPlugins/CodexPlugin/CodexNodeGroup.cs +++ b/ProjectPlugins/CodexPlugin/CodexNodeGroup.cs @@ -15,11 +15,11 @@ namespace CodexPlugin { private readonly CodexStarter starter; - public CodexNodeGroup(CodexStarter starter, IPluginTools tools, RunningContainers[] containers, ICodexNodeFactory codexNodeFactory) + public CodexNodeGroup(CodexStarter starter, IPluginTools tools, RunningPod[] containers, ICodexNodeFactory codexNodeFactory) { this.starter = starter; Containers = containers; - Nodes = containers.Containers().Select(c => CreateOnlineCodexNode(c, tools, codexNodeFactory)).ToArray(); + Nodes = containers.Select(c => CreateOnlineCodexNode(c, tools, codexNodeFactory)).ToArray(); Version = new DebugInfoVersion(); } @@ -39,7 +39,14 @@ namespace CodexPlugin Containers = null!; } - public RunningContainers[] Containers { get; private set; } + public void Stop(CodexNode node, bool waitTillStopped) + { + starter.Stop(node.Pod, waitTillStopped); + Nodes = Nodes.Where(n => n != node).ToArray(); + Containers = Containers.Where(c => c != node.Pod).ToArray(); + } + + public RunningPod[] Containers { get; private set; } public CodexNode[] Nodes { get; private set; } public DebugInfoVersion Version { get; private set; } public IMetricsScrapeTarget[] ScrapeTargets => Nodes.Select(n => n.MetricsScrapeTarget).ToArray(); @@ -74,9 +81,9 @@ namespace CodexPlugin Version = first; } - private CodexNode CreateOnlineCodexNode(RunningContainer c, IPluginTools tools, ICodexNodeFactory factory) + private CodexNode CreateOnlineCodexNode(RunningPod c, IPluginTools tools, ICodexNodeFactory factory) { - var watcher = factory.CreateCrashWatcher(c); + var watcher = factory.CreateCrashWatcher(c.Containers.Single()); var access = new CodexAccess(tools, c, watcher); return factory.CreateOnlineCodexNode(access, this); } diff --git a/ProjectPlugins/CodexPlugin/CodexPlugin.cs b/ProjectPlugins/CodexPlugin/CodexPlugin.cs index 9b8586e8..7b722ed8 100644 --- a/ProjectPlugins/CodexPlugin/CodexPlugin.cs +++ b/ProjectPlugins/CodexPlugin/CodexPlugin.cs @@ -32,13 +32,13 @@ namespace CodexPlugin { } - public RunningContainers[] DeployCodexNodes(int numberOfNodes, Action setup) + public RunningPod[] DeployCodexNodes(int numberOfNodes, Action setup) { var codexSetup = GetSetup(numberOfNodes, setup); return codexStarter.BringOnline(codexSetup); } - public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, RunningContainers[] containers) + public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, RunningPod[] containers) { containers = containers.Select(c => SerializeGate.Gate(c)).ToArray(); return codexStarter.WrapCodexContainers(coreInterface, containers); diff --git a/ProjectPlugins/CodexPlugin/CodexStarter.cs b/ProjectPlugins/CodexPlugin/CodexStarter.cs index 6fcc4bd3..dec13d38 100644 --- a/ProjectPlugins/CodexPlugin/CodexStarter.cs +++ b/ProjectPlugins/CodexPlugin/CodexStarter.cs @@ -19,7 +19,7 @@ namespace CodexPlugin apiChecker = new ApiChecker(pluginTools); } - public RunningContainers[] BringOnline(CodexSetup codexSetup) + public RunningPod[] BringOnline(CodexSetup codexSetup) { LogSeparator(); Log($"Starting {codexSetup.Describe()}..."); @@ -34,14 +34,14 @@ namespace CodexPlugin { var podInfo = GetPodInfo(rc); var podInfos = string.Join(", ", rc.Containers.Select(c => $"Container: '{c.Name}' runs at '{podInfo.K8SNodeName}'={podInfo.Ip}")); - Log($"Started {codexSetup.NumberOfNodes} nodes of image '{containers.Containers().First().Recipe.Image}'. ({podInfos})"); + Log($"Started {codexSetup.NumberOfNodes} nodes of image '{containers.First().Containers.First().Recipe.Image}'. ({podInfos})"); } LogSeparator(); return containers; } - public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, RunningContainers[] containers) + public ICodexNodeGroup WrapCodexContainers(CoreInterface coreInterface, RunningPod[] containers) { var codexNodeFactory = new CodexNodeFactory(pluginTools); @@ -65,6 +65,14 @@ namespace CodexPlugin Log("Stopped."); } + public void Stop(RunningPod pod, bool waitTillStopped) + { + Log($"Stopping node..."); + var workflow = pluginTools.CreateWorkflow(); + workflow.Stop(pod, waitTillStopped); + Log("Stopped."); + } + public string GetCodexId() { if (versionResponse != null) return versionResponse.Version; @@ -85,7 +93,7 @@ namespace CodexPlugin return startupConfig; } - private RunningContainers[] StartCodexContainers(StartupConfig startupConfig, int numberOfNodes, ILocation location) + private RunningPod[] StartCodexContainers(StartupConfig startupConfig, int numberOfNodes, ILocation location) { var futureContainers = new List(); for (var i = 0; i < numberOfNodes; i++) @@ -99,13 +107,13 @@ namespace CodexPlugin .ToArray(); } - private PodInfo GetPodInfo(RunningContainers rc) + private PodInfo GetPodInfo(RunningPod rc) { var workflow = pluginTools.CreateWorkflow(); return workflow.GetPodInfo(rc); } - private CodexNodeGroup CreateCodexGroup(CoreInterface coreInterface, RunningContainers[] runningContainers, CodexNodeFactory codexNodeFactory) + private CodexNodeGroup CreateCodexGroup(CoreInterface coreInterface, RunningPod[] runningContainers, CodexNodeFactory codexNodeFactory) { var group = new CodexNodeGroup(this, pluginTools, runningContainers, codexNodeFactory); @@ -122,10 +130,10 @@ namespace CodexPlugin return group; } - private void CodexNodesNotOnline(CoreInterface coreInterface, RunningContainers[] runningContainers) + private void CodexNodesNotOnline(CoreInterface coreInterface, RunningPod[] runningContainers) { Log("Codex nodes failed to start"); - foreach (var container in runningContainers.Containers()) coreInterface.DownloadLog(container); + foreach (var container in runningContainers.First().Containers) coreInterface.DownloadLog(container); } private void LogSeparator() diff --git a/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs b/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs index 529b7fd8..5f6065df 100644 --- a/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs +++ b/ProjectPlugins/CodexPlugin/CoreInterfaceExtensions.cs @@ -5,12 +5,12 @@ namespace CodexPlugin { public static class CoreInterfaceExtensions { - public static RunningContainers[] DeployCodexNodes(this CoreInterface ci, int number, Action setup) + public static RunningPod[] DeployCodexNodes(this CoreInterface ci, int number, Action setup) { return Plugin(ci).DeployCodexNodes(number, setup); } - public static ICodexNodeGroup WrapCodexContainers(this CoreInterface ci, RunningContainers[] containers) + public static ICodexNodeGroup WrapCodexContainers(this CoreInterface ci, RunningPod[] containers) { return Plugin(ci).WrapCodexContainers(ci, containers); } diff --git a/ProjectPlugins/GethPlugin/GethDeployment.cs b/ProjectPlugins/GethPlugin/GethDeployment.cs index 8d7f0dd5..e463ce42 100644 --- a/ProjectPlugins/GethPlugin/GethDeployment.cs +++ b/ProjectPlugins/GethPlugin/GethDeployment.cs @@ -7,9 +7,9 @@ namespace GethPlugin { public class GethDeployment : IHasContainer { - public GethDeployment(RunningContainers containers, Port discoveryPort, Port httpPort, Port wsPort, GethAccount account, string pubKey) + public GethDeployment(RunningPod pod, Port discoveryPort, Port httpPort, Port wsPort, GethAccount account, string pubKey) { - Containers = containers; + Pod = pod; DiscoveryPort = discoveryPort; HttpPort = httpPort; WsPort = wsPort; @@ -17,9 +17,9 @@ namespace GethPlugin PubKey = pubKey; } - public RunningContainers Containers { get; } + public RunningPod Pod { get; } [JsonIgnore] - public RunningContainer Container { get { return Containers.Containers.Single(); } } + public RunningContainer Container { get { return Pod.Containers.Single(); } } public Port DiscoveryPort { get; } public Port HttpPort { get; } public Port WsPort { get; } diff --git a/ProjectPlugins/MetricsPlugin/CoreInterfaceExtensions.cs b/ProjectPlugins/MetricsPlugin/CoreInterfaceExtensions.cs index 83920825..6d5859da 100644 --- a/ProjectPlugins/MetricsPlugin/CoreInterfaceExtensions.cs +++ b/ProjectPlugins/MetricsPlugin/CoreInterfaceExtensions.cs @@ -6,24 +6,24 @@ namespace MetricsPlugin { public static class CoreInterfaceExtensions { - public static RunningContainers DeployMetricsCollector(this CoreInterface ci, params IHasMetricsScrapeTarget[] scrapeTargets) + public static RunningPod DeployMetricsCollector(this CoreInterface ci, params IHasMetricsScrapeTarget[] scrapeTargets) { return Plugin(ci).DeployMetricsCollector(scrapeTargets.Select(t => t.MetricsScrapeTarget).ToArray()); } - public static RunningContainers DeployMetricsCollector(this CoreInterface ci, params IMetricsScrapeTarget[] scrapeTargets) + public static RunningPod DeployMetricsCollector(this CoreInterface ci, params IMetricsScrapeTarget[] scrapeTargets) { return Plugin(ci).DeployMetricsCollector(scrapeTargets); } - public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningContainers metricsContainer, IHasMetricsScrapeTarget scrapeTarget) + public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningPod metricsPod, IHasMetricsScrapeTarget scrapeTarget) { - return ci.WrapMetricsCollector(metricsContainer, scrapeTarget.MetricsScrapeTarget); + return ci.WrapMetricsCollector(metricsPod, scrapeTarget.MetricsScrapeTarget); } - public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningContainers metricsContainer, IMetricsScrapeTarget scrapeTarget) + public static IMetricsAccess WrapMetricsCollector(this CoreInterface ci, RunningPod metricsPod, IMetricsScrapeTarget scrapeTarget) { - return Plugin(ci).WrapMetricsCollectorDeployment(metricsContainer, scrapeTarget); + return Plugin(ci).WrapMetricsCollectorDeployment(metricsPod, scrapeTarget); } public static IMetricsAccess[] GetMetricsFor(this CoreInterface ci, params IHasManyMetricScrapeTargets[] manyScrapeTargets) diff --git a/ProjectPlugins/MetricsPlugin/MetricsPlugin.cs b/ProjectPlugins/MetricsPlugin/MetricsPlugin.cs index b2c2b8ea..bc7d926b 100644 --- a/ProjectPlugins/MetricsPlugin/MetricsPlugin.cs +++ b/ProjectPlugins/MetricsPlugin/MetricsPlugin.cs @@ -31,15 +31,15 @@ namespace MetricsPlugin { } - public RunningContainers DeployMetricsCollector(IMetricsScrapeTarget[] scrapeTargets) + public RunningPod DeployMetricsCollector(IMetricsScrapeTarget[] scrapeTargets) { return starter.CollectMetricsFor(scrapeTargets); } - public IMetricsAccess WrapMetricsCollectorDeployment(RunningContainers runningContainer, IMetricsScrapeTarget target) + public IMetricsAccess WrapMetricsCollectorDeployment(RunningPod runningPod, IMetricsScrapeTarget target) { - runningContainer = SerializeGate.Gate(runningContainer); - return starter.CreateAccessForTarget(runningContainer, target); + runningPod = SerializeGate.Gate(runningPod); + return starter.CreateAccessForTarget(runningPod, target); } public LogFile? DownloadAllMetrics(IMetricsAccess metricsAccess, string targetName) diff --git a/ProjectPlugins/MetricsPlugin/PrometheusStarter.cs b/ProjectPlugins/MetricsPlugin/PrometheusStarter.cs index f63f97d5..159947a2 100644 --- a/ProjectPlugins/MetricsPlugin/PrometheusStarter.cs +++ b/ProjectPlugins/MetricsPlugin/PrometheusStarter.cs @@ -16,7 +16,7 @@ namespace MetricsPlugin this.tools = tools; } - public RunningContainers CollectMetricsFor(IMetricsScrapeTarget[] targets) + public RunningPod CollectMetricsFor(IMetricsScrapeTarget[] targets) { if (!targets.Any()) throw new ArgumentException(nameof(targets) + " must not be empty."); @@ -32,9 +32,9 @@ namespace MetricsPlugin return runningContainers; } - public MetricsAccess CreateAccessForTarget(RunningContainers metricsContainer, IMetricsScrapeTarget target) + public MetricsAccess CreateAccessForTarget(RunningPod metricsPod, IMetricsScrapeTarget target) { - var metricsQuery = new MetricsQuery(tools, metricsContainer.Containers.Single()); + var metricsQuery = new MetricsQuery(tools, metricsPod.Containers.Single()); return new MetricsAccess(metricsQuery, target); } diff --git a/Tests/CodexContinuousTests/ElasticSearchLogDownloader.cs b/Tests/CodexContinuousTests/ElasticSearchLogDownloader.cs index 80203af3..10c909ca 100644 --- a/Tests/CodexContinuousTests/ElasticSearchLogDownloader.cs +++ b/Tests/CodexContinuousTests/ElasticSearchLogDownloader.cs @@ -49,8 +49,8 @@ namespace ContinuousTests var start = startUtc.ToString("o"); var end = endUtc.ToString("o"); - var containerName = container.RunningContainers.StartResult.Deployment.Name; - var namespaceName = container.RunningContainers.StartResult.Cluster.Configuration.KubernetesNamespace; + var containerName = container.RunningPod.StartResult.Deployment.Name; + var namespaceName = container.RunningPod.StartResult.Cluster.Configuration.KubernetesNamespace; //container_name : codex3-5 - deploymentName as stored in pod // pod_namespace : codex - continuous - nolimits - tests - 1 diff --git a/Tests/CodexContinuousTests/SingleTestRun.cs b/Tests/CodexContinuousTests/SingleTestRun.cs index 7c6c5a6f..38bc5021 100644 --- a/Tests/CodexContinuousTests/SingleTestRun.cs +++ b/Tests/CodexContinuousTests/SingleTestRun.cs @@ -125,8 +125,8 @@ namespace ContinuousTests foreach (var node in nodes) { var container = node.Container; - var deploymentName = container.RunningContainers.StartResult.Deployment.Name; - var namespaceName = container.RunningContainers.StartResult.Cluster.Configuration.KubernetesNamespace; + var deploymentName = container.RunningPod.StartResult.Deployment.Name; + var namespaceName = container.RunningPod.StartResult.Cluster.Configuration.KubernetesNamespace; var openingLine = $"{namespaceName} - {deploymentName} = {node.Container.Name} = {node.GetDebugInfo().Id}"; elasticSearchLogDownloader.Download(fixtureLog.CreateSubfile(), node.Container, effectiveStart, @@ -295,13 +295,13 @@ namespace ContinuousTests return entryPoint.CreateInterface().WrapCodexContainers(containers).ToArray(); } - private RunningContainers[] SelectRandomContainers() + private RunningPod[] SelectRandomContainers() { var number = handle.Test.RequiredNumberOfNodes; - var containers = config.CodexDeployment.CodexInstances.Select(i => i.Containers).ToList(); + var containers = config.CodexDeployment.CodexInstances.Select(i => i.Pod).ToList(); if (number == -1) return containers.ToArray(); - var result = new RunningContainers[number]; + var result = new RunningPod[number]; for (var i = 0; i < number; i++) { result[i] = containers.PickOneRandom(); diff --git a/Tests/CodexContinuousTests/StartupChecker.cs b/Tests/CodexContinuousTests/StartupChecker.cs index d3fb456c..57c383c8 100644 --- a/Tests/CodexContinuousTests/StartupChecker.cs +++ b/Tests/CodexContinuousTests/StartupChecker.cs @@ -43,13 +43,13 @@ namespace ContinuousTests var workflow = entryPoint.Tools.CreateWorkflow(); foreach (var instance in deployment.CodexInstances) { - foreach (var container in instance.Containers.Containers) + foreach (var container in instance.Pod.Containers) { var podInfo = workflow.GetPodInfo(container); log.Log($"Codex environment variables for '{container.Name}':"); log.Log( - $"Namespace: {container.RunningContainers.StartResult.Cluster.Configuration.KubernetesNamespace} - " + - $"Pod name: {podInfo.Name} - Deployment name: {instance.Containers.StartResult.Deployment.Name}"); + $"Namespace: {container.RunningPod.StartResult.Cluster.Configuration.KubernetesNamespace} - " + + $"Pod name: {podInfo.Name} - Deployment name: {instance.Pod.StartResult.Deployment.Name}"); var codexVars = container.Recipe.EnvVars; foreach (var vars in codexVars) log.Log(vars.ToString()); log.Log(""); @@ -92,7 +92,7 @@ namespace ContinuousTests private void CheckCodexNodes(BaseLog log, Configuration config) { var nodes = entryPoint.CreateInterface() - .WrapCodexContainers(config.CodexDeployment.CodexInstances.Select(i => i.Containers).ToArray()); + .WrapCodexContainers(config.CodexDeployment.CodexInstances.Select(i => i.Pod).ToArray()); var pass = true; foreach (var n in nodes) { diff --git a/Tests/CodexTests/BasicTests/ContinuousSubstitute.cs b/Tests/CodexTests/BasicTests/ContinuousSubstitute.cs index 299c4b94..2898be20 100644 --- a/Tests/CodexTests/BasicTests/ContinuousSubstitute.cs +++ b/Tests/CodexTests/BasicTests/ContinuousSubstitute.cs @@ -132,7 +132,7 @@ namespace CodexTests.BasicTests private const string BytesStoredMetric = "codexRepostoreBytesUsed"; - private void PerformTest(ICodexNode primary, ICodexNode secondary, RunningContainers rc) + private void PerformTest(ICodexNode primary, ICodexNode secondary, RunningPod rc) { ScopedTestFiles(() => { diff --git a/Tests/DistTestCore/TestLifecycle.cs b/Tests/DistTestCore/TestLifecycle.cs index 50cb5fb2..1421fe59 100644 --- a/Tests/DistTestCore/TestLifecycle.cs +++ b/Tests/DistTestCore/TestLifecycle.cs @@ -13,7 +13,7 @@ namespace DistTestCore private const string TestsType = "dist-tests"; private readonly EntryPoint entryPoint; private readonly Dictionary metadata; - private readonly List runningContainers = new(); + private readonly List runningContainers = new(); private readonly string deployId; public TestLifecycle(TestLog log, Configuration configuration, ITimeSet timeSet, string testNamespace, string deployId) @@ -65,12 +65,12 @@ namespace DistTestCore return DateTime.UtcNow - TestStart; } - public void OnContainersStarted(RunningContainers rc) + public void OnContainersStarted(RunningPod rc) { runningContainers.Add(rc); } - public void OnContainersStopped(RunningContainers rc) + public void OnContainersStopped(RunningPod rc) { runningContainers.Remove(rc); } diff --git a/Tools/CodexNetDeployer/Deployer.cs b/Tools/CodexNetDeployer/Deployer.cs index 440d092a..04171083 100644 --- a/Tools/CodexNetDeployer/Deployer.cs +++ b/Tools/CodexNetDeployer/Deployer.cs @@ -122,7 +122,7 @@ namespace CodexNetDeployer }); } - private RunningContainers? DeployDiscordBot(CoreInterface ci, GethDeployment gethDeployment, + private RunningPod? DeployDiscordBot(CoreInterface ci, GethDeployment gethDeployment, CodexContractsDeployment contractsDeployment) { if (!config.DeployDiscordBot) return null; @@ -155,7 +155,7 @@ namespace CodexNetDeployer return rc; } - private RunningContainers? StartMetricsService(CoreInterface ci, List startResults) + private RunningPod? StartMetricsService(CoreInterface ci, List startResults) { if (!config.MetricsScraper || !startResults.Any()) return null; @@ -180,7 +180,7 @@ namespace CodexNetDeployer private CodexInstance CreateCodexInstance(ICodexNode node) { - return new CodexInstance(node.Container.RunningContainers, node.GetDebugInfo()); + return new CodexInstance(node.Container.RunningPod, node.GetDebugInfo()); } private string? GetKubeConfig(string kubeConfigFile) diff --git a/Tools/CodexNetDeployer/K8sHook.cs b/Tools/CodexNetDeployer/K8sHook.cs index b4c0c16a..b8c78b7c 100644 --- a/Tools/CodexNetDeployer/K8sHook.cs +++ b/Tools/CodexNetDeployer/K8sHook.cs @@ -18,11 +18,11 @@ namespace CodexNetDeployer this.metadata = metadata; } - public void OnContainersStarted(RunningContainers rc) + public void OnContainersStarted(RunningPod rc) { } - public void OnContainersStopped(RunningContainers rc) + public void OnContainersStopped(RunningPod rc) { }