sijie closed pull request #1384: Prepare admin client to support v2 api.
URL: https://github.com/apache/incubator-pulsar/pull/1384
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

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 90d6691ce..fe89a327e 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
@@ -1649,7 +1649,7 @@ public void testPulsarAdminForUriAndUrlEncoding(String 
topicName) throws Excepti
         
pulsarClient.newConsumer().topic(topic1).subscriptionName("my-subscriber-name").subscribe();
 
         PersistentTopicsImpl persistent = (PersistentTopicsImpl) 
admin.persistentTopics();
-        Field field = 
PersistentTopicsImpl.class.getDeclaredField("persistentTopics");
+        Field field = 
PersistentTopicsImpl.class.getDeclaredField("adminPersistentTopics");
         field.setAccessible(true);
         WebTarget persistentTopics = (WebTarget) field.get(persistent);
 
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
index 547ea7986..435548084 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
@@ -73,10 +73,12 @@
 
     private final Client client;
     private final URL serviceUrl;
-    protected final WebTarget web;
     private final Lookup lookups;
+    protected final WebTarget root;
     protected final Authentication auth;
 
+
+
     static {
         /**
          * The presence of slf4j-jdk14.jar, that is the jul binding for SLF4J, 
will force SLF4J calls to be delegated to
@@ -169,17 +171,16 @@ public PulsarAdmin(URL serviceUrl, 
ClientConfigurationData pulsarConfig) throws
         this.client = clientBuilder.build();
 
         this.serviceUrl = serviceUrl;
-        WebTarget root = client.target(serviceUrl.toString());
-        web = root.path("/admin");
-
-        this.clusters = new ClustersImpl(web, auth);
-        this.brokers = new BrokersImpl(web, auth);
-        this.brokerStats = new BrokerStatsImpl(web, auth);
-        this.properties = new PropertiesImpl(web, auth);
-        this.namespaces = new NamespacesImpl(web, auth);
-        this.persistentTopics = new PersistentTopicsImpl(web, auth);
-        this.nonPersistentTopics = new NonPersistentTopicsImpl(web, auth);
-        this.resourceQuotas = new ResourceQuotasImpl(web, auth);
+        root = client.target(serviceUrl.toString());
+
+        this.clusters = new ClustersImpl(root, auth);
+        this.brokers = new BrokersImpl(root, auth);
+        this.brokerStats = new BrokerStatsImpl(root, auth);
+        this.properties = new PropertiesImpl(root, auth);
+        this.namespaces = new NamespacesImpl(root, auth);
+        this.persistentTopics = new PersistentTopicsImpl(root, auth);
+        this.nonPersistentTopics = new NonPersistentTopicsImpl(root, auth);
+        this.resourceQuotas = new ResourceQuotasImpl(root, auth);
         this.lookups = new LookupImpl(root, auth, pulsarConfig.isUseTls());
     }
 
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java
index 82e172273..6dbe20e9b 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java
@@ -38,17 +38,17 @@
  */
 public class BrokerStatsImpl extends BaseResource implements BrokerStats {
 
-    private final WebTarget brokerStats;
+    private final WebTarget adminBrokerStats;
 
     public BrokerStatsImpl(WebTarget target, Authentication auth) {
         super(auth);
-        brokerStats = target.path("/broker-stats");
+        adminBrokerStats = target.path("/admin/broker-stats");
     }
     
     @Override
     public JsonArray getMetrics() throws PulsarAdminException {
         try {
-            String json = 
request(brokerStats.path("/metrics")).get(String.class);
+            String json = 
request(adminBrokerStats.path("/metrics")).get(String.class);
             return new Gson().fromJson(json, JsonArray.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -58,7 +58,7 @@ public JsonArray getMetrics() throws PulsarAdminException {
     @Override
     public AllocatorStats getAllocatorStats(String allocatorName) throws 
PulsarAdminException {
         try {
-            return 
request(brokerStats.path("/allocator-stats").path(allocatorName)).get(AllocatorStats.class);
+            return 
request(adminBrokerStats.path("/allocator-stats").path(allocatorName)).get(AllocatorStats.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -67,7 +67,7 @@ public AllocatorStats getAllocatorStats(String allocatorName) 
throws PulsarAdmin
     @Override
     public JsonArray getMBeans() throws PulsarAdminException {
         try {
-            String json = 
request(brokerStats.path("/mbeans")).get(String.class);
+            String json = 
request(adminBrokerStats.path("/mbeans")).get(String.class);
             return new Gson().fromJson(json, JsonArray.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -77,7 +77,7 @@ public JsonArray getMBeans() throws PulsarAdminException {
     @Override
     public JsonObject getTopics() throws PulsarAdminException {
         try {
-            String json = 
request(brokerStats.path("/destinations")).get(String.class);
+            String json = 
request(adminBrokerStats.path("/destinations")).get(String.class);
             return new Gson().fromJson(json, JsonObject.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -87,7 +87,7 @@ public JsonObject getTopics() throws PulsarAdminException {
     @Override
     public LoadManagerReport getLoadReport() throws PulsarAdminException {
         try {
-            return 
request(brokerStats.path("/load-report")).get(LocalBrokerData.class);
+            return 
request(adminBrokerStats.path("/load-report")).get(LocalBrokerData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -96,7 +96,7 @@ public LoadManagerReport getLoadReport() throws 
PulsarAdminException {
     @Override
     public JsonObject getPendingBookieOpsStats() throws PulsarAdminException {
         try {
-            String json = 
request(brokerStats.path("/bookieops")).get(String.class);
+            String json = 
request(adminBrokerStats.path("/bookieops")).get(String.class);
             return new Gson().fromJson(json, JsonObject.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -107,7 +107,7 @@ public JsonObject getBrokerResourceAvailability(String 
property, String cluster,
             throws PulsarAdminException {
         try {
             String json = request(
-                    
brokerStats.path("/broker-resource-availability").path(property).path(cluster).path(namespace))
+                    
adminBrokerStats.path("/broker-resource-availability").path(property).path(cluster).path(namespace))
                             .get(String.class);
             return new Gson().fromJson(json, JsonObject.class);
         } catch (Exception e) {
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokersImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokersImpl.java
index 096666b20..f5c5b3d75 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokersImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokersImpl.java
@@ -33,17 +33,17 @@
 import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus;
 
 public class BrokersImpl extends BaseResource implements Brokers {
-    private final WebTarget brokers;
+    private final WebTarget adminBrokers;
 
     public BrokersImpl(WebTarget web, Authentication auth) {
         super(auth);
-        brokers = web.path("/brokers");
+        adminBrokers = web.path("/admin/brokers");
     }
 
     @Override
     public List<String> getActiveBrokers(String cluster) throws 
PulsarAdminException {
         try {
-            return request(brokers.path(cluster)).get(new 
GenericType<List<String>>() {
+            return request(adminBrokers.path(cluster)).get(new 
GenericType<List<String>>() {
             });
         } catch (Exception e) {
             throw getApiException(e);
@@ -54,7 +54,7 @@ public BrokersImpl(WebTarget web, Authentication auth) {
     public Map<String, NamespaceOwnershipStatus> getOwnedNamespaces(String 
cluster, String brokerUrl)
             throws PulsarAdminException {
         try {
-            return 
request(brokers.path(cluster).path(brokerUrl).path("ownedNamespaces")).get(
+            return 
request(adminBrokers.path(cluster).path(brokerUrl).path("ownedNamespaces")).get(
                     new GenericType<Map<String, NamespaceOwnershipStatus>>() {
                     });
         } catch (Exception e) {
@@ -65,7 +65,7 @@ public BrokersImpl(WebTarget web, Authentication auth) {
     @Override
     public void updateDynamicConfiguration(String configName, String 
configValue) throws PulsarAdminException {
         try {
-            
request(brokers.path("/configuration/").path(configName).path(configValue)).post(Entity.json(""),
+            
request(adminBrokers.path("/configuration/").path(configName).path(configValue)).post(Entity.json(""),
                     ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -75,7 +75,7 @@ public void updateDynamicConfiguration(String configName, 
String configValue) th
     @Override
     public Map<String, String> getAllDynamicConfigurations() throws 
PulsarAdminException {
         try {
-            return 
request(brokers.path("/configuration/").path("values")).get(new 
GenericType<Map<String, String>>() {
+            return 
request(adminBrokers.path("/configuration/").path("values")).get(new 
GenericType<Map<String, String>>() {
             });
         } catch (Exception e) {
             throw getApiException(e);
@@ -85,7 +85,7 @@ public void updateDynamicConfiguration(String configName, 
String configValue) th
     @Override
     public List<String> getDynamicConfigurationNames() throws 
PulsarAdminException {
         try {
-            return request(brokers.path("/configuration")).get(new 
GenericType<List<String>>() {
+            return request(adminBrokers.path("/configuration")).get(new 
GenericType<List<String>>() {
             });
         } catch (Exception e) {
             throw getApiException(e);
@@ -95,7 +95,7 @@ public void updateDynamicConfiguration(String configName, 
String configValue) th
     @Override
     public InternalConfigurationData getInternalConfigurationData() throws 
PulsarAdminException {
         try {
-            return 
request(brokers.path("/internal-configuration")).get(InternalConfigurationData.class);
+            return 
request(adminBrokers.path("/internal-configuration")).get(InternalConfigurationData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java
index fcbf01267..9bf8e6bef 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java
@@ -38,17 +38,18 @@
 
 public class ClustersImpl extends BaseResource implements Clusters {
 
-    private final WebTarget clusters;
+    private final WebTarget adminClusters;
+    //private final WebTarget clusters;
 
     public ClustersImpl(WebTarget web, Authentication auth) {
         super(auth);
-        clusters = web.path("/clusters");
+        adminClusters = web.path("/admin/clusters");
     }
 
     @Override
     public List<String> getClusters() throws PulsarAdminException {
         try {
-            return request(clusters).get(new GenericType<List<String>>() {
+            return request(adminClusters).get(new GenericType<List<String>>() {
             });
         } catch (Exception e) {
             throw getApiException(e);
@@ -58,7 +59,7 @@ public ClustersImpl(WebTarget web, Authentication auth) {
     @Override
     public ClusterData getCluster(String cluster) throws PulsarAdminException {
         try {
-            return request(clusters.path(cluster)).get(ClusterData.class);
+            return request(adminClusters.path(cluster)).get(ClusterData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -67,7 +68,7 @@ public ClusterData getCluster(String cluster) throws 
PulsarAdminException {
     @Override
     public void createCluster(String cluster, ClusterData clusterData) throws 
PulsarAdminException {
         try {
-            request(clusters.path(cluster))
+            request(adminClusters.path(cluster))
                     .put(Entity.entity(clusterData, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -77,7 +78,7 @@ public void createCluster(String cluster, ClusterData 
clusterData) throws Pulsar
     @Override
     public void updateCluster(String cluster, ClusterData clusterData) throws 
PulsarAdminException {
         try {
-            request(clusters.path(cluster)).post(Entity.entity(clusterData, 
MediaType.APPLICATION_JSON),
+            
request(adminClusters.path(cluster)).post(Entity.entity(clusterData, 
MediaType.APPLICATION_JSON),
                     ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -87,7 +88,7 @@ public void updateCluster(String cluster, ClusterData 
clusterData) throws Pulsar
     @Override
     public void updatePeerClusterNames(String cluster, LinkedHashSet<String> 
peerClusterNames) throws PulsarAdminException {
         try {
-            
request(clusters.path(cluster).path("peers")).post(Entity.entity(peerClusterNames,
 MediaType.APPLICATION_JSON),
+            
request(adminClusters.path(cluster).path("peers")).post(Entity.entity(peerClusterNames,
 MediaType.APPLICATION_JSON),
                     ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -98,7 +99,7 @@ public void updatePeerClusterNames(String cluster, 
LinkedHashSet<String> peerClu
        @Override
        public Set<String> getPeerClusterNames(String cluster) throws 
PulsarAdminException {
                try {
-                       return 
request(clusters.path(cluster).path("peers")).get(LinkedHashSet.class);
+                       return 
request(adminClusters.path(cluster).path("peers")).get(LinkedHashSet.class);
                } catch (Exception e) {
                        throw getApiException(e);
                }
@@ -107,7 +108,7 @@ public void updatePeerClusterNames(String cluster, 
LinkedHashSet<String> peerClu
     @Override
     public void deleteCluster(String cluster) throws PulsarAdminException {
         try {
-            request(clusters.path(cluster)).delete(ErrorData.class);
+            request(adminClusters.path(cluster)).delete(ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -116,7 +117,7 @@ public void deleteCluster(String cluster) throws 
PulsarAdminException {
     @Override
     public Map<String, NamespaceIsolationData> 
getNamespaceIsolationPolicies(String cluster) throws PulsarAdminException {
         try {
-            return 
request(clusters.path(cluster).path("namespaceIsolationPolicies")).get(
+            return 
request(adminClusters.path(cluster).path("namespaceIsolationPolicies")).get(
                     new GenericType<Map<String, NamespaceIsolationData>>() {
                     });
         } catch (Exception e) {
@@ -138,13 +139,14 @@ public void updateNamespaceIsolationPolicy(String 
cluster, String policyName,
 
     @Override
     public void deleteNamespaceIsolationPolicy(String cluster, String 
policyName) throws PulsarAdminException {
-        
request(clusters.path(cluster).path("namespaceIsolationPolicies").path(policyName)).delete(ErrorData.class);
+        request(adminClusters.path(cluster)
+                
.path("namespaceIsolationPolicies").path(policyName)).delete(ErrorData.class);
     }
 
     private void setNamespaceIsolationPolicy(String cluster, String policyName,
             NamespaceIsolationData namespaceIsolationData) throws 
PulsarAdminException {
         try {
-            
request(clusters.path(cluster).path("namespaceIsolationPolicies").path(policyName)).post(
+            
request(adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName)).post(
                     Entity.entity(namespaceIsolationData, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -155,7 +157,7 @@ private void setNamespaceIsolationPolicy(String cluster, 
String policyName,
     public NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, 
String policyName)
             throws PulsarAdminException {
         try {
-            return 
request(clusters.path(cluster).path("namespaceIsolationPolicies").path(policyName)).get(
+            return 
request(adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName)).get(
                     NamespaceIsolationData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -174,13 +176,13 @@ public void updateFailureDomain(String cluster, String 
domainName, FailureDomain
 
     @Override
     public void deleteFailureDomain(String cluster, String domainName) throws 
PulsarAdminException {
-        
request(clusters.path(cluster).path("failureDomains").path(domainName)).delete(ErrorData.class);
+        
request(adminClusters.path(cluster).path("failureDomains").path(domainName)).delete(ErrorData.class);
     }
 
     @Override
     public Map<String, FailureDomain> getFailureDomains(String cluster) throws 
PulsarAdminException {
         try {
-            return request(clusters.path(cluster).path("failureDomains"))
+            return request(adminClusters.path(cluster).path("failureDomains"))
                     .get(new GenericType<Map<String, FailureDomain>>() {
                     });
         } catch (Exception e) {
@@ -191,7 +193,8 @@ public void deleteFailureDomain(String cluster, String 
domainName) throws Pulsar
     @Override
     public FailureDomain getFailureDomain(String cluster, String domainName) 
throws PulsarAdminException {
         try {
-            return 
request(clusters.path(cluster).path("failureDomains").path(domainName)).get(FailureDomain.class);
+            return request(adminClusters.path(cluster).path("failureDomains")
+                    .path(domainName)).get(FailureDomain.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -200,7 +203,7 @@ public FailureDomain getFailureDomain(String cluster, 
String domainName) throws
     private void setDomain(String cluster, String domainName,
             FailureDomain domain) throws PulsarAdminException {
         try {
-            
request(clusters.path(cluster).path("failureDomains").path(domainName)).post(
+            
request(adminClusters.path(cluster).path("failureDomains").path(domainName)).post(
                     Entity.entity(domain, MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
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 6d3ff3db7..06586ad77 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
@@ -44,17 +44,17 @@
 
 public class NamespacesImpl extends BaseResource implements Namespaces {
 
-    private final WebTarget namespaces;
+    private final WebTarget adminNamespaces;
 
     public NamespacesImpl(WebTarget web, Authentication auth) {
         super(auth);
-        this.namespaces = web.path("/namespaces");
+        this.adminNamespaces = web.path("/admin/namespaces");
     }
 
     @Override
     public List<String> getNamespaces(String property) throws 
PulsarAdminException {
         try {
-            return request(namespaces.path(property)).get(new 
GenericType<List<String>>() {
+            return request(adminNamespaces.path(property)).get(new 
GenericType<List<String>>() {
             });
         } catch (Exception e) {
             throw getApiException(e);
@@ -64,7 +64,7 @@ public NamespacesImpl(WebTarget web, Authentication auth) {
     @Override
     public List<String> getNamespaces(String property, String cluster) throws 
PulsarAdminException {
         try {
-            return request(namespaces.path(property).path(cluster)).get(new 
GenericType<List<String>>() {
+            return 
request(adminNamespaces.path(property).path(cluster)).get(new 
GenericType<List<String>>() {
             });
         } catch (Exception e) {
             throw getApiException(e);
@@ -75,7 +75,7 @@ public NamespacesImpl(WebTarget web, Authentication auth) {
     public List<String> getTopics(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            return 
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("destinations")).get(new GenericType<List<String>>() 
{
             });
         } catch (Exception e) {
@@ -87,7 +87,7 @@ public NamespacesImpl(WebTarget web, Authentication auth) {
     public Policies getPolicies(String namespace) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
+            return 
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
                     .get(Policies.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -103,7 +103,7 @@ public void createNamespace(String namespace, int 
numBundles) throws PulsarAdmin
     public void createNamespace(String namespace, BundlesData bundlesData) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
                     .put(Entity.entity(bundlesData, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -114,7 +114,7 @@ public void createNamespace(String namespace, BundlesData 
bundlesData) throws Pu
     public void createNamespace(String namespace) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
                     .put(Entity.entity("", MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -125,7 +125,7 @@ public void createNamespace(String namespace) throws 
PulsarAdminException {
     public void deleteNamespace(String namespace) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()))
                     .delete(ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -136,7 +136,8 @@ public void deleteNamespace(String namespace) throws 
PulsarAdminException {
     public void deleteNamespaceBundle(String namespace, String bundleRange) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundleRange))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+                    .path(bundleRange))
                     .delete(ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -148,7 +149,8 @@ public void deleteNamespaceBundle(String namespace, String 
bundleRange) throws P
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("permissions"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster())
+                            .path(ns.getLocalName()).path("permissions"))
                     .get(new GenericType<Map<String, Set<AuthAction>>>() {
                     });
         } catch (Exception e) {
@@ -161,7 +163,8 @@ public void grantPermissionOnNamespace(String namespace, 
String role, Set<AuthAc
             throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("permissions")
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).
+                    path("permissions")
                     .path(role)).post(Entity.entity(actions, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -172,7 +175,8 @@ public void grantPermissionOnNamespace(String namespace, 
String role, Set<AuthAc
     public void revokePermissionsOnNamespace(String namespace, String role) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("permissions")
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+                    .path("permissions")
                     .path(role)).delete(ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -184,7 +188,8 @@ public void revokePermissionsOnNamespace(String namespace, 
String role) throws P
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("replication"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+                            .path("replication"))
                     .get(new GenericType<List<String>>() {
                     });
         } catch (Exception e) {
@@ -196,7 +201,7 @@ public void revokePermissionsOnNamespace(String namespace, 
String role) throws P
     public void setNamespaceReplicationClusters(String namespace, List<String> 
clusterIds) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("replication"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("replication"))
                     .post(Entity.entity(clusterIds, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -208,7 +213,7 @@ public int getNamespaceMessageTTL(String namespace) throws 
PulsarAdminException
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("messageTTL"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("messageTTL"))
                     .get(new GenericType<Integer>() {
                     });
 
@@ -221,7 +226,7 @@ public int getNamespaceMessageTTL(String namespace) throws 
PulsarAdminException
     public void setNamespaceMessageTTL(String namespace, int ttlInSeconds) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("messageTTL"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("messageTTL"))
                     .post(Entity.entity(ttlInSeconds, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -233,7 +238,7 @@ public void setNamespaceAntiAffinityGroup(String namespace, 
String namespaceAnti
             throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     
.path("antiAffinity")).post(Entity.entity(namespaceAntiAffinityGroup, 
MediaType.APPLICATION_JSON),
                             ErrorData.class);
         } catch (Exception e) {
@@ -245,7 +250,7 @@ public void setNamespaceAntiAffinityGroup(String namespace, 
String namespaceAnti
     public String getNamespaceAntiAffinityGroup(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            return 
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("antiAffinity")).get(new GenericType<String>() {
                     });
 
@@ -258,7 +263,7 @@ public String getNamespaceAntiAffinityGroup(String 
namespace) throws PulsarAdmin
     public List<String> getAntiAffinityNamespaces(String property, String 
cluster, String namespaceAntiAffinityGroup)
             throws PulsarAdminException {
         try {
-            return 
request(namespaces.path(cluster).path("antiAffinity").path(namespaceAntiAffinityGroup)
+            return 
request(adminNamespaces.path(cluster).path("antiAffinity").path(namespaceAntiAffinityGroup)
                     .queryParam("property", property)).get(new 
GenericType<List<String>>() {
                     });
         } catch (Exception e) {
@@ -270,7 +275,7 @@ public String getNamespaceAntiAffinityGroup(String 
namespace) throws PulsarAdmin
     public void deleteNamespaceAntiAffinityGroup(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("antiAffinity")).delete(ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -281,7 +286,7 @@ public void deleteNamespaceAntiAffinityGroup(String 
namespace) throws PulsarAdmi
     public void setDeduplicationStatus(String namespace, boolean 
enableDeduplication) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("deduplication"))
                     .post(Entity.entity(enableDeduplication, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
@@ -293,7 +298,7 @@ public void setDeduplicationStatus(String namespace, 
boolean enableDeduplication
     public Map<BacklogQuotaType, BacklogQuota> getBacklogQuotaMap(String 
namespace) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            return 
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("backlogQuotaMap")).get(new 
GenericType<Map<BacklogQuotaType, BacklogQuota>>() {
             });
         } catch (Exception e) {
@@ -305,7 +310,7 @@ public void setDeduplicationStatus(String namespace, 
boolean enableDeduplication
     public void setBacklogQuota(String namespace, BacklogQuota backlogQuota) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("backlogQuota"))
                     .post(Entity.entity(backlogQuota, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
@@ -317,7 +322,8 @@ public void setBacklogQuota(String namespace, BacklogQuota 
backlogQuota) throws
     public void removeBacklogQuota(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("backlogQuota")
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+                    .path("backlogQuota")
                     .queryParam("backlogQuotaType", 
BacklogQuotaType.destination_storage.toString()))
                     .delete(ErrorData.class);
         } catch (Exception e) {
@@ -329,7 +335,7 @@ public void removeBacklogQuota(String namespace) throws 
PulsarAdminException {
     public void setPersistence(String namespace, PersistencePolicies 
persistence) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("persistence"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("persistence"))
                     .post(Entity.entity(persistence, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -341,7 +347,7 @@ public PersistencePolicies getPersistence(String namespace) 
throws PulsarAdminEx
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("persistence"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("persistence"))
                     .get(PersistencePolicies.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -352,7 +358,7 @@ public PersistencePolicies getPersistence(String namespace) 
throws PulsarAdminEx
     public void setRetention(String namespace, RetentionPolicies retention) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("retention"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("retention"))
                     .post(Entity.entity(retention, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -365,7 +371,7 @@ public RetentionPolicies getRetention(String namespace) 
throws PulsarAdminExcept
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("retention"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("retention"))
                     .get(RetentionPolicies.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -376,7 +382,7 @@ public RetentionPolicies getRetention(String namespace) 
throws PulsarAdminExcept
     public void unload(String namespace) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("unload"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("unload"))
                     .put(Entity.entity("", MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -387,7 +393,7 @@ public void unload(String namespace) throws 
PulsarAdminException {
     public String getReplicationConfigVersion(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            return 
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("configversion")).get(String.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -398,7 +404,7 @@ public String getReplicationConfigVersion(String namespace) 
throws PulsarAdminEx
     public void unloadNamespaceBundle(String namespace, String bundle) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
                     .path("unload")).put(Entity.entity("", 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -410,7 +416,7 @@ public void splitNamespaceBundle(String namespace, String 
bundle, boolean unload
             throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
                     .path("split").queryParam("unload", 
Boolean.toString(unloadSplitBundles)))
                     .put(Entity.entity("", MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
@@ -422,7 +428,7 @@ public void splitNamespaceBundle(String namespace, String 
bundle, boolean unload
     public void setDispatchRate(String namespace, DispatchRate dispatchRate) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("dispatchRate"))
                     .post(Entity.entity(dispatchRate, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
@@ -434,7 +440,7 @@ public void setDispatchRate(String namespace, DispatchRate 
dispatchRate) throws
     public DispatchRate getDispatchRate(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            return 
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("dispatchRate")).get(DispatchRate.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -445,7 +451,7 @@ public DispatchRate getDispatchRate(String namespace) 
throws PulsarAdminExceptio
     public void clearNamespaceBacklog(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("clearBacklog")).post(Entity.entity("", 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -457,7 +463,8 @@ public void clearNamespaceBacklogForSubscription(String 
namespace, String subscr
             throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("clearBacklog")
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).
+                    path("clearBacklog")
                     .path(subscription)).post(Entity.entity("", 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -468,7 +475,7 @@ public void clearNamespaceBacklogForSubscription(String 
namespace, String subscr
     public void clearNamespaceBundleBacklog(String namespace, String bundle) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
                     .path("clearBacklog")).post(Entity.entity("", 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -480,7 +487,7 @@ public void 
clearNamespaceBundleBacklogForSubscription(String namespace, String
             throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
                     .path("clearBacklog").path(subscription))
                     .post(Entity.entity("", MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
@@ -492,7 +499,7 @@ public void 
clearNamespaceBundleBacklogForSubscription(String namespace, String
     public void unsubscribeNamespace(String namespace, String subscription) 
throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("unsubscribe")
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("unsubscribe")
                     .path(subscription)).post(Entity.entity("", 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -504,7 +511,7 @@ public void unsubscribeNamespaceBundle(String namespace, 
String bundle, String s
             throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle)
                     .path("unsubscribe").path(subscription))
                     .post(Entity.entity("", MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
@@ -516,7 +523,7 @@ public void unsubscribeNamespaceBundle(String namespace, 
String bundle, String s
     public void setSubscriptionAuthMode(String namespace, SubscriptionAuthMode 
subscriptionAuthMode) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                     .path("subscriptionAuthMode"))
                     .post(Entity.entity(subscriptionAuthMode, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
@@ -528,7 +535,7 @@ public void setSubscriptionAuthMode(String namespace, 
SubscriptionAuthMode subsc
     public void setEncryptionRequiredStatus(String namespace, boolean 
encryptionRequired) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("encryptionRequired"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("encryptionRequired"))
                     .post(Entity.entity(encryptionRequired, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -540,7 +547,7 @@ public int getMaxProducersPerTopic(String namespace) throws 
PulsarAdminException
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxProducersPerTopic"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxProducersPerTopic"))
                     .get(Integer.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -551,7 +558,7 @@ public int getMaxProducersPerTopic(String namespace) throws 
PulsarAdminException
     public void setMaxProducersPerTopic(String namespace, int 
maxProducersPerTopic) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxProducersPerTopic"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxProducersPerTopic"))
                     .post(Entity.entity(maxProducersPerTopic, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -563,7 +570,7 @@ public int getMaxConsumersPerTopic(String namespace) throws 
PulsarAdminException
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerTopic"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerTopic"))
                     .get(Integer.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -574,7 +581,7 @@ public int getMaxConsumersPerTopic(String namespace) throws 
PulsarAdminException
     public void setMaxConsumersPerTopic(String namespace, int 
maxConsumersPerTopic) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerTopic"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerTopic"))
                     .post(Entity.entity(maxConsumersPerTopic, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -586,7 +593,7 @@ public int getMaxConsumersPerSubscription(String namespace) 
throws PulsarAdminEx
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerSubscription"))
+                    
adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerSubscription"))
                     .get(Integer.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -597,7 +604,7 @@ public int getMaxConsumersPerSubscription(String namespace) 
throws PulsarAdminEx
     public void setMaxConsumersPerSubscription(String namespace, int 
maxConsumersPerSubscription) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            
request(namespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerSubscription"))
+            
request(adminNamespaces.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("maxConsumersPerSubscription"))
                     .post(Entity.entity(maxConsumersPerSubscription, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NonPersistentTopicsImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NonPersistentTopicsImpl.java
index 48bfd0947..d71a4de36 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NonPersistentTopicsImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NonPersistentTopicsImpl.java
@@ -41,11 +41,11 @@
 
 public class NonPersistentTopicsImpl extends BaseResource implements 
NonPersistentTopics {
 
-    private final WebTarget nonPersistentTopics;
+    private final WebTarget adminNonPersistentTopics;
 
     public NonPersistentTopicsImpl(WebTarget web, Authentication auth) {
         super(auth);
-        this.nonPersistentTopics = web.path("/non-persistent");
+        adminNonPersistentTopics = web.path("/admin/non-persistent");
     }
 
     @Override
@@ -65,7 +65,7 @@ public void createPartitionedTopic(String topic, int 
numPartitions) throws Pulsa
         checkArgument(numPartitions > 1, "Number of partitions should be more 
than 1");
         TopicName ds = validateTopic(topic);
         return asyncPutRequest(
-                
nonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
+                
adminNonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
                 Entity.entity(numPartitions, MediaType.APPLICATION_JSON));
     }
 
@@ -85,7 +85,7 @@ public PartitionedTopicMetadata 
getPartitionedTopicMetadata(String topic) throws
     public CompletableFuture<PartitionedTopicMetadata> 
getPartitionedTopicMetadataAsync(String topic) {
         TopicName ds = validateTopic(topic);
         final CompletableFuture<PartitionedTopicMetadata> future = new 
CompletableFuture<>();
-        
asyncGetRequest(nonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
+        
asyncGetRequest(adminNonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
                 new InvocationCallback<PartitionedTopicMetadata>() {
 
                     @Override
@@ -117,7 +117,7 @@ public NonPersistentTopicStats getStats(String topic) 
throws PulsarAdminExceptio
     public CompletableFuture<NonPersistentTopicStats> getStatsAsync(String 
topic) {
         TopicName ds = validateTopic(topic);
         final CompletableFuture<NonPersistentTopicStats> future = new 
CompletableFuture<>();
-        
asyncGetRequest(nonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("stats"),
+        
asyncGetRequest(adminNonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("stats"),
                 new InvocationCallback<NonPersistentTopicStats>() {
 
                     @Override
@@ -149,7 +149,7 @@ public PersistentTopicInternalStats getInternalStats(String 
topic) throws Pulsar
     public CompletableFuture<PersistentTopicInternalStats> 
getInternalStatsAsync(String topic) {
         TopicName ds = validateTopic(topic);
         final CompletableFuture<PersistentTopicInternalStats> future = new 
CompletableFuture<>();
-        
asyncGetRequest(nonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("internalStats"),
+        
asyncGetRequest(adminNonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("internalStats"),
                 new InvocationCallback<PersistentTopicInternalStats>() {
 
                     @Override
@@ -180,7 +180,7 @@ public void unload(String topic) throws 
PulsarAdminException {
     @Override
     public CompletableFuture<Void> unloadAsync(String topic) {
         TopicName ds = validateTopic(topic);
-        return 
asyncPutRequest(nonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("unload"),
+        return 
asyncPutRequest(adminNonPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("unload"),
                 Entity.entity("", MediaType.APPLICATION_JSON));
     }
 
@@ -200,7 +200,7 @@ public void unload(String topic) throws 
PulsarAdminException {
     public CompletableFuture<List<String>> getListInBundleAsync(String 
namespace, String bundleRange) {
         NamespaceName ns = NamespaceName.get(namespace);
         final CompletableFuture<List<String>> future = new 
CompletableFuture<>();
-        
asyncGetRequest(nonPersistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
+        
asyncGetRequest(adminNonPersistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())
                 .path(bundleRange), new InvocationCallback<List<String>>() {
                     @Override
                     public void completed(List<String> response) {
@@ -230,7 +230,7 @@ public void failed(Throwable throwable) {
     public CompletableFuture<List<String>> getListAsync(String namespace) {
         NamespaceName ns = NamespaceName.get(namespace);
         final CompletableFuture<List<String>> future = new 
CompletableFuture<>();
-        
asyncGetRequest(nonPersistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()),
+        
asyncGetRequest(adminNonPersistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()),
                 new InvocationCallback<List<String>>() {
                     @Override
                     public void completed(List<String> response) {
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PersistentTopicsImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PersistentTopicsImpl.java
index fb287764a..523cf5384 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PersistentTopicsImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PersistentTopicsImpl.java
@@ -75,11 +75,11 @@
 import io.netty.buffer.Unpooled;
 
 public class PersistentTopicsImpl extends BaseResource implements 
PersistentTopics {
-    private final WebTarget persistentTopics;
+    private final WebTarget adminPersistentTopics;
     private final String BATCH_HEADER = "X-Pulsar-num-batch-message";
     public PersistentTopicsImpl(WebTarget web, Authentication auth) {
         super(auth);
-        this.persistentTopics = web.path("/persistent");
+        adminPersistentTopics = web.path("/admin/persistent");
     }
 
 
@@ -87,7 +87,7 @@ public PersistentTopicsImpl(WebTarget web, Authentication 
auth) {
     public List<String> getList(String namespace) throws PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(persistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())).get(
+            return 
request(adminPersistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName())).get(
                     new GenericType<List<String>>() {
                     });
         } catch (Exception e) {
@@ -99,7 +99,7 @@ public PersistentTopicsImpl(WebTarget web, Authentication 
auth) {
     public List<String> getPartitionedTopicList(String namespace) throws 
PulsarAdminException {
         try {
             NamespaceName ns = NamespaceName.get(namespace);
-            return 
request(persistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("partitioned")).get(
+            return 
request(adminPersistentTopics.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path("partitioned")).get(
                     new GenericType<List<String>>() {
                     });
         } catch (Exception e) {
@@ -111,7 +111,7 @@ public PersistentTopicsImpl(WebTarget web, Authentication 
auth) {
     public Map<String, Set<AuthAction>> getPermissions(String topic) throws 
PulsarAdminException {
         try {
             TopicName ds = TopicName.get(topic);
-            return 
request(persistentTopics.path(ds.getNamespace()).path(ds.getLocalName()).path("permissions")).get(
+            return 
request(adminPersistentTopics.path(ds.getNamespace()).path(ds.getLocalName()).path("permissions")).get(
                     new GenericType<Map<String, Set<AuthAction>>>() {
                     });
         } catch (Exception e) {
@@ -123,7 +123,7 @@ public PersistentTopicsImpl(WebTarget web, Authentication 
auth) {
     public void grantPermission(String topic, String role, Set<AuthAction> 
actions) throws PulsarAdminException {
         try {
             TopicName ds = TopicName.get(topic);
-            
request(persistentTopics.path(ds.getNamespace()).path(ds.getLocalName()).path("permissions").path(role))
+            
request(adminPersistentTopics.path(ds.getNamespace()).path(ds.getLocalName()).path("permissions").path(role))
                     .post(Entity.entity(actions, MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -134,7 +134,7 @@ public void grantPermission(String topic, String role, 
Set<AuthAction> actions)
     public void revokePermissions(String topic, String role) throws 
PulsarAdminException {
         try {
             TopicName ds = TopicName.get(topic);
-            
request(persistentTopics.path(ds.getNamespace()).path(ds.getLocalName()).path("permissions").path(role))
+            
request(adminPersistentTopics.path(ds.getNamespace()).path(ds.getLocalName()).path("permissions").path(role))
                     .delete(ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -158,7 +158,7 @@ public void createPartitionedTopic(String topic, int 
numPartitions) throws Pulsa
         checkArgument(numPartitions > 1, "Number of partitions should be more 
than 1");
         TopicName ds = validateTopic(topic);
         return asyncPutRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
                 Entity.entity(numPartitions, MediaType.APPLICATION_JSON));
     }
 
@@ -179,7 +179,7 @@ public void updatePartitionedTopic(String topic, int 
numPartitions) throws Pulsa
         checkArgument(numPartitions > 1, "Number of partitions must be more 
than 1");
         TopicName ds = validateTopic(topic);
         return asyncPostRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
                 Entity.entity(numPartitions, MediaType.APPLICATION_JSON));
     }
 
@@ -199,7 +199,7 @@ public PartitionedTopicMetadata 
getPartitionedTopicMetadata(String topic) throws
     public CompletableFuture<PartitionedTopicMetadata> 
getPartitionedTopicMetadataAsync(String topic) {
         TopicName ds = validateTopic(topic);
         final CompletableFuture<PartitionedTopicMetadata> future = new 
CompletableFuture<>();
-        
asyncGetRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
+        
asyncGetRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitions"),
                 new InvocationCallback<PartitionedTopicMetadata>() {
 
                     @Override
@@ -230,7 +230,7 @@ public void deletePartitionedTopic(String topic) throws 
PulsarAdminException {
     @Override
     public CompletableFuture<Void> deletePartitionedTopicAsync(String topic) {
         TopicName ds = validateTopic(topic);
-        return 
asyncDeleteRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
+        return 
asyncDeleteRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
                 .path("partitions"));
     }
 
@@ -249,7 +249,7 @@ public void delete(String topic) throws 
PulsarAdminException {
     @Override
     public CompletableFuture<Void> deleteAsync(String topic) {
         TopicName ds = validateTopic(topic);
-        return 
asyncDeleteRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()));
+        return 
asyncDeleteRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()));
     }
 
     @Override
@@ -267,7 +267,7 @@ public void unload(String topic) throws 
PulsarAdminException {
     @Override
     public CompletableFuture<Void> unloadAsync(String topic) {
         TopicName ds = validateTopic(topic);
-        return 
asyncPutRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("unload"),
+        return 
asyncPutRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("unload"),
                 Entity.entity("", MediaType.APPLICATION_JSON));
     }
 
@@ -287,7 +287,7 @@ public void unload(String topic) throws 
PulsarAdminException {
     public CompletableFuture<List<String>> getSubscriptionsAsync(String topic) 
{
         TopicName ds = validateTopic(topic);
         final CompletableFuture<List<String>> future = new 
CompletableFuture<>();
-        
asyncGetRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscriptions"),
+        
asyncGetRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscriptions"),
                 new InvocationCallback<List<String>>() {
 
                     @Override
@@ -319,7 +319,7 @@ public PersistentTopicStats getStats(String topic) throws 
PulsarAdminException {
     public CompletableFuture<PersistentTopicStats> getStatsAsync(String topic) 
{
         TopicName ds = validateTopic(topic);
         final CompletableFuture<PersistentTopicStats> future = new 
CompletableFuture<>();
-        
asyncGetRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("stats"),
+        
asyncGetRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("stats"),
                 new InvocationCallback<PersistentTopicStats>() {
 
                     @Override
@@ -351,7 +351,7 @@ public PersistentTopicInternalStats getInternalStats(String 
topic) throws Pulsar
     public CompletableFuture<PersistentTopicInternalStats> 
getInternalStatsAsync(String topic) {
         TopicName ds = validateTopic(topic);
         final CompletableFuture<PersistentTopicInternalStats> future = new 
CompletableFuture<>();
-        
asyncGetRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("internalStats"),
+        
asyncGetRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("internalStats"),
                 new InvocationCallback<PersistentTopicInternalStats>() {
 
                     @Override
@@ -383,7 +383,7 @@ public JsonObject getInternalInfo(String topic) throws 
PulsarAdminException {
     public CompletableFuture<JsonObject> getInternalInfoAsync(String topic) {
         TopicName ds = validateTopic(topic);
         final CompletableFuture<JsonObject> future = new CompletableFuture<>();
-        
asyncGetRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("internal-info"),
+        
asyncGetRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("internal-info"),
                 new InvocationCallback<String>() {
                     @Override
                     public void completed(String response) {
@@ -418,7 +418,7 @@ public PartitionedTopicStats getPartitionedStats(String 
topic, boolean perPartit
         TopicName ds = validateTopic(topic);
         final CompletableFuture<PartitionedTopicStats> future = new 
CompletableFuture<>();
         asyncGetRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitioned-stats"),
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("partitioned-stats"),
                 new InvocationCallback<PartitionedTopicStats>() {
 
                     @Override
@@ -453,7 +453,7 @@ public void deleteSubscription(String topic, String 
subName) throws PulsarAdminE
     public CompletableFuture<Void> deleteSubscriptionAsync(String topic, 
String subName) {
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subName);
-        return 
asyncDeleteRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
+        return 
asyncDeleteRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
                 .path("subscription").path(encodedSubName));
     }
 
@@ -474,7 +474,7 @@ public void skipAllMessages(String topic, String subName) 
throws PulsarAdminExce
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subName);
         return asyncPostRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                         .path(encodedSubName).path("skip_all"), 
Entity.entity("", MediaType.APPLICATION_JSON));
     }
 
@@ -495,7 +495,7 @@ public void skipMessages(String topic, String subName, long 
numMessages) throws
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subName);
         return asyncPostRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                         
.path(encodedSubName).path("skip").path(String.valueOf(numMessages)),
                 Entity.entity("", MediaType.APPLICATION_JSON));
     }
@@ -517,7 +517,7 @@ public void expireMessages(String topic, String subName, 
long expireTimeInSecond
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subName);
         return asyncPostRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                         
.path(encodedSubName).path("expireMessages").path(String.valueOf(expireTimeInSeconds)),
                 Entity.entity("", MediaType.APPLICATION_JSON));
     }
@@ -538,7 +538,7 @@ public void expireMessagesForAllSubscriptions(String topic, 
long expireTimeInSec
     public CompletableFuture<Void> 
expireMessagesForAllSubscriptionsAsync(String topic, long expireTimeInSeconds) {
         TopicName ds = validateTopic(topic);
         return asyncPostRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("all_subscription")
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("all_subscription")
                         
.path("expireMessages").path(String.valueOf(expireTimeInSeconds)),
                 Entity.entity("", MediaType.APPLICATION_JSON));
     }
@@ -547,7 +547,7 @@ public void expireMessagesForAllSubscriptions(String topic, 
long expireTimeInSec
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subName);
         final CompletableFuture<List<Message<byte[]>>> future = new 
CompletableFuture<>();
-        
asyncGetRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+        
asyncGetRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                 
.path(encodedSubName).path("position").path(String.valueOf(messagePosition)),
                 new InvocationCallback<Response>() {
 
@@ -624,7 +624,7 @@ public void createSubscription(String topic, String 
subscriptionName, MessageId
         try {
             TopicName ds = validateTopic(topic);
             String encodedSubName = Codec.encode(subscriptionName);
-            
request(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+            
request(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                     .path(encodedSubName)).put(Entity.entity(messageId, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -636,7 +636,7 @@ public void createSubscription(String topic, String 
subscriptionName, MessageId
             MessageId messageId) {
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subscriptionName);
-        return 
asyncPutRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
+        return 
asyncPutRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
                 .path("subscription").path(encodedSubName), 
Entity.entity(messageId, MediaType.APPLICATION_JSON));
     }
 
@@ -646,7 +646,7 @@ public void resetCursor(String topic, String subName, long 
timestamp) throws Pul
             TopicName ds = validateTopic(topic);
             String encodedSubName = Codec.encode(subName);
             request(
-                    
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+                    
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                             
.path(encodedSubName).path("resetcursor").path(String.valueOf(timestamp))).post(
                     Entity.entity("", MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
@@ -659,7 +659,7 @@ public void resetCursor(String topic, String subName, long 
timestamp) throws Pul
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subName);
         return asyncPostRequest(
-                
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+                
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                         
.path(encodedSubName).path("resetcursor").path(String.valueOf(timestamp)),
                 Entity.entity("", MediaType.APPLICATION_JSON));
     }
@@ -669,7 +669,7 @@ public void resetCursor(String topic, String subName, 
MessageId messageId) throw
         try {
             TopicName ds = validateTopic(topic);
             String encodedSubName = Codec.encode(subName);
-            
request(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
+            
request(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName()).path("subscription")
                     
.path(encodedSubName).path("resetcursor")).post(Entity.entity(messageId, 
MediaType.APPLICATION_JSON),
                             ErrorData.class);
         } catch (Exception e) {
@@ -681,7 +681,7 @@ public void resetCursor(String topic, String subName, 
MessageId messageId) throw
     public CompletableFuture<Void> resetCursorAsync(String topic, String 
subName, MessageId messageId) {
         TopicName ds = validateTopic(topic);
         String encodedSubName = Codec.encode(subName);
-        return 
asyncPostRequest(persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
+        return 
asyncPostRequest(adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
                 .path("subscription").path(encodedSubName).path("resetcursor"),
                 Entity.entity(messageId, MediaType.APPLICATION_JSON));
     }
@@ -692,7 +692,7 @@ public void resetCursor(String topic, String subName, 
MessageId messageId) throw
 
         final CompletableFuture<MessageId> future = new CompletableFuture<>();
         try {
-            WebTarget target = 
persistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
+            WebTarget target = 
adminPersistentTopics.path(ds.getNamespace()).path(ds.getEncodedLocalName())
                     .path("terminate");
 
             request(target).async().post(Entity.entity("", 
MediaType.APPLICATION_JSON),
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PropertiesImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PropertiesImpl.java
index bea141156..1bfab3c7d 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PropertiesImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PropertiesImpl.java
@@ -32,17 +32,17 @@
 import org.apache.pulsar.common.policies.data.PropertyAdmin;
 
 public class PropertiesImpl extends BaseResource implements Properties {
-    private final WebTarget properties;
+    private final WebTarget adminProperties;
 
     public PropertiesImpl(WebTarget web, Authentication auth) {
         super(auth);
-        properties = web.path("/properties");
+        adminProperties = web.path("/admin/properties");
     }
 
     @Override
     public List<String> getProperties() throws PulsarAdminException {
         try {
-            return request(properties).get(new GenericType<List<String>>() {
+            return request(adminProperties).get(new 
GenericType<List<String>>() {
             });
         } catch (Exception e) {
             throw getApiException(e);
@@ -52,7 +52,7 @@ public PropertiesImpl(WebTarget web, Authentication auth) {
     @Override
     public PropertyAdmin getPropertyAdmin(String property) throws 
PulsarAdminException {
         try {
-            return request(properties.path(property)).get(PropertyAdmin.class);
+            return 
request(adminProperties.path(property)).get(PropertyAdmin.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -61,7 +61,8 @@ public PropertyAdmin getPropertyAdmin(String property) throws 
PulsarAdminExcepti
     @Override
     public void createProperty(String property, PropertyAdmin config) throws 
PulsarAdminException {
         try {
-            request(properties.path(property)).put(Entity.entity(config, 
MediaType.APPLICATION_JSON), ErrorData.class);
+            request(adminProperties.path(property))
+                    .put(Entity.entity(config, MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -70,7 +71,8 @@ public void createProperty(String property, PropertyAdmin 
config) throws PulsarA
     @Override
     public void updateProperty(String property, PropertyAdmin config) throws 
PulsarAdminException {
         try {
-            request(properties.path(property)).post(Entity.entity(config, 
MediaType.APPLICATION_JSON), ErrorData.class);
+            request(adminProperties.path(property))
+                    .post(Entity.entity(config, MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -79,13 +81,13 @@ public void updateProperty(String property, PropertyAdmin 
config) throws PulsarA
     @Override
     public void deleteProperty(String property) throws PulsarAdminException {
         try {
-            request(properties.path(property)).delete(ErrorData.class);
+            request(adminProperties.path(property)).delete(ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
     }
 
     public WebTarget getWebTarget() {
-        return properties;
+        return adminProperties;
     }
 }
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ResourceQuotasImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ResourceQuotasImpl.java
index f75afb336..bd5369415 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ResourceQuotasImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ResourceQuotasImpl.java
@@ -31,16 +31,16 @@
 
 public class ResourceQuotasImpl extends BaseResource implements ResourceQuotas 
{
 
-    private final WebTarget quotas;
+    private final WebTarget adminQuotas;
 
     public ResourceQuotasImpl(WebTarget web, Authentication auth) {
         super(auth);
-        this.quotas = web.path("/resource-quotas");
+        adminQuotas = web.path("/admin/resource-quotas");
     }
 
     public ResourceQuota getDefaultResourceQuota() throws PulsarAdminException 
{
         try {
-            return request(quotas).get(ResourceQuota.class);
+            return request(adminQuotas).get(ResourceQuota.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -48,7 +48,7 @@ public ResourceQuota getDefaultResourceQuota() throws 
PulsarAdminException {
 
     public void setDefaultResourceQuota(ResourceQuota quota) throws 
PulsarAdminException {
         try {
-            request(quotas).post(Entity.entity(quota, 
MediaType.APPLICATION_JSON), ErrorData.class);
+            request(adminQuotas).post(Entity.entity(quota, 
MediaType.APPLICATION_JSON), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
         }
@@ -58,7 +58,7 @@ public ResourceQuota getNamespaceBundleResourceQuota(String 
namespace, String bu
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             return request(
-                    
quotas.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle))
+                    
adminQuotas.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle))
                     .get(ResourceQuota.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -70,7 +70,7 @@ public void setNamespaceBundleResourceQuota(String namespace, 
String bundle, Res
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             request(
-                
quotas.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle))
+                    
adminQuotas.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle))
                     .post(Entity.entity(quota, MediaType.APPLICATION_JSON), 
ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -81,7 +81,7 @@ public void resetNamespaceBundleResourceQuota(String 
namespace, String bundle) t
         try {
             NamespaceName ns = NamespaceName.get(namespace);
             request(
-                
quotas.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle))
+                    
adminQuotas.path(ns.getProperty()).path(ns.getCluster()).path(ns.getLocalName()).path(bundle))
                     .delete();
         } catch (Exception e) {
             throw getApiException(e);
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/PulsarAdminWithFunctions.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/PulsarAdminWithFunctions.java
index 29b767ff1..5c1a80539 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/PulsarAdminWithFunctions.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/PulsarAdminWithFunctions.java
@@ -49,7 +49,7 @@
      */
     public PulsarAdminWithFunctions(URL serviceUrl, ClientConfigurationData 
pulsarConfig) throws PulsarClientException {
         super(serviceUrl, pulsarConfig);
-        this.functions = new FunctionsImpl(web, auth);
+        this.functions = new FunctionsImpl(root, auth);
         this.clientConf = pulsarConfig;
     }
 
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java
index ae216945f..f184ea2b2 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java
@@ -46,7 +46,7 @@
 
     public FunctionsImpl(WebTarget web, Authentication auth) {
         super(auth);
-        this.functions = web.path("/functions");
+        this.functions = web.path("/admin/functions");
     }
 
     @Override


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to