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