mirror of
https://github.com/vacp2p/status-linea-besu.git
synced 2026-01-08 21:38:15 -05:00
remove k8s NAT method (#8289)
* remove k8s NAT method Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com> * changelog - update pr number in changelog Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com> --------- Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
This commit is contained in:
@@ -118,8 +118,6 @@ import org.hyperledger.besu.nat.NatService;
|
||||
import org.hyperledger.besu.nat.core.NatManager;
|
||||
import org.hyperledger.besu.nat.docker.DockerDetector;
|
||||
import org.hyperledger.besu.nat.docker.DockerNatManager;
|
||||
import org.hyperledger.besu.nat.kubernetes.KubernetesDetector;
|
||||
import org.hyperledger.besu.nat.kubernetes.KubernetesNatManager;
|
||||
import org.hyperledger.besu.nat.upnp.UpnpNatManager;
|
||||
import org.hyperledger.besu.plugin.BesuPlugin;
|
||||
import org.hyperledger.besu.plugin.data.EnodeURL;
|
||||
@@ -170,7 +168,6 @@ public class RunnerBuilder {
|
||||
private String p2pListenInterface = NetworkUtility.INADDR_ANY;
|
||||
private int p2pListenPort;
|
||||
private NatMethod natMethod = NatMethod.AUTO;
|
||||
private String natManagerServiceName;
|
||||
private boolean natMethodFallbackEnabled;
|
||||
private EthNetworkConfig ethNetworkConfig;
|
||||
private EthstatsOptions ethstatsOptions;
|
||||
@@ -313,17 +310,6 @@ public class RunnerBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Nat manager service name.
|
||||
*
|
||||
* @param natManagerServiceName the nat manager service name
|
||||
* @return the runner builder
|
||||
*/
|
||||
public RunnerBuilder natManagerServiceName(final String natManagerServiceName) {
|
||||
this.natManagerServiceName = natManagerServiceName;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable Nat method fallback.
|
||||
*
|
||||
@@ -1213,15 +1199,13 @@ public class RunnerBuilder {
|
||||
final NatMethod detectedNatMethod =
|
||||
Optional.of(natMethod)
|
||||
.filter(not(isEqual(NatMethod.AUTO)))
|
||||
.orElse(NatService.autoDetectNatMethod(new KubernetesDetector(), new DockerDetector()));
|
||||
.orElse(NatService.autoDetectNatMethod(new DockerDetector()));
|
||||
switch (detectedNatMethod) {
|
||||
case UPNP:
|
||||
return Optional.of(new UpnpNatManager());
|
||||
case DOCKER:
|
||||
return Optional.of(
|
||||
new DockerNatManager(p2pAdvertisedHost, p2pListenPort, jsonRpcConfiguration.getPort()));
|
||||
case KUBERNETES:
|
||||
return Optional.of(new KubernetesNatManager(natManagerServiceName));
|
||||
case NONE:
|
||||
default:
|
||||
return Optional.empty();
|
||||
|
||||
@@ -26,7 +26,6 @@ import static org.hyperledger.besu.cli.util.CommandLineUtils.DEPENDENCY_WARNING_
|
||||
import static org.hyperledger.besu.cli.util.CommandLineUtils.isOptionSet;
|
||||
import static org.hyperledger.besu.controller.BesuController.DATABASE_PATH;
|
||||
import static org.hyperledger.besu.ethereum.api.jsonrpc.authentication.EngineAuthService.EPHEMERAL_JWT_FILE;
|
||||
import static org.hyperledger.besu.nat.kubernetes.KubernetesNatManager.DEFAULT_BESU_SERVICE_NAME_FILTER;
|
||||
|
||||
import org.hyperledger.besu.BesuInfo;
|
||||
import org.hyperledger.besu.Runner;
|
||||
@@ -1509,22 +1508,6 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
private void validateNatParams() {
|
||||
if (natMethod.equals(NatMethod.KUBERNETES)) {
|
||||
logger.warn("Kubernetes NAT method is deprecated. Please use Docker or UPNP");
|
||||
}
|
||||
if (!unstableNatOptions.getNatManagerServiceName().equals(DEFAULT_BESU_SERVICE_NAME_FILTER)) {
|
||||
logger.warn(
|
||||
"`--Xnat-kube-service-name` and Kubernetes NAT method are deprecated. Please use Docker or UPNP");
|
||||
}
|
||||
if (!(natMethod.equals(NatMethod.AUTO) || natMethod.equals(NatMethod.KUBERNETES))
|
||||
&& !unstableNatOptions
|
||||
.getNatManagerServiceName()
|
||||
.equals(DEFAULT_BESU_SERVICE_NAME_FILTER)) {
|
||||
throw new ParameterException(
|
||||
this.commandLine,
|
||||
"The `--Xnat-kube-service-name` parameter is only used in kubernetes mode. Either remove --Xnat-kube-service-name"
|
||||
+ " or select the KUBERNETES mode (via --nat--method=KUBERNETES)");
|
||||
}
|
||||
if (natMethod.equals(NatMethod.AUTO) && !unstableNatOptions.getNatMethodFallbackEnabled()) {
|
||||
throw new ParameterException(
|
||||
this.commandLine,
|
||||
@@ -2264,7 +2247,6 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
||||
.besuController(controller)
|
||||
.p2pEnabled(p2pEnabled)
|
||||
.natMethod(natMethod)
|
||||
.natManagerServiceName(unstableNatOptions.getNatManagerServiceName())
|
||||
.natMethodFallbackEnabled(unstableNatOptions.getNatMethodFallbackEnabled())
|
||||
.discoveryEnabled(peerDiscoveryEnabled)
|
||||
.ethNetworkConfig(ethNetworkConfig)
|
||||
|
||||
@@ -14,21 +14,11 @@
|
||||
*/
|
||||
package org.hyperledger.besu.cli.options;
|
||||
|
||||
import static org.hyperledger.besu.nat.kubernetes.KubernetesNatManager.DEFAULT_BESU_SERVICE_NAME_FILTER;
|
||||
|
||||
import picocli.CommandLine;
|
||||
|
||||
/** The Nat Cli options. */
|
||||
public class NatOptions {
|
||||
|
||||
@SuppressWarnings({"FieldCanBeFinal", "FieldMayBeFinal"}) // PicoCLI requires non-final Strings.
|
||||
@CommandLine.Option(
|
||||
hidden = true,
|
||||
names = {"--Xnat-kube-service-name"},
|
||||
description =
|
||||
"Specify the name of the service that will be used by the nat manager in Kubernetes. (default: ${DEFAULT-VALUE})")
|
||||
private String natManagerServiceName = DEFAULT_BESU_SERVICE_NAME_FILTER;
|
||||
|
||||
@CommandLine.Option(
|
||||
hidden = true,
|
||||
names = {"--Xnat-method-fallback-enabled"},
|
||||
@@ -49,15 +39,6 @@ public class NatOptions {
|
||||
return new NatOptions();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets nat manager service name.
|
||||
*
|
||||
* @return the nat manager service name
|
||||
*/
|
||||
public String getNatManagerServiceName() {
|
||||
return natManagerServiceName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether nat method fallback is enabled.
|
||||
*
|
||||
|
||||
@@ -327,7 +327,6 @@ public abstract class CommandTestAbstract {
|
||||
when(mockRunnerBuilder.permissioningConfiguration(any())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.p2pEnabled(anyBoolean())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.natMethod(any())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.natManagerServiceName(any())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.natMethodFallbackEnabled(anyBoolean())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.jsonRpcConfiguration(any())).thenReturn(mockRunnerBuilder);
|
||||
when(mockRunnerBuilder.engineJsonRpcConfiguration(any())).thenReturn(mockRunnerBuilder);
|
||||
|
||||
@@ -16,7 +16,6 @@ package org.hyperledger.besu.cli;
|
||||
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hyperledger.besu.nat.kubernetes.KubernetesNatManager.DEFAULT_BESU_SERVICE_NAME_FILTER;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@@ -47,16 +46,6 @@ public class NatOptionsTest extends CommandTestAbstract {
|
||||
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void natManagerPodNamePropertyDefaultIsBesu() {
|
||||
parseCommand();
|
||||
|
||||
verify(mockRunnerBuilder).natManagerServiceName(eq(DEFAULT_BESU_SERVICE_NAME_FILTER));
|
||||
|
||||
assertThat(commandOutput.toString(UTF_8)).isEmpty();
|
||||
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void natMethodOptionIsParsedCorrectly() {
|
||||
|
||||
@@ -75,52 +64,6 @@ public class NatOptionsTest extends CommandTestAbstract {
|
||||
parseCommand("--nat-method", "DOCKER");
|
||||
verify(mockRunnerBuilder).natMethod(eq(NatMethod.DOCKER));
|
||||
|
||||
parseCommand("--nat-method", "KUBERNETES");
|
||||
verify(mockRunnerBuilder).natMethod(eq(NatMethod.KUBERNETES));
|
||||
|
||||
assertThat(commandOutput.toString(UTF_8)).isEmpty();
|
||||
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void natManagerPodNamePropertyIsCorrectlyUpdated() {
|
||||
final String podName = "besu-updated";
|
||||
parseCommand("--Xnat-kube-service-name", podName);
|
||||
|
||||
verify(mockRunnerBuilder).natManagerServiceName(eq(podName));
|
||||
|
||||
assertThat(commandOutput.toString(UTF_8)).isEmpty();
|
||||
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void natManagerPodNameCannotBeUsedWithNatDockerMethod() {
|
||||
parseCommand("--nat-method", "DOCKER", "--Xnat-kube-service-name", "besu-updated");
|
||||
Mockito.verifyNoInteractions(mockRunnerBuilder);
|
||||
assertThat(commandOutput.toString(UTF_8)).isEmpty();
|
||||
assertThat(commandErrorOutput.toString(UTF_8))
|
||||
.contains(
|
||||
"The `--Xnat-kube-service-name` parameter is only used in kubernetes mode. Either remove --Xnat-kube-service-name or select the KUBERNETES mode (via --nat--method=KUBERNETES)");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void natManagerPodNameCannotBeUsedWithNatNoneMethod() {
|
||||
parseCommand("--nat-method", "NONE", "--Xnat-kube-service-name", "besu-updated");
|
||||
Mockito.verifyNoInteractions(mockRunnerBuilder);
|
||||
assertThat(commandOutput.toString(UTF_8)).isEmpty();
|
||||
assertThat(commandErrorOutput.toString(UTF_8))
|
||||
.contains(
|
||||
"The `--Xnat-kube-service-name` parameter is only used in kubernetes mode. Either remove --Xnat-kube-service-name or select the KUBERNETES mode (via --nat--method=KUBERNETES)");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void natMethodFallbackEnabledPropertyIsCorrectlyUpdatedWithKubernetes() {
|
||||
|
||||
parseCommand("--nat-method", "KUBERNETES", "--Xnat-method-fallback-enabled", "false");
|
||||
verify(mockRunnerBuilder).natMethodFallbackEnabled(eq(false));
|
||||
parseCommand("--nat-method", "KUBERNETES", "--Xnat-method-fallback-enabled", "true");
|
||||
verify(mockRunnerBuilder).natMethodFallbackEnabled(eq(true));
|
||||
|
||||
assertThat(commandOutput.toString(UTF_8)).isEmpty();
|
||||
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
|
||||
}
|
||||
@@ -167,6 +110,6 @@ public class NatOptionsTest extends CommandTestAbstract {
|
||||
assertThat(commandOutput.toString(UTF_8)).isEmpty();
|
||||
assertThat(commandErrorOutput.toString(UTF_8))
|
||||
.contains(
|
||||
"Invalid value for option '--nat-method': expected one of [UPNP, UPNPP2PONLY, DOCKER, KUBERNETES, AUTO, NONE] (case-insensitive) but was 'invalid'");
|
||||
"Invalid value for option '--nat-method': expected one of [UPNP, UPNPP2PONLY, DOCKER, AUTO, NONE] (case-insensitive) but was 'invalid'");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ security-module="localfile"
|
||||
identity="PegaSysEng"
|
||||
p2p-enabled=true
|
||||
nat-method="NONE"
|
||||
Xnat-kube-service-name="besu"
|
||||
Xnat-method-fallback-enabled=true
|
||||
discovery-enabled=false
|
||||
poa-discovery-retry-bootnodes=true
|
||||
|
||||
Reference in New Issue
Block a user