You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by te...@apache.org on 2022/06/14 10:42:13 UTC
[pulsar] branch master updated: [PulsarAdmin] add get active brokers api without cluster name (#14702)
This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 72dfcc628da [PulsarAdmin] add get active brokers api without cluster name (#14702)
72dfcc628da is described below
commit 72dfcc628da24ef99af85156ce0e0c29483c39e3
Author: WangJialing <65...@users.noreply.github.com>
AuthorDate: Tue Jun 14 18:42:08 2022 +0800
[PulsarAdmin] add get active brokers api without cluster name (#14702)
---
.../pulsar/broker/admin/impl/BrokersBase.java | 14 +++++++++
.../apache/pulsar/broker/admin/AdminApiTest.java | 4 +++
.../org/apache/pulsar/client/admin/Brokers.java | 35 ++++++++++++++++++++++
.../pulsar/client/admin/internal/BrokersImpl.java | 12 +++++++-
.../org/apache/pulsar/admin/cli/CmdBrokers.java | 4 +--
site2/docs/admin-api-brokers.md | 27 ++++++++++++++++-
6 files changed, 92 insertions(+), 4 deletions(-)
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 7f6740e3ed2..2aa6ee78864 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
@@ -114,6 +114,20 @@ public class BrokersBase extends AdminResource {
});
}
+ @GET
+ @ApiOperation(
+ value = "Get the list of active brokers (web service addresses) in the local cluster."
+ + "If authorization is not enabled",
+ response = String.class,
+ responseContainer = "Set")
+ @ApiResponses(
+ value = {
+ @ApiResponse(code = 401, message = "Authentication required"),
+ @ApiResponse(code = 403, message = "This operation requires super-user access") })
+ public void getActiveBrokers(@Suspended final AsyncResponse asyncResponse) throws Exception {
+ getActiveBrokers(asyncResponse, null);
+ }
+
@GET
@Path("/leaderBroker")
@ApiOperation(
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 cd8b94f2ed0..60034257b15 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
@@ -470,6 +470,10 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
Assert.assertNotNull(list);
Assert.assertEquals(list.size(), 1);
+ List<String> list1 = admin.brokers().getActiveBrokers();
+ Assert.assertNotNull(list1);
+ Assert.assertEquals(list1.size(), 1);
+
List<String> list2 = otheradmin.brokers().getActiveBrokers("test");
Assert.assertNotNull(list2);
Assert.assertEquals(list2.size(), 1);
diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Brokers.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Brokers.java
index caa6046cb3d..9f77e4615b1 100644
--- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Brokers.java
+++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Brokers.java
@@ -32,6 +32,41 @@ import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus;
* Admin interface for brokers management.
*/
public interface Brokers {
+ /**
+ * Get the list of active brokers in the local cluster.
+ * <p/>
+ * Get the list of active brokers (web service addresses) in the local cluster.
+ * <p/>
+ * Response Example:
+ *
+ * <pre>
+ * <code>["prod1-broker1.messaging.use.example.com:8080", "prod1-broker2.messaging.use.example.com:8080"
+ * * * "prod1-broker3.messaging.use.example.com:8080"]</code>
+ * </pre>
+ *
+ * @return a list of (host:port)
+ * @throws NotAuthorizedException
+ * You don't have admin permission to get the list of active brokers in the cluster
+ * @throws PulsarAdminException
+ * Unexpected error
+ */
+ List<String> getActiveBrokers() throws PulsarAdminException;
+
+ /**
+ * Get the list of active brokers in the local cluster asynchronously.
+ * <p/>
+ * Get the list of active brokers (web service addresses) in the local cluster.
+ * <p/>
+ * Response Example:
+ *
+ * <pre>
+ * <code>["prod1-broker1.messaging.use.example.com:8080", "prod1-broker2.messaging.use.example.com:8080",
+ * "prod1-broker3.messaging.use.example.com:8080"]</code>
+ * </pre>
+ *
+ * @return a list of (host:port)
+ */
+ CompletableFuture<List<String>> getActiveBrokersAsync();
/**
* Get the list of active brokers in the cluster.
* <p/>
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 7556d0c21a4..3257ad2067e 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
@@ -42,6 +42,16 @@ public class BrokersImpl extends BaseResource implements Brokers {
adminBrokers = web.path("admin/v2/brokers");
}
+ @Override
+ public List<String> getActiveBrokers() throws PulsarAdminException {
+ return sync(() -> getActiveBrokersAsync(null));
+ }
+
+ @Override
+ public CompletableFuture<List<String>> getActiveBrokersAsync() {
+ return getActiveBrokersAsync(null);
+ }
+
@Override
public List<String> getActiveBrokers(String cluster) throws PulsarAdminException {
return sync(() -> getActiveBrokersAsync(cluster));
@@ -49,7 +59,7 @@ public class BrokersImpl extends BaseResource implements Brokers {
@Override
public CompletableFuture<List<String>> getActiveBrokersAsync(String cluster) {
- WebTarget path = adminBrokers.path(cluster);
+ WebTarget path = cluster == null ? adminBrokers : adminBrokers.path(cluster);
final CompletableFuture<List<String>> future = new CompletableFuture<>();
asyncGetRequest(path,
new InvocationCallback<List<String>>() {
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 6e806bb369a..a713198db10 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
@@ -29,12 +29,12 @@ public class CmdBrokers extends CmdBase {
@Parameters(commandDescription = "List active brokers of the cluster")
private class List extends CliCommand {
- @Parameter(description = "cluster-name", required = true)
+ @Parameter(description = "cluster-name")
private java.util.List<String> params;
@Override
void run() throws Exception {
- String cluster = getOneArgument(params);
+ String cluster = params == null ? null : getOneArgument(params);
print(getAdmin().brokers().getActiveBrokers(cluster));
}
}
diff --git a/site2/docs/admin-api-brokers.md b/site2/docs/admin-api-brokers.md
index 2066d1510d1..b583dec5970 100644
--- a/site2/docs/admin-api-brokers.md
+++ b/site2/docs/admin-api-brokers.md
@@ -39,7 +39,32 @@ In addition to being configurable when you start them up, brokers can also be [d
### List active brokers
-Fetch all available active brokers that are serving traffic.
+Fetch all available active brokers that are serving traffic for local cluster .
+
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+
+```shell
+$ pulsar-admin brokers list
+```
+
+```
+broker1.use.org.com:8080
+```
+
+<!--REST API-->
+
+{@inject: endpoint|GET|/admin/v2/brokers|operation/getActiveBrokers?version=[[pulsar:version_number]]}
+
+<!--JAVA-->
+
+```java
+admin.brokers().getActiveBrokers()
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+Fetch all available active brokers that are serving traffic with cluster name.
````mdx-code-block
<Tabs groupId="api-choice"