From 2fae9505d6ca77b7c672c5c053c131252ce3b026 Mon Sep 17 00:00:00 2001 From: benbierens Date: Mon, 23 Oct 2023 15:28:20 +0200 Subject: [PATCH] attempt to fix contract deployment in testnet mode --- Framework/KubernetesWorkflow/K8sController.cs | 15 --------------- .../KubernetesWorkflow/RunnerLocationUtils.cs | 2 +- Framework/KubernetesWorkflow/RunningContainers.cs | 12 ++++++++---- Framework/KubernetesWorkflow/StartupWorkflow.cs | 2 +- Framework/Utils/Address.cs | 7 +++++-- .../CodexContractsContainerRecipe.cs | 7 +++++-- 6 files changed, 20 insertions(+), 25 deletions(-) diff --git a/Framework/KubernetesWorkflow/K8sController.cs b/Framework/KubernetesWorkflow/K8sController.cs index 1cad8ba..0e06ba4 100644 --- a/Framework/KubernetesWorkflow/K8sController.cs +++ b/Framework/KubernetesWorkflow/K8sController.cs @@ -81,10 +81,6 @@ namespace KubernetesWorkflow { DeleteNamespace(ns); } - foreach (var ns in namespaces) - { - WaitUntilNamespaceDeleted(ns); - } } public void DeleteNamespace() @@ -94,7 +90,6 @@ namespace KubernetesWorkflow { client.Run(c => c.DeleteNamespace(K8sNamespace, null, null, gracePeriodSeconds: 0)); } - WaitUntilNamespaceDeleted(); } public void DeleteNamespace(string ns) @@ -645,16 +640,6 @@ namespace KubernetesWorkflow WaitUntil(() => IsNamespaceOnline(K8sNamespace)); } - private void WaitUntilNamespaceDeleted() - { - WaitUntil(() => !IsNamespaceOnline(K8sNamespace)); - } - - private void WaitUntilNamespaceDeleted(string name) - { - WaitUntil(() => !IsNamespaceOnline(name)); - } - private void WaitUntilDeploymentOnline(string deploymentName) { WaitUntil(() => diff --git a/Framework/KubernetesWorkflow/RunnerLocationUtils.cs b/Framework/KubernetesWorkflow/RunnerLocationUtils.cs index 86984f8..79bc6be 100644 --- a/Framework/KubernetesWorkflow/RunnerLocationUtils.cs +++ b/Framework/KubernetesWorkflow/RunnerLocationUtils.cs @@ -29,7 +29,7 @@ namespace KubernetesWorkflow foreach (var port in container.ContainerPorts) { - if (PingHost(Format(port.ExternalAddress))) + if (port.ExternalAddress.IsValid() && PingHost(Format(port.ExternalAddress))) { return RunnerLocation.ExternalToCluster; } diff --git a/Framework/KubernetesWorkflow/RunningContainers.cs b/Framework/KubernetesWorkflow/RunningContainers.cs index 8d9956f..433dba9 100644 --- a/Framework/KubernetesWorkflow/RunningContainers.cs +++ b/Framework/KubernetesWorkflow/RunningContainers.cs @@ -1,5 +1,4 @@ -using Newtonsoft.Json; -using Utils; +using Utils; namespace KubernetesWorkflow { @@ -39,14 +38,19 @@ namespace KubernetesWorkflow public Port[] ServicePorts { get; } public ContainerPort[] ContainerPorts { get; } + public ContainerPort GetContainerPort(string portTag) + { + return ContainerPorts.Single(c => c.Port.Tag == portTag); + } + public Address GetAddress(string portTag) { - var containerPort = ContainerPorts.Single(c => c.Port.Tag == portTag); + var containerPort = GetContainerPort(portTag); if (RunnerLocationUtils.DetermineRunnerLocation(this) == RunnerLocation.InternalToCluster) { return containerPort.InternalAddress; } - if (containerPort.ExternalAddress == Address.InvalidAddress) throw new Exception($"Getting address by tag {portTag} resulted in an invalid address."); + if (!containerPort.ExternalAddress.IsValid()) throw new Exception($"Getting address by tag {portTag} resulted in an invalid address."); return containerPort.ExternalAddress; } } diff --git a/Framework/KubernetesWorkflow/StartupWorkflow.cs b/Framework/KubernetesWorkflow/StartupWorkflow.cs index 7d7a874..3cf59a1 100644 --- a/Framework/KubernetesWorkflow/StartupWorkflow.cs +++ b/Framework/KubernetesWorkflow/StartupWorkflow.cs @@ -152,7 +152,7 @@ namespace KubernetesWorkflow { result.Add(new ContainerPort( internalPort, - Address.InvalidAddress, + new Address(string.Empty, 0), GetContainerInternalAddress(internalPort))); } } diff --git a/Framework/Utils/Address.cs b/Framework/Utils/Address.cs index b9f15a8..4d37083 100644 --- a/Framework/Utils/Address.cs +++ b/Framework/Utils/Address.cs @@ -2,8 +2,6 @@ { public class Address { - public static readonly Address InvalidAddress = new Address(string.Empty, 0); - public Address(string host, int port) { Host = host; @@ -17,5 +15,10 @@ { return $"{Host}:{Port}"; } + + public bool IsValid() + { + return !string.IsNullOrEmpty(Host) && Port > 0; + } } } diff --git a/ProjectPlugins/CodexContractsPlugin/CodexContractsContainerRecipe.cs b/ProjectPlugins/CodexContractsPlugin/CodexContractsContainerRecipe.cs index 39ec222..3a5dd3b 100644 --- a/ProjectPlugins/CodexContractsPlugin/CodexContractsContainerRecipe.cs +++ b/ProjectPlugins/CodexContractsPlugin/CodexContractsContainerRecipe.cs @@ -1,4 +1,5 @@ -using KubernetesWorkflow; +using GethPlugin; +using KubernetesWorkflow; namespace CodexContractsPlugin { @@ -16,8 +17,10 @@ namespace CodexContractsPlugin { var config = startupConfig.Get(); + var containerPort = config.GethNode.StartResult.Container.GetContainerPort(GethContainerRecipe.HttpPortTag); + var ip = config.GethNode.StartResult.Container.Pod.PodInfo.Ip; - var port = config.GethNode.StartResult.HttpPort.Number; + var port = containerPort.InternalAddress.Port; AddEnvVar("DISTTEST_NETWORK_URL", $"http://{ip}:{port}"); AddEnvVar("HARDHAT_NETWORK", "codexdisttestnetwork");