You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/11/08 11:51:55 UTC
[pulsar] branch master updated: [pulsar-admin] Add
remove-subscription-types-enabled command for namespace (#12392)
This is an automated email from the ASF dual-hosted git repository.
penghui 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 eb85b22 [pulsar-admin] Add remove-subscription-types-enabled command for namespace (#12392)
eb85b22 is described below
commit eb85b224d2203dd0cdc912d5c85b885b3a35e4e0
Author: Ruguo Yu <ji...@163.com>
AuthorDate: Mon Nov 8 19:50:57 2021 +0800
[pulsar-admin] Add remove-subscription-types-enabled command for namespace (#12392)
### Motivation
CLI `bin/pulsar-admin` supports `set-subscription-types-enabled` and `get-subscription-types-enabled` command, but lacks corresponding `remove-subscription-types-enabled` commands, the purpose of this PR is to add this command.
---
.../apache/pulsar/broker/admin/v2/Namespaces.java | 13 +++++++++++
.../apache/pulsar/broker/admin/NamespacesTest.java | 4 ++--
.../org/apache/pulsar/client/admin/Namespaces.java | 25 ++++++++++++++++++++++
.../client/admin/internal/NamespacesImpl.java | 21 ++++++++++++++++++
.../pulsar/admin/cli/PulsarAdminToolTest.java | 3 +++
.../org/apache/pulsar/admin/cli/CmdNamespaces.java | 13 +++++++++++
6 files changed, 77 insertions(+), 2 deletions(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java
index e1e892c..4d50682 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java
@@ -19,6 +19,7 @@
package org.apache.pulsar.broker.admin.v2;
import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles;
+import com.google.common.collect.Sets;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -1674,6 +1675,18 @@ public class Namespaces extends NamespacesBase {
internalSetSubscriptionTypesEnabled(subscriptionTypesEnabled);
}
+ @DELETE
+ @Path("/{tenant}/{namespace}/subscriptionTypesEnabled")
+ @ApiOperation(value = " Remove subscription types enabled on a namespace.")
+ @ApiResponses(value = {
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
+ @ApiResponse(code = 404, message = "Tenant or Namespace does not exist"),
+ @ApiResponse(code = 409, message = "Concurrent modification")})
+ public void removeSubscriptionTypesEnabled(@PathParam("tenant") String tenant,
+ @PathParam("namespace") String namespace) {
+ validateNamespaceName(tenant, namespace);
+ internalSetSubscriptionTypesEnabled(Sets.newHashSet());
+ }
@GET
@Path("/{tenant}/{namespace}/schemaValidationEnforced")
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
index 9a366a2..e59f42d 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
@@ -1698,8 +1698,8 @@ public class NamespacesTest extends MockedPulsarServiceBaseTest {
}
// clear all namespace subType enabled, add failover to broker.conf and sub with shared will fail
- subscriptionTypes.clear();
- admin.namespaces().setSubscriptionTypesEnabled(namespace, subscriptionTypes);
+ admin.namespaces().removeSubscriptionTypesEnabled(namespace);
+ assertEquals(admin.namespaces().getSubscriptionTypesEnabled(namespace), Sets.newHashSet());
consumerBuilder.subscriptionType(SubscriptionType.Shared);
HashSet<String> subscriptions = new HashSet<>();
subscriptions.add("Failover");
diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java
index fb1b67e..7edba8f 100644
--- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java
+++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java
@@ -1444,6 +1444,31 @@ public interface Namespaces {
CompletableFuture<Set<SubscriptionType>> getSubscriptionTypesEnabledAsync(String namespace);
/**
+ * Removes the subscriptionTypesEnabled policy for a given namespace.
+ *
+ * @param namespace
+ * Namespace name
+ *
+ * @throws NotAuthorizedException
+ * Don't have admin permission
+ * @throws NotFoundException
+ * Namespace does not exist
+ * @throws PulsarAdminException
+ * Unexpected error
+ * @return
+ */
+ void removeSubscriptionTypesEnabled(String namespace) throws PulsarAdminException;
+
+ /**
+ * Removes the subscriptionTypesEnabled policy for a given namespace.
+ *
+ * @param namespace
+ * Namespace name
+ * @return
+ */
+ CompletableFuture<Void> removeSubscriptionTypesEnabledAsync(String namespace);
+
+ /**
* Removes the autoSubscriptionCreation policy for a given namespace.
* <p/>
* Allowing the broker to dictate the subscription auto-creation policy.
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java
index 04da2f0..3a8d2ed 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java
@@ -1201,6 +1201,27 @@ public class NamespacesImpl extends BaseResource implements Namespaces {
}
@Override
+ public void removeSubscriptionTypesEnabled(String namespace) throws PulsarAdminException {
+ try {
+ removeSubscriptionTypesEnabledAsync(namespace).get(this.readTimeoutMs, TimeUnit.MILLISECONDS);
+ } catch (ExecutionException e) {
+ throw (PulsarAdminException) e.getCause();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new PulsarAdminException(e);
+ } catch (TimeoutException e) {
+ throw new PulsarAdminException.TimeoutException(e);
+ }
+ }
+
+ @Override
+ public CompletableFuture<Void> removeSubscriptionTypesEnabledAsync(String namespace) {
+ NamespaceName ns = NamespaceName.get(namespace);
+ WebTarget path = namespacePath(ns, "subscriptionTypesEnabled");
+ return asyncDeleteRequest(path);
+ }
+
+ @Override
public void removeAutoSubscriptionCreation(String namespace) throws PulsarAdminException {
try {
removeAutoSubscriptionCreationAsync(namespace).get(this.readTimeoutMs, TimeUnit.MILLISECONDS);
diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
index ca84fa7..f90a284 100644
--- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
+++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
@@ -368,6 +368,9 @@ public class PulsarAdminToolTest {
namespaces.run(split("get-subscription-types-enabled myprop/clust/ns1"));
verify(mockNamespaces).getSubscriptionTypesEnabled("myprop/clust/ns1");
+ namespaces.run(split("remove-subscription-types-enabled myprop/clust/ns1"));
+ verify(mockNamespaces).removeSubscriptionTypesEnabled("myprop/clust/ns1");
+
namespaces.run(split("get-schema-validation-enforce myprop/clust/ns1 -ap"));
verify(mockNamespaces).getSchemaValidationEnforced("myprop/clust/ns1", true);
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 dbbb7a9..04acc68 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
@@ -364,6 +364,18 @@ public class CmdNamespaces extends CmdBase {
}
}
+ @Parameters(commandDescription = "Remove subscription types enabled for a namespace")
+ private class RemoveSubscriptionTypesEnabled extends CliCommand {
+ @Parameter(description = "tenant/namespace", required = true)
+ private java.util.List<String> params;
+
+ @Override
+ void run() throws PulsarAdminException {
+ String namespace = validateNamespace(params);
+ getAdmin().namespaces().removeSubscriptionTypesEnabled(namespace);
+ }
+ }
+
@Parameters(commandDescription = "Set Message TTL for a namespace")
private class SetMessageTTL extends CliCommand {
@Parameter(description = "tenant/namespace", required = true)
@@ -2451,6 +2463,7 @@ public class CmdNamespaces extends CmdBase {
jcommander.addCommand("set-subscription-types-enabled", new SetSubscriptionTypesEnabled());
jcommander.addCommand("get-subscription-types-enabled", new GetSubscriptionTypesEnabled());
+ jcommander.addCommand("remove-subscription-types-enabled", new RemoveSubscriptionTypesEnabled());
jcommander.addCommand("get-backlog-quotas", new GetBacklogQuotaMap());
jcommander.addCommand("set-backlog-quota", new SetBacklogQuota());