This is an automated email from the ASF dual-hosted git repository.
xyz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git
The following commit(s) were added to refs/heads/master by this push:
new b4d45cd3 [Improve] Add admin api GetLeaderBroker (#1203)
b4d45cd3 is described below
commit b4d45cd360599b52e3f160db9d39d619889c556a
Author: crossoverJie <[email protected]>
AuthorDate: Mon Apr 22 21:25:00 2024 +0800
[Improve] Add admin api GetLeaderBroker (#1203)
### Motivation
To keep consistent with the [Java
client](https://github.com/apache/pulsar/pull/9799).
### Modifications
Add `GetLeaderBroker` interface.
---
pulsaradmin/pkg/admin/brokers.go | 12 ++++++++++++
pulsaradmin/pkg/admin/brokers_test.go | 16 ++++++++++++++++
pulsaradmin/pkg/utils/data.go | 5 +++++
3 files changed, 33 insertions(+)
diff --git a/pulsaradmin/pkg/admin/brokers.go b/pulsaradmin/pkg/admin/brokers.go
index e178610c..650fab8e 100644
--- a/pulsaradmin/pkg/admin/brokers.go
+++ b/pulsaradmin/pkg/admin/brokers.go
@@ -58,6 +58,9 @@ type Brokers interface {
// HealthCheckWithTopicVersion run a health check on the broker
HealthCheckWithTopicVersion(utils.TopicVersion) error
+
+ // GetLeaderBroker get the information of the leader broker.
+ GetLeaderBroker() (utils.BrokerInfo, error)
}
type broker struct {
@@ -162,3 +165,12 @@ func (b *broker) HealthCheckWithTopicVersion(topicVersion
utils.TopicVersion) er
}
return nil
}
+func (b *broker) GetLeaderBroker() (utils.BrokerInfo, error) {
+ endpoint := b.pulsar.endpoint(b.basePath, "/leaderBroker")
+ var brokerInfo utils.BrokerInfo
+ err := b.pulsar.Client.Get(endpoint, &brokerInfo)
+ if err != nil {
+ return brokerInfo, err
+ }
+ return brokerInfo, nil
+}
diff --git a/pulsaradmin/pkg/admin/brokers_test.go
b/pulsaradmin/pkg/admin/brokers_test.go
index d48ce7cb..97679759 100644
--- a/pulsaradmin/pkg/admin/brokers_test.go
+++ b/pulsaradmin/pkg/admin/brokers_test.go
@@ -42,3 +42,19 @@ func TestBrokerHealthCheckWithTopicVersion(t *testing.T) {
err = admin.Brokers().HealthCheckWithTopicVersion(utils.TopicVersionV2)
assert.NoError(t, err)
}
+
+func TestGetLeaderBroker(t *testing.T) {
+ readFile, err :=
os.ReadFile("../../../integration-tests/tokens/admin-token")
+ assert.NoError(t, err)
+ cfg := &config.Config{
+ Token: string(readFile),
+ }
+ admin, err := New(cfg)
+ assert.NoError(t, err)
+ assert.NotNil(t, admin)
+ leaderBroker, err := admin.Brokers().GetLeaderBroker()
+ assert.NoError(t, err)
+ assert.NotNil(t, leaderBroker)
+ assert.NotEmpty(t, leaderBroker.ServiceURL)
+ assert.NotEmpty(t, leaderBroker.BrokerID)
+}
diff --git a/pulsaradmin/pkg/utils/data.go b/pulsaradmin/pkg/utils/data.go
index 1e67e3c7..61607912 100644
--- a/pulsaradmin/pkg/utils/data.go
+++ b/pulsaradmin/pkg/utils/data.go
@@ -477,6 +477,11 @@ type GetStatsOptions struct {
ExcludeConsumers bool `json:"exclude_consumers"`
}
+type BrokerInfo struct {
+ BrokerID string `json:"brokerId"`
+ ServiceURL string `json:"serviceUrl"`
+}
+
type TopicVersion string
const (