You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by rd...@apache.org on 2023/03/04 16:47:01 UTC
[pulsar] branch master updated: [fix][cli] Fix Pulsar admin tool is ignoring tls-trust-cert path arg (#19696)
This is an automated email from the ASF dual-hosted git repository.
rdhabalia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new e75def80ff2 [fix][cli] Fix Pulsar admin tool is ignoring tls-trust-cert path arg (#19696)
e75def80ff2 is described below
commit e75def80ff2f366919b55cfd42f1dfab3f719b88
Author: Rajan Dhabalia <rd...@apache.org>
AuthorDate: Sat Mar 4 08:46:50 2023 -0800
[fix][cli] Fix Pulsar admin tool is ignoring tls-trust-cert path arg (#19696)
---
.../admin/internal/PulsarAdminBuilderImpl.java | 2 ++
.../pulsar/admin/cli/PulsarAdminSupplier.java | 5 +++-
.../apache/pulsar/admin/cli/PulsarAdminTool.java | 12 ++++++--
.../org/apache/pulsar/admin/cli/TestRunMain.java | 35 ++++++++++++++++++++++
4 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java
index 3e7ee472e46..009fa67fbaa 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java
@@ -21,6 +21,7 @@ package org.apache.pulsar.client.admin.internal;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.admin.PulsarAdminBuilder;
@@ -33,6 +34,7 @@ import org.apache.pulsar.client.impl.conf.ConfigurationDataUtils;
public class PulsarAdminBuilderImpl implements PulsarAdminBuilder {
+ @Getter
protected ClientConfigurationData conf;
private ClassLoader clientBuilderClassLoader = null;
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminSupplier.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminSupplier.java
index 6aa8d2b9c61..764dc9de5df 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminSupplier.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminSupplier.java
@@ -53,7 +53,7 @@ public class PulsarAdminSupplier implements Supplier<PulsarAdmin> {
}
}
- private final PulsarAdminBuilder adminBuilder;
+ protected final PulsarAdminBuilder adminBuilder;
private RootParamsKey currentParamsKey;
private PulsarAdmin admin;
@@ -103,6 +103,9 @@ public class PulsarAdminSupplier implements Supplier<PulsarAdmin> {
if (isNotBlank(rootParams.tlsProvider)) {
adminBuilder.sslProvider(rootParams.tlsProvider);
}
+ if (isNotBlank(rootParams.tlsTrustCertsFilePath)) {
+ adminBuilder.tlsTrustCertsFilePath(rootParams.tlsTrustCertsFilePath);
+ }
}
}
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java
index 7a7a4c4b444..ca0a8a055cf 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java
@@ -45,7 +45,7 @@ import org.apache.pulsar.common.util.ShutdownUtil;
public class PulsarAdminTool {
- private static boolean allowSystemExit = true;
+ protected static boolean allowSystemExit = true;
private static int lastExitCode = Integer.MIN_VALUE;
@@ -54,7 +54,7 @@ public class PulsarAdminTool {
protected JCommander jcommander;
protected RootParams rootParams;
private final Properties properties;
- private PulsarAdminSupplier pulsarAdminSupplier;
+ protected PulsarAdminSupplier pulsarAdminSupplier;
@Getter
public static class RootParams {
@@ -277,11 +277,16 @@ public class PulsarAdminTool {
}
public static void main(String[] args) throws Exception {
+ execute(args);
+ }
+
+ @VisibleForTesting
+ public static PulsarAdminTool execute(String[] args) throws Exception {
lastExitCode = 0;
if (args.length == 0) {
System.out.println("Usage: pulsar-admin CONF_FILE_PATH [options] [command] [command options]");
exit(0);
- return;
+ return null;
}
String configFile = args[0];
Properties properties = new Properties();
@@ -299,6 +304,7 @@ public class PulsarAdminTool {
} else {
exit(1);
}
+ return tool;
}
private static void exit(int code) {
diff --git a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestRunMain.java b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestRunMain.java
index 3ac7abf0efc..c3dbd1cdc7c 100644
--- a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestRunMain.java
+++ b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestRunMain.java
@@ -19,9 +19,15 @@
package org.apache.pulsar.admin.cli;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Properties;
+import org.apache.pulsar.client.admin.internal.PulsarAdminBuilderImpl;
import org.testng.annotations.Test;
public class TestRunMain {
@@ -75,4 +81,33 @@ public class TestRunMain {
"tenants"});
assertEquals(pulsarAdminTool.rootParams.tlsProvider, "OPENSSL");
}
+
+ @Test
+ public void testMainArgs() throws Exception {
+ String tlsTrustCertsFilePathInFile = "ca-file.cert";
+ String tlsTrustCertsFilePathInArg = "ca-arg.cert";
+ File testConfigFile = new File("tmp." + System.currentTimeMillis() + ".properties");
+ if (testConfigFile.exists()) {
+ testConfigFile.delete();
+ }
+ PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
+ printWriter.println("tlsTrustCertsFilePath=" + tlsTrustCertsFilePathInFile);
+ printWriter.println("tlsAllowInsecureConnection=" + false);
+ printWriter.println("tlsEnableHostnameVerification=" + false);
+
+ printWriter.close();
+ testConfigFile.deleteOnExit();
+
+ String argStrTemp = "%s %s --admin-url https://url:4443 " + "topics stats persistent://prop/cluster/ns/t1";
+ boolean prevValue = PulsarAdminTool.allowSystemExit;
+ PulsarAdminTool.allowSystemExit = false;
+
+ String argStr = argStr = argStrTemp.format(argStrTemp, testConfigFile.getAbsolutePath(),
+ "--tls-trust-cert-path " + tlsTrustCertsFilePathInArg);
+ PulsarAdminTool tool = PulsarAdminTool.execute(argStr.split(" "));
+ assertNotNull(tool);
+ PulsarAdminBuilderImpl builder = (PulsarAdminBuilderImpl) tool.pulsarAdminSupplier.adminBuilder;
+ assertEquals(builder.getConf().getTlsTrustCertsFilePath(), tlsTrustCertsFilePathInArg);
+ PulsarAdminTool.allowSystemExit = prevValue;
+ }
}