This is an automated email from the ASF dual-hosted git repository. mmerli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git
The following commit(s) were added to refs/heads/master by this push: new 488942e Added option to create namespace on CLI passing list of clusters (#1579) 488942e is described below commit 488942e71f1bc4cde9f2b8c35e57d98c5b6efef4 Author: Matteo Merli <mme...@apache.org> AuthorDate: Wed Apr 18 14:31:39 2018 -0700 Added option to create namespace on CLI passing list of clusters (#1579) * Added option to create namespace on CLI passing list of clusters * Fixed NamespaceCreateBundlesTest.testCreateNamespaceWithDefaultBundles * Fixed expected value in test * Use List instead of Set otherwise jcommander would get all param in a single string * Added mocked test --- .../apache/pulsar/broker/admin/v2/Namespaces.java | 13 +- .../apache/pulsar/broker/admin/AdminApiTest.java | 21 +-- .../pulsar/broker/admin/v1/V1_AdminApiTest.java | 1 + .../org/apache/pulsar/client/admin/Namespaces.java | 23 ++++ .../client/admin/internal/NamespacesImpl.java | 17 +++ .../pulsar/admin/cli/PulsarAdminToolTest.java | 56 +++++++- .../org/apache/pulsar/admin/cli/CmdNamespaces.java | 144 ++++++++++++--------- .../pulsar/common/policies/data/Policies.java | 2 +- 8 files changed, 200 insertions(+), 77 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 7f28e0f..15ac532 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 @@ -644,14 +644,17 @@ public class Namespaces extends NamespacesBase { } private Policies getDefaultPolicesIfNull(Policies policies) { - if (policies != null) { - return policies; + if (policies == null) { + policies = new Policies(); } - Policies defaultPolicies = new Policies(); int defaultNumberOfBundles = config().getDefaultNumberOfNamespaceBundles(); - defaultPolicies.bundles = getBundles(defaultNumberOfBundles); - return defaultPolicies; + + if (policies.bundles == null) { + policies.bundles = getBundles(defaultNumberOfBundles); + } + + return policies; } private static final Logger log = LoggerFactory.getLogger(Namespaces.class); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 7c24692..0afe36d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -29,6 +29,13 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; +import com.google.common.collect.BoundType; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Range; +import com.google.common.collect.Sets; +import com.google.common.hash.Hashing; + import java.lang.reflect.Field; import java.net.URL; import java.util.ArrayList; @@ -47,6 +54,8 @@ import java.util.concurrent.TimeUnit; import javax.ws.rs.client.InvocationCallback; import javax.ws.rs.client.WebTarget; +import lombok.extern.slf4j.Slf4j; + import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; @@ -94,8 +103,8 @@ import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.PersistentTopicStats; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.RetentionPolicies; +import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.compaction.Compactor; @@ -107,15 +116,6 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; -import com.google.common.collect.BoundType; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Range; -import com.google.common.collect.Sets; -import com.google.common.hash.Hashing; - -import lombok.extern.slf4j.Slf4j; - @Slf4j public class AdminApiTest extends MockedPulsarServiceBaseTest { @@ -624,6 +624,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest { Policies policies = new Policies(); policies.replication_clusters = Sets.newHashSet("test"); + policies.bundles = Policies.defaultBundle(); policies.auth_policies.namespace_auth.put("my-role", EnumSet.allOf(AuthAction.class)); assertEquals(admin.namespaces().getPolicies("prop-xyz/ns1"), policies); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 6895036..c7a26ff 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -624,6 +624,7 @@ public class V1_AdminApiTest extends MockedPulsarServiceBaseTest { admin.namespaces().grantPermissionOnNamespace("prop-xyz/use/ns1", "my-role", EnumSet.allOf(AuthAction.class)); Policies policies = new Policies(); + policies.bundles = Policies.defaultBundle(); policies.auth_policies.namespace_auth.put("my-role", EnumSet.allOf(AuthAction.class)); assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1"), policies); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Namespaces.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Namespaces.java index 0f20d69..373c535 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Namespaces.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Namespaces.java @@ -237,6 +237,29 @@ public interface Namespaces { void createNamespace(String namespace, Set<String> clusters) throws PulsarAdminException; /** + * Create a new namespace. + * <p> + * Creates a new namespace with the specified policies. + * + * @param namespace + * Namespace name + * @param policies + * Policies for the namespace + * + * @throws NotAuthorizedException + * You don't have admin permission + * @throws NotFoundException + * Tenant or cluster does not exist + * @throws ConflictException + * Namespace already exists + * @throws PulsarAdminException + * Unexpected error + * + * @since 2.0 + */ + void createNamespace(String namespace, Policies policies) throws PulsarAdminException; + + /** * Delete an existing namespace. * <p> * The namespace needs to be empty. 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 404b95d..7c4fd04 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 @@ -18,6 +18,8 @@ */ package org.apache.pulsar.client.admin.internal; +import static com.google.common.base.Preconditions.checkArgument; + import java.util.List; import java.util.Map; import java.util.Set; @@ -127,6 +129,21 @@ public class NamespacesImpl extends BaseResource implements Namespaces { } @Override + public void createNamespace(String namespace, Policies policies) throws PulsarAdminException { + NamespaceName ns = NamespaceName.get(namespace); + checkArgument(ns.isV2(), "Create namespace with policies is only supported on newer namespaces"); + + try { + WebTarget path = namespacePath(ns); + + // For V2 API we pass full Policy class instance + request(path).put(Entity.entity(policies, MediaType.APPLICATION_JSON), ErrorData.class); + } catch (Exception e) { + throw getApiException(e); + } + } + + @Override public void createNamespace(String namespace, BundlesData bundlesData) throws PulsarAdminException { try { NamespaceName ns = NamespaceName.get(namespace); 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 25640ed..3bebaae 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 @@ -39,9 +39,11 @@ import org.apache.pulsar.client.api.MessageId; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; +import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.PersistencePolicies; +import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -389,6 +391,58 @@ public class PulsarAdminToolTest { } @Test + void namespacesCreateV1() throws Exception { + PulsarAdmin admin = Mockito.mock(PulsarAdmin.class); + Namespaces mockNamespaces = mock(Namespaces.class); + when(admin.namespaces()).thenReturn(mockNamespaces); + CmdNamespaces namespaces = new CmdNamespaces(admin); + + namespaces.run(split("create my-prop/my-cluster/my-namespace")); + verify(mockNamespaces).createNamespace("my-prop/my-cluster/my-namespace"); + } + + @Test + void namespacesCreateV1WithBundlesAndClusters() throws Exception { + PulsarAdmin admin = Mockito.mock(PulsarAdmin.class); + Namespaces mockNamespaces = mock(Namespaces.class); + when(admin.namespaces()).thenReturn(mockNamespaces); + CmdNamespaces namespaces = new CmdNamespaces(admin); + + namespaces.run(split("create my-prop/my-cluster/my-namespace --bundles 5 --clusters a,b,c")); + verify(mockNamespaces).createNamespace("my-prop/my-cluster/my-namespace", 5); + verify(mockNamespaces).setNamespaceReplicationClusters("my-prop/my-cluster/my-namespace", Sets.newHashSet("a", "b", "c")); + } + + @Test + void namespacesCreate() throws Exception { + PulsarAdmin admin = Mockito.mock(PulsarAdmin.class); + Namespaces mockNamespaces = mock(Namespaces.class); + when(admin.namespaces()).thenReturn(mockNamespaces); + CmdNamespaces namespaces = new CmdNamespaces(admin); + + namespaces.run(split("create my-prop/my-namespace")); + + Policies policies = new Policies(); + policies.bundles = null; + verify(mockNamespaces).createNamespace("my-prop/my-namespace", policies); + } + + @Test + void namespacesCreateWithBundlesAndClusters() throws Exception { + PulsarAdmin admin = Mockito.mock(PulsarAdmin.class); + Namespaces mockNamespaces = mock(Namespaces.class); + when(admin.namespaces()).thenReturn(mockNamespaces); + CmdNamespaces namespaces = new CmdNamespaces(admin); + + namespaces.run(split("create my-prop/my-namespace --bundles 5 --clusters a,b,c")); + + Policies policies = new Policies(); + policies.bundles = new BundlesData(5); + policies.replication_clusters = Sets.newHashSet("a", "b", "c"); + verify(mockNamespaces).createNamespace("my-prop/my-namespace", policies); + } + + @Test void resourceQuotas() throws Exception { PulsarAdmin admin = Mockito.mock(PulsarAdmin.class); ResourceQuotas mockResourceQuotas = mock(ResourceQuotas.class); @@ -440,7 +494,7 @@ public class PulsarAdminToolTest { nsIsolationPoliciesCmd.run(split("broker use --broker my-broker")); verify(mockClusters).getBrokerWithNamespaceIsolationPolicy("use", "my-broker"); } - + @Test void persistentTopics() throws Exception { PulsarAdmin admin = Mockito.mock(PulsarAdmin.class); 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 6a2c8f2..d40db50 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 @@ -18,43 +18,47 @@ */ package org.apache.pulsar.admin.cli; +import com.beust.jcommander.Parameter; +import com.beust.jcommander.ParameterException; +import com.beust.jcommander.Parameters; +import com.beust.jcommander.converters.CommaParameterSplitter; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; + import java.io.IOException; import java.util.Arrays; +import java.util.HashSet; import java.util.List; import org.apache.pulsar.admin.cli.utils.IOUtils; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; +import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.policies.data.BacklogQuota; +import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.PersistencePolicies; +import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionAuthMode; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.ParameterException; -import com.beust.jcommander.Parameters; -import com.beust.jcommander.converters.CommaParameterSplitter; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - @Parameters(commandDescription = "Operations about namespaces") public class CmdNamespaces extends CmdBase { - @Parameters(commandDescription = "Get the namespaces for a property") + @Parameters(commandDescription = "Get the namespaces for a tenant") private class GetNamespacesPerProperty extends CliCommand { - @Parameter(description = "property-name\n", required = true) + @Parameter(description = "tenant-name\n", required = true) private java.util.List<String> params; @Override void run() throws PulsarAdminException { - String property = getOneArgument(params); - print(admin.namespaces().getNamespaces(property)); + String tenant = getOneArgument(params); + print(admin.namespaces().getNamespaces(tenant)); } } - @Parameters(commandDescription = "Get the namespaces for a property in a cluster") + @Parameters(commandDescription = "Get the namespaces for a tenant in a cluster") private class GetNamespacesPerCluster extends CliCommand { - @Parameter(description = "property/cluster\n", required = true) + @Parameter(description = "tenant/cluster\n", required = true) private java.util.List<String> params; @Override @@ -64,9 +68,9 @@ public class CmdNamespaces extends CmdBase { } } - @Parameters(commandDescription = "Get the topics for a namespace") + @Parameters(commandDescription = "Get the list of topics for a namespace") private class GetTopics extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -76,9 +80,9 @@ public class CmdNamespaces extends CmdBase { } } - @Parameters(commandDescription = "Get the policies of a namspace") + @Parameters(commandDescription = "Get the configuration policies of a namspace") private class GetPolicies extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -90,9 +94,12 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Creates a new namespace") private class Create extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; + @Parameter(names = { "--clusters", "-c" }, description = "List of clusters this namespace will be assigned", required = false) + private java.util.List<String> clusters; + @Parameter(names = { "--bundles", "-b" }, description = "number of bundles to activate", required = false) private int numBundles = 0; @@ -105,17 +112,34 @@ public class CmdNamespaces extends CmdBase { throw new ParameterException( "Invalid number of bundles. Number of numbles has to be in the range of (0, 2^32]."); } - if (numBundles == 0) { - admin.namespaces().createNamespace(namespace); + + NamespaceName namespaceName = NamespaceName.get(namespace); + if (namespaceName.isV2()) { + Policies policies = new Policies(); + policies.bundles = numBundles > 0 ? new BundlesData(numBundles) : null; + + if (clusters != null) { + policies.replication_clusters = new HashSet<>(clusters); + } + + admin.namespaces().createNamespace(namespace, policies); } else { - admin.namespaces().createNamespace(namespace, numBundles); + if (numBundles == 0) { + admin.namespaces().createNamespace(namespace); + } else { + admin.namespaces().createNamespace(namespace, numBundles); + } + + if (clusters != null && !clusters.isEmpty()) { + admin.namespaces().setNamespaceReplicationClusters(namespace, new HashSet<>(clusters)); + } } } } @Parameters(commandDescription = "Deletes a namespace. The namespace needs to be empty") private class Delete extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -127,7 +151,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Grant permissions on a namspace") private class GrantPermissions extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = "--role", description = "Client role to which grant permissions", required = true) @@ -145,7 +169,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Revoke permissions on a namspace") private class RevokePermissions extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = "--role", description = "Client role to which revoke permissions", required = true) @@ -160,7 +184,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get the permissions on a namspace") private class Permissions extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -172,7 +196,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set replication clusters for a namspace") private class SetReplicationClusters extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--clusters", @@ -189,7 +213,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get replication clusters for a namspace") private class GetReplicationClusters extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -201,7 +225,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set Message TTL for a namspace") private class SetMessageTTL extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--messageTTL", "-ttl" }, description = "Message TTL in seconds", required = true) @@ -216,7 +240,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set Anti-affinity group name for a namspace") private class SetAntiAffinityGroup extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--group", "-g" }, description = "Anti-affinity group name", required = true) @@ -231,7 +255,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get Anti-affinity group name for a namspace") private class GetAntiAffinityGroup extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -244,9 +268,9 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get Anti-affinity namespaces grouped with the given anti-affinity group name") private class GetAntiAffinityNamespaces extends CliCommand { - @Parameter(names = { "--property", - "-p" }, description = "property is only used for authorization. Client has to be admin of any of the property to access this api", required = false) - private String property; + @Parameter(names = { "--tenant", + "-p" }, description = "tenant is only used for authorization. Client has to be admin of any of the tenant to access this api", required = false) + private String tenant; @Parameter(names = { "--cluster", "-c" }, description = "Cluster name", required = true) private String cluster; @@ -256,13 +280,13 @@ public class CmdNamespaces extends CmdBase { @Override void run() throws PulsarAdminException { - print(admin.namespaces().getAntiAffinityNamespaces(property, cluster, antiAffinityGroup)); + print(admin.namespaces().getAntiAffinityNamespaces(tenant, cluster, antiAffinityGroup)); } } @Parameters(commandDescription = "Remove Anti-affinity group name for a namspace") private class DeleteAntiAffinityGroup extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -275,7 +299,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Enable or disable deduplication for a namespace") private class SetDeduplication extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--enable", "-e" }, description = "Enable deduplication") @@ -297,7 +321,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set the retention policy for a namespace") private class SetRetention extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--time", @@ -323,7 +347,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get the retention policy for a namespace") private class GetRetention extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -335,7 +359,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get message TTL for a namspace") private class GetMessageTTL extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -347,7 +371,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Unload a namespace from the current serving broker") private class Unload extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Parameter(names = { "--bundle", "-b" }, description = "{start-boundary}_{end-boundary}\n") @@ -366,7 +390,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Split a namespace-bundle from the current serving broker") private class SplitBundle extends CliCommand { - @Parameter(description = "property/cluster/namespace/\n", required = true) + @Parameter(description = "tenant/namespace/\n", required = true) private java.util.List<String> params; @Parameter(names = { "--bundle", "-b" }, description = "{start-boundary}_{end-boundary}\n", required = true) @@ -385,7 +409,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set message-dispatch-rate for all topics of the namespace") private class SetDispatchRate extends CliCommand { - @Parameter(description = "property/cluster/namespace/\n", required = true) + @Parameter(description = "tenant/namespace/\n", required = true) private java.util.List<String> params; @Parameter(names = { "--msg-dispatch-rate", @@ -410,7 +434,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get configured message-dispatch-rate for all topics of the namespace (Disabled if value < 0)") private class GetDispatchRate extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -422,7 +446,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set subscription message-dispatch-rate for all subscription of the namespace") private class SetSuscriptionDispatchRate extends CliCommand { - @Parameter(description = "property/cluster/namespace/\n", required = true) + @Parameter(description = "tenant/namespace/\n", required = true) private java.util.List<String> params; @Parameter(names = { "--sub-msg-dispatch-rate", @@ -447,7 +471,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get subscription configured message-dispatch-rate for all topics of the namespace (Disabled if value < 0)") private class GetSubscriptionDispatchRate extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -459,7 +483,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get the backlog quota policies for a namespace") private class GetBacklogQuotaMap extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -471,7 +495,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set a backlog quota policy for a namespace") private class SetBacklogQuota extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "-l", "--limit" }, description = "Size limit (eg: 10M, 16G)", required = true) @@ -502,7 +526,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Remove a backlog quota policy from a namespace") private class RemoveBacklogQuota extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Override @@ -514,7 +538,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get the persistence policies for a namespace") private class GetPersistence extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -526,7 +550,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set the persistence policies for a namespace") private class SetPersistence extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "-e", @@ -555,7 +579,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Clear backlog for a namespace") private class ClearBacklog extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "-s", "--sub" }, description = "subscription name") @@ -591,7 +615,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Unsubscribe the given subscription on all topics on a namespace") private class Unsubscribe extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "-s", "--sub" }, description = "subscription name", required = true) @@ -614,7 +638,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Enable or disable message encryption required for a namespace") private class SetEncryptionRequired extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--enable", "-e" }, description = "Enable message encryption required") @@ -636,7 +660,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set subscription auth mode on a namespace") private class SetSubscriptionAuthMode extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "-m", "--subscription-auth-mode" }, description = "subscription name", required = true) @@ -651,7 +675,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get maxProducersPerTopic for a namespace") private class GetMaxProducersPerTopic extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -663,7 +687,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set maxProducersPerTopic for a namespace") private class SetMaxProducersPerTopic extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--max-producers-per-topic", "-p" }, description = "maxProducersPerTopic for a namespace", required = true) @@ -678,7 +702,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get maxConsumersPerTopic for a namespace") private class GetMaxConsumersPerTopic extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -690,7 +714,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set maxConsumersPerTopic for a namespace") private class SetMaxConsumersPerTopic extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--max-consumers-per-topic", "-c" }, description = "maxConsumersPerTopic for a namespace", required = true) @@ -705,7 +729,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Get maxConsumersPerSubscription for a namespace") private class GetMaxConsumersPerSubscription extends CliCommand { - @Parameter(description = "property/cluster/namespace\n", required = true) + @Parameter(description = "tenant/namespace\n", required = true) private java.util.List<String> params; @Override @@ -717,7 +741,7 @@ public class CmdNamespaces extends CmdBase { @Parameters(commandDescription = "Set maxConsumersPerSubscription for a namespace") private class SetMaxConsumersPerSubscription extends CliCommand { - @Parameter(description = "property/cluster/namespace", required = true) + @Parameter(description = "tenant/namespace", required = true) private java.util.List<String> params; @Parameter(names = { "--max-consumers-per-subscription", "-c" }, description = "maxConsumersPerSubscription for a namespace", required = true) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java index c1d85bd..59c1b3a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java @@ -32,7 +32,7 @@ public class Policies { public final AuthPolicies auth_policies = new AuthPolicies(); public Set<String> replication_clusters = Sets.newHashSet(); - public BundlesData bundles = defaultBundle(); + public BundlesData bundles; public Map<BacklogQuota.BacklogQuotaType, BacklogQuota> backlog_quota_map = Maps.newHashMap(); public Map<String, DispatchRate> clusterDispatchRate = Maps.newHashMap(); public Map<String, DispatchRate> subscriptionDispatchRate = Maps.newHashMap(); -- To stop receiving notification emails like this one, please contact mme...@apache.org.