clienv3: add MemberAdd method based on v3 change

release-2.3
Gyu-Ho Lee 2016-02-11 13:24:29 -08:00
parent a56287b9b4
commit 5fbf64c144
1 changed files with 17 additions and 0 deletions

View File

@ -23,6 +23,7 @@ import (
)
type (
Member pb.Member
MemberListResponse pb.MemberListResponse
MemberAddResponse pb.MemberAddResponse
MemberRemoveResponse pb.MemberRemoveResponse
@ -33,6 +34,9 @@ type Cluster interface {
// List lists the current cluster membership.
MemberList(ctx context.Context) (*MemberListResponse, error)
// Leader returns the current leader member.
MemberLeader(ctx context.Context) (*Member, error)
// MemberAdd adds a new member into the cluster.
MemberAdd(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error)
@ -131,6 +135,19 @@ func (c *cluster) MemberList(ctx context.Context) (*MemberListResponse, error) {
}
}
func (c *cluster) MemberLeader(ctx context.Context) (*Member, error) {
resp, err := c.MemberList(ctx)
if err != nil {
return nil, err
}
for _, m := range resp.Members {
if m.IsLeader {
return (*Member)(m), nil
}
}
return nil, nil
}
func (c *cluster) getRemote() pb.ClusterClient {
c.mu.Lock()
defer c.mu.Unlock()