aboutsummaryrefslogtreecommitdiff
path: root/weed/cluster/master_client.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-07-12 02:00:54 -0700
committerchrislu <chris.lu@gmail.com>2022-07-28 23:24:38 -0700
commit74f60f246fadee2244b78c0c68259a759be55490 (patch)
tree4b27b3ece34565cf00a0ccf62922016f8bbd4f4d /weed/cluster/master_client.go
parent9f479aab98e6d8b02026d935af1f614ee8b0b403 (diff)
downloadseaweedfs-74f60f246fadee2244b78c0c68259a759be55490.tar.xz
seaweedfs-74f60f246fadee2244b78c0c68259a759be55490.zip
dynamically connect to a filer
Diffstat (limited to 'weed/cluster/master_client.go')
-rw-r--r--weed/cluster/master_client.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/weed/cluster/master_client.go b/weed/cluster/master_client.go
new file mode 100644
index 000000000..b9b1673f3
--- /dev/null
+++ b/weed/cluster/master_client.go
@@ -0,0 +1,34 @@
+package cluster
+
+import (
+ "context"
+ "github.com/chrislusf/seaweedfs/weed/glog"
+ "github.com/chrislusf/seaweedfs/weed/pb"
+ "github.com/chrislusf/seaweedfs/weed/pb/master_pb"
+ "google.golang.org/grpc"
+)
+
+func ListExistingPeerUpdates(master pb.ServerAddress, grpcDialOption grpc.DialOption, filerGroup string, clientType string) (existingNodes []*master_pb.ClusterNodeUpdate) {
+
+ if grpcErr := pb.WithMasterClient(false, master, grpcDialOption, func(client master_pb.SeaweedClient) error {
+ resp, err := client.ListClusterNodes(context.Background(), &master_pb.ListClusterNodesRequest{
+ ClientType: clientType,
+ FilerGroup: filerGroup,
+ })
+
+ glog.V(0).Infof("the cluster has %d %s\n", len(resp.ClusterNodes), clientType)
+ for _, node := range resp.ClusterNodes {
+ existingNodes = append(existingNodes, &master_pb.ClusterNodeUpdate{
+ NodeType: FilerType,
+ Address: node.Address,
+ IsLeader: node.IsLeader,
+ IsAdd: true,
+ CreatedAtNs: node.CreatedAtNs,
+ })
+ }
+ return err
+ }); grpcErr != nil {
+ glog.V(0).Infof("connect to %s: %v", master, grpcErr)
+ }
+ return
+}