You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by si...@apache.org on 2018/02/17 08:00:44 UTC

[incubator-pulsar] branch master updated: Add a `internalConfiguration` admin restful endpoint for query internal configuration (#1223)

This is an automated email from the ASF dual-hosted git repository.

sijie 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 d5a4bb0  Add a `internalConfiguration` admin restful endpoint for query internal configuration (#1223)
d5a4bb0 is described below

commit d5a4bb0e44632707a96b2260e2ecddb24c1b8d9d
Author: Sijie Guo <gu...@gmail.com>
AuthorDate: Sat Feb 17 16:00:42 2018 +0800

    Add a `internalConfiguration` admin restful endpoint for query internal configuration (#1223)
---
 .../pulsar/broker/admin/impl/BrokersBase.java      | 13 ++++
 .../org/apache/pulsar/broker/admin/AdminTest.java  | 12 ++++
 .../broker/auth/MockedPulsarServiceBaseTest.java   |  1 +
 .../org/apache/pulsar/client/admin/Brokers.java    |  7 ++
 .../pulsar/client/admin/internal/BrokersImpl.java  | 10 +++
 .../org/apache/pulsar/admin/cli/CmdBrokers.java    | 11 +++
 .../pulsar/admin/cli/PulsarAdminToolTest.java      |  5 +-
 .../common/conf/InternalConfigurationData.java     | 78 ++++++++++++++++++++++
 8 files changed, 136 insertions(+), 1 deletion(-)

diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java
index 8098f97..60329d7 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java
@@ -30,12 +30,14 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.core.Response.Status;
 
+import org.apache.bookkeeper.conf.ClientConfiguration;
 import org.apache.bookkeeper.util.ZkUtils;
 import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.broker.admin.AdminResource;
 import org.apache.pulsar.broker.loadbalance.LoadManager;
 import org.apache.pulsar.broker.service.BrokerService;
 import org.apache.pulsar.broker.web.RestException;
+import org.apache.pulsar.common.conf.InternalConfigurationData;
 import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus;
 import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.apache.pulsar.zookeeper.ZooKeeperDataCache;
@@ -183,4 +185,15 @@ public class BrokersBase extends AdminResource {
         }
     }
 
+    @GET
+    @Path("/internal-configuration")
+    @ApiOperation(value = "Get the internal configuration data", response = InternalConfigurationData.class)
+    public InternalConfigurationData getInternalConfigurationData() {
+        ClientConfiguration conf = new ClientConfiguration();
+        return new InternalConfigurationData(
+            pulsar().getConfiguration().getZookeeperServers(),
+            pulsar().getConfiguration().getGlobalZookeeperServers(),
+            conf.getZkLedgersRootPath());
+    }
+
 }
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java
index 52d1186..dec7768 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java
@@ -46,6 +46,7 @@ import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.core.StreamingOutput;
 import javax.ws.rs.core.UriInfo;
 
+import org.apache.bookkeeper.conf.ClientConfiguration;
 import org.apache.bookkeeper.mledger.proto.PendingBookieOpsStats;
 import org.apache.bookkeeper.util.ZkUtils;
 import org.apache.pulsar.broker.admin.v1.BrokerStats;
@@ -59,6 +60,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
 import org.apache.pulsar.broker.cache.ConfigurationCacheService;
 import org.apache.pulsar.broker.web.PulsarWebResource;
 import org.apache.pulsar.broker.web.RestException;
+import org.apache.pulsar.common.conf.InternalConfigurationData;
 import org.apache.pulsar.common.naming.NamespaceName;
 import org.apache.pulsar.common.policies.data.AuthAction;
 import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData;
@@ -191,6 +193,16 @@ public class AdminTest extends MockedPulsarServiceBaseTest {
     }
 
     @Test
+    void internalConfiguration() throws Exception {
+        InternalConfigurationData expectedData = new InternalConfigurationData(
+            pulsar.getConfiguration().getZookeeperServers(),
+            pulsar.getConfiguration().getGlobalZookeeperServers(),
+            new ClientConfiguration().getZkLedgersRootPath());
+
+        assertEquals(brokers.getInternalConfigurationData(), expectedData);
+    }
+
+    @Test
     void clusters() throws Exception {
         assertEquals(clusters.getClusters(), Lists.newArrayList(configClusterName));
         verify(clusters, never()).validateSuperUserAccess();
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
index 51a4c03..a185a7e 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
@@ -98,6 +98,7 @@ public abstract class MockedPulsarServiceBaseTest {
         this.conf.setActiveConsumerFailoverDelayTimeMillis(0);
         this.conf.setDefaultNumberOfNamespaceBundles(1);
         this.conf.setZookeeperServers("localhost:2181");
+        this.conf.setGlobalZookeeperServers("localhost:3181");
     }
 
     protected final void internalSetup() throws Exception {
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Brokers.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Brokers.java
index ed58641..a6fadd1 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Brokers.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Brokers.java
@@ -23,6 +23,7 @@ import java.util.Map;
 
 import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException;
 import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException;
+import org.apache.pulsar.common.conf.InternalConfigurationData;
 import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus;
 
 /**
@@ -98,4 +99,10 @@ public interface Brokers {
      */
     Map<String, String> getAllDynamicConfigurations() throws PulsarAdminException;
 
+    /**
+     * Get the internal configuration data.
+     *
+     * @return internal configuration data.
+     */
+    InternalConfigurationData getInternalConfigurationData() throws PulsarAdminException;
 }
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 994fa17..096666b 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
@@ -28,6 +28,7 @@ import javax.ws.rs.core.GenericType;
 import org.apache.pulsar.client.admin.Brokers;
 import org.apache.pulsar.client.admin.PulsarAdminException;
 import org.apache.pulsar.client.api.Authentication;
+import org.apache.pulsar.common.conf.InternalConfigurationData;
 import org.apache.pulsar.common.policies.data.ErrorData;
 import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus;
 
@@ -91,4 +92,13 @@ public class BrokersImpl extends BaseResource implements Brokers {
         }
     }
 
+    @Override
+    public InternalConfigurationData getInternalConfigurationData() throws PulsarAdminException {
+        try {
+            return request(brokers.path("/internal-configuration")).get(InternalConfigurationData.class);
+        } catch (Exception e) {
+            throw getApiException(e);
+        }
+    }
+
 }
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokers.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokers.java
index 65fa962..9dc50a0 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokers.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokers.java
@@ -82,6 +82,16 @@ public class CmdBrokers extends CmdBase {
             print(admin.brokers().getDynamicConfigurationNames());
         }
     }
+
+    @Parameters(commandDescription = "Get internal configuration information")
+    private class GetInternalConfigurationCmd extends CliCommand {
+
+        @Override
+        void run() throws Exception {
+            print(admin.brokers().getInternalConfigurationData());
+        }
+
+    }
     
     public CmdBrokers(PulsarAdmin admin) {
         super("brokers", admin);
@@ -90,5 +100,6 @@ public class CmdBrokers extends CmdBase {
         jcommander.addCommand("update-dynamic-config", new UpdateConfigurationCmd());
         jcommander.addCommand("list-dynamic-config", new GetUpdatableConfigCmd());
         jcommander.addCommand("get-all-dynamic-config", new GetAllConfigurationsCmd());
+        jcommander.addCommand("get-internal-config", new GetInternalConfigurationCmd());
     }
 }
diff --git a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
index 00f18a9..6328f41 100644
--- a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
+++ b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
@@ -37,7 +37,6 @@ import org.apache.pulsar.client.admin.Properties;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.ResourceQuotas;
 import org.apache.pulsar.client.api.MessageId;
-import org.apache.pulsar.client.impl.MessageIdImpl;
 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;
@@ -57,6 +56,7 @@ import com.google.common.collect.Sets;
 
 @Test
 public class PulsarAdminToolTest {
+
     @Test
     void brokers() throws Exception {
         PulsarAdmin admin = Mockito.mock(PulsarAdmin.class);
@@ -76,6 +76,9 @@ public class PulsarAdminToolTest {
 
         brokers.run(split("update-dynamic-config --config brokerShutdownTimeoutMs --value 100"));
         verify(mockBrokers).updateDynamicConfiguration("brokerShutdownTimeoutMs", "100");
+
+        brokers.run(split("get-internal-config"));
+        verify(mockBrokers).getInternalConfigurationData();
     }
 
     @Test
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java
new file mode 100644
index 0000000..aa1068a
--- /dev/null
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.common.conf;
+
+import com.google.common.base.MoreObjects;
+import java.util.Objects;
+
+public class InternalConfigurationData {
+
+    private String zookeeperServers;
+    private String globalZooKeeperServers;
+    private String ledgersRootPath;
+
+    public InternalConfigurationData() {
+    }
+
+    public InternalConfigurationData(String zookeeperServers,
+                                     String globalZooKeeperServers,
+                                     String ledgersRootPath) {
+        this.zookeeperServers = zookeeperServers;
+        this.globalZooKeeperServers = globalZooKeeperServers;
+        this.ledgersRootPath = ledgersRootPath;
+    }
+
+    public String getZookeeperServers() {
+        return zookeeperServers;
+    }
+
+    public String getGlobalZooKeeperServers() {
+        return globalZooKeeperServers;
+    }
+
+    public String getLedgersRootPath() {
+        return ledgersRootPath;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (!(obj instanceof InternalConfigurationData)) {
+            return false;
+        }
+        InternalConfigurationData other = (InternalConfigurationData) obj;
+        return Objects.equals(zookeeperServers, other.zookeeperServers)
+            && Objects.equals(globalZooKeeperServers, other.globalZooKeeperServers)
+            && Objects.equals(ledgersRootPath, other.ledgersRootPath);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(zookeeperServers, globalZooKeeperServers, ledgersRootPath);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("zookeeperServers", zookeeperServers)
+            .add("globalZooKeeperServers", globalZooKeeperServers)
+            .add("ledgersRootPath", ledgersRootPath)
+            .toString();
+    }
+
+}

-- 
To stop receiving notification emails like this one, please contact
sijie@apache.org.