This is an automated email from the ASF dual-hosted git repository.

linlin 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 6778dd19 [pulsar-admin] Check validity of --actions for topic and 
namespace (#12412)
6778dd19 is described below

commit 6778dd191671150795d126737e373410ef4812e2
Author: Ruguo Yu <[email protected]>
AuthorDate: Fri Nov 5 14:35:25 2021 +0800

    [pulsar-admin] Check validity of --actions for topic and namespace (#12412)
    
    Motivation
    We should check the validity of the --actions and give a more friendly 
prompt message when granting permission to topic or namespace through 
./bin/pulsar-admin topics grant-permission or ./bin/pulsar-admin namespaces 
grant-permission.
    Currently, the lack of verification for --action will directly display the 
exception, as below:
    
    ./bin/pulsar-admin topics grant-permission tenant/ns/tp --role rl --actions 
producer
    java.lang.IllegalArgumentException: No enum constant 
org.apache.pulsar.common.policies.data.AuthAction.producer
        at java.lang.Enum.valueOf(Enum.java:238)
        at 
org.apache.pulsar.common.policies.data.AuthAction.valueOf(AuthAction.java:24)
        at 
org.apache.pulsar.admin.cli.CliCommand.getAuthActions(CliCommand.java:171)
        at 
org.apache.pulsar.admin.cli.CmdTopics$GrantPermissions.run(CmdTopics.java:293)
        at org.apache.pulsar.admin.cli.CmdBase.run(CmdBase.java:86)
        at 
org.apache.pulsar.admin.cli.PulsarAdminTool.run(PulsarAdminTool.java:282)
        at 
org.apache.pulsar.admin.cli.PulsarAdminTool.main(PulsarAdminTool.java:329)
    Modifications
    Improve the description information of the --action
    Throw ParameterException when IllegalArgumentException occurs when 
executing AuthAction.valueOf(action)
---
 .../src/main/java/org/apache/pulsar/admin/cli/CliCommand.java  | 10 +++++++++-
 .../main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java   |  3 ++-
 .../java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java  |  3 ++-
 .../src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java   |  3 ++-
 4 files changed, 15 insertions(+), 4 deletions(-)

diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CliCommand.java 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CliCommand.java
index 6a1428a..dc12896 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CliCommand.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CliCommand.java
@@ -18,6 +18,7 @@
  */
 package org.apache.pulsar.admin.cli;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -167,8 +168,15 @@ abstract class CliCommand {
 
     static Set<AuthAction> getAuthActions(List<String> actions) {
         Set<AuthAction> res = Sets.newTreeSet();
+        AuthAction authAction;
         for (String action : actions) {
-            res.add(AuthAction.valueOf(action));
+            try {
+                authAction = AuthAction.valueOf(action);
+            } catch (IllegalArgumentException exception) {
+                throw new ParameterException(String.format("Illegal auth 
action '%s'. Possible values: %s",
+                        action, Arrays.toString(AuthAction.values())));
+            }
+            res.add(authAction);
         }
 
         return res;
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java
index 4113f58..544b9f3 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java
@@ -210,7 +210,8 @@ public class CmdNamespaces extends CmdBase {
         @Parameter(names = "--role", description = "Client role to which grant 
permissions", required = true)
         private String role;
 
-        @Parameter(names = "--actions", description = "Actions to be granted 
(produce,consume)", required = true, splitter = CommaParameterSplitter.class)
+        @Parameter(names = "--actions", description = "Actions to be granted 
(produce,consume,sources,sinks," +
+                "functions,packages)", required = true)
         private List<String> actions;
 
         @Override
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
index 759b602..c732ca4 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
@@ -125,7 +125,8 @@ public class CmdPersistentTopics extends CmdBase {
         @Parameter(names = "--role", description = "Client role to which grant 
permissions", required = true)
         private String role;
 
-        @Parameter(names = "--actions", description = "Actions to be granted 
(produce,consume)", required = true, splitter = CommaParameterSplitter.class)
+        @Parameter(names = "--actions", description = "Actions to be granted 
(produce,consume,sources,sinks," +
+                "functions,packages)", required = true)
         private List<String> actions;
 
         @Override
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java
index 7ba4f73..520479d 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java
@@ -291,7 +291,8 @@ public class CmdTopics extends CmdBase {
         @Parameter(names = "--role", description = "Client role to which grant 
permissions", required = true)
         private String role;
 
-        @Parameter(names = "--actions", description = "Actions to be granted 
(produce,consume)", required = true, splitter = CommaParameterSplitter.class)
+        @Parameter(names = "--actions", description = "Actions to be granted 
(produce,consume,sources,sinks," +
+                "functions,packages)", required = true)
         private List<String> actions;
 
         @Override

Reply via email to