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 4c7f83b  [pulsar-broker] Fix: Tenant-admin should able to lookup topic 
(#8353)
4c7f83b is described below

commit 4c7f83b93b454b4f74dbc418a519ceb6dc58296b
Author: Rajan Dhabalia <[email protected]>
AuthorDate: Thu Oct 29 00:30:56 2020 -0700

    [pulsar-broker] Fix: Tenant-admin should able to lookup topic (#8353)
    
    Co-authored-by: Sijie Guo <[email protected]>
---
 .../java/org/apache/pulsar/broker/lookup/TopicLookupBase.java  | 10 +++++++++-
 .../pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java      |  3 ++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/lookup/TopicLookupBase.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/lookup/TopicLookupBase.java
index cd140d5..19ddce75 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/lookup/TopicLookupBase.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/lookup/TopicLookupBase.java
@@ -65,7 +65,7 @@ public class TopicLookupBase extends PulsarWebResource {
 
         try {
             validateClusterOwnership(topicName.getCluster());
-            checkConnect(topicName);
+            validateAdminAndClientPermission(topicName);
             validateGlobalNamespaceOwnership(topicName.getNamespaceObject());
         } catch (WebApplicationException we) {
             // Validation checks failed
@@ -127,6 +127,14 @@ public class TopicLookupBase extends PulsarWebResource {
         });
     }
 
+    private void validateAdminAndClientPermission(TopicName topic) throws 
RestException, Exception {
+        try {
+            validateAdminAccessForTenant(topic.getTenant());
+        } catch (Exception e) {
+            checkConnect(topic);
+        }
+    }
+
     protected String internalGetNamespaceBundle(TopicName topicName) {
         validateSuperUserAccess();
         try {
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java
index 26cb3c1..47a8921 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java
@@ -135,7 +135,6 @@ public class BrokerAdminClientTlsAuthTest extends 
MockedPulsarServiceBaseTest {
         try (PulsarAdmin admin = buildAdminClient("admin")) {
             Policies policies = new Policies();
             policies.bundles = new BundlesData(4);
-            policies.auth_policies.namespace_auth.put("admin", 
ImmutableSet.of(AuthAction.produce, AuthAction.consume));
             policies.replication_clusters = ImmutableSet.of("test");
             admin.namespaces().createNamespace("tenant/ns", policies);
             try {
@@ -144,6 +143,8 @@ public class BrokerAdminClientTlsAuthTest extends 
MockedPulsarServiceBaseTest {
                 ex.printStackTrace();
                 fail("Should not have thrown an exception");
             }
+            String topicName = String.format("persistent://%s/t1", 
"tenant/ns");
+            admin.lookups().lookupTopic(topicName);
         }
 
     }

Reply via email to