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;
+    }
 }