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.