From 2c6176b5f2520cf9e62dd91ea72a701cc76d26cd Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Wed, 13 Apr 2016 16:21:30 -0700 Subject: [PATCH] *: remove MemberLeader API in client side (fix examples) --- clientv3/cluster.go | 16 ------ clientv3/example_cluster_test.go | 18 ------- clientv3/example_maintenence_test.go | 51 +++++++++++++++++++ clientv3/example_test.go | 2 +- etcdctl/ctlv3/command/printer.go | 3 +- .../functional-tester/etcd-tester/cluster.go | 33 ++++++------ 6 files changed, 71 insertions(+), 52 deletions(-) create mode 100644 clientv3/example_maintenence_test.go diff --git a/clientv3/cluster.go b/clientv3/cluster.go index 8d1369cb3..3acc63e5f 100644 --- a/clientv3/cluster.go +++ b/clientv3/cluster.go @@ -34,9 +34,6 @@ type Cluster interface { // MemberList lists the current cluster membership. MemberList(ctx context.Context) (*MemberListResponse, error) - // MemberLeader 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) @@ -135,19 +132,6 @@ 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() diff --git a/clientv3/example_cluster_test.go b/clientv3/example_cluster_test.go index 666be25d8..891bbaf8e 100644 --- a/clientv3/example_cluster_test.go +++ b/clientv3/example_cluster_test.go @@ -40,24 +40,6 @@ func ExampleCluster_memberList() { // members: 3 } -func ExampleCluster_memberLeader() { - cli, err := clientv3.New(clientv3.Config{ - Endpoints: endpoints, - DialTimeout: dialTimeout, - }) - if err != nil { - log.Fatal(err) - } - defer cli.Close() - - resp, err := cli.MemberLeader(context.Background()) - if err != nil { - log.Fatal(err) - } - fmt.Println("leader:", resp.Name) - // leader: infra1 -} - func ExampleCluster_memberAdd() { cli, err := clientv3.New(clientv3.Config{ Endpoints: endpoints[:2], diff --git a/clientv3/example_maintenence_test.go b/clientv3/example_maintenence_test.go new file mode 100644 index 000000000..0f1e7c9ec --- /dev/null +++ b/clientv3/example_maintenence_test.go @@ -0,0 +1,51 @@ +// Copyright 2016 CoreOS, Inc. +// +// Licensed 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 clientv3_test + +import ( + "fmt" + "log" + + "golang.org/x/net/context" + + "github.com/coreos/etcd/clientv3" +) + +func ExampleMaintenance_Status() { + for _, ep := range endpoints { + cli, err := clientv3.New(clientv3.Config{ + Endpoints: []string{ep}, + DialTimeout: dialTimeout, + }) + if err != nil { + log.Fatal(err) + } + defer cli.Close() + + // resp, err := cli.Status(context.Background(), ep) + // + // or + // + mapi := clientv3.NewMaintenance(cli) + resp, err := mapi.Status(context.Background(), ep) + if err != nil { + log.Fatal(err) + } + fmt.Printf("endpoint: %s / IsLeader: %v\n", ep, resp.Header.MemberId == resp.Leader) + } + // endpoint: localhost:2379 / IsLeader: false + // endpoint: localhost:22379 / IsLeader: false + // endpoint: localhost:32379 / IsLeader: true +} diff --git a/clientv3/example_test.go b/clientv3/example_test.go index 99fade677..208d1a9eb 100644 --- a/clientv3/example_test.go +++ b/clientv3/example_test.go @@ -25,7 +25,7 @@ import ( var ( dialTimeout = 5 * time.Second requestTimeout = 1 * time.Second - endpoints = []string{"localhost:2379", "localhost:22379", "http://localhost:32379"} + endpoints = []string{"localhost:2379", "localhost:22379", "localhost:32379"} ) func Example() { diff --git a/etcdctl/ctlv3/command/printer.go b/etcdctl/ctlv3/command/printer.go index 7c6c8a485..2c3eb332e 100644 --- a/etcdctl/ctlv3/command/printer.go +++ b/etcdctl/ctlv3/command/printer.go @@ -108,7 +108,7 @@ func (s *simplePrinter) Alarm(resp v3.AlarmResponse) { func (s *simplePrinter) MemberList(resp v3.MemberListResponse) { table := tablewriter.NewWriter(os.Stdout) - table.SetHeader([]string{"ID", "Status", "Name", "Peer Addrs", "Client Addrs", "Is Leader"}) + table.SetHeader([]string{"ID", "Status", "Name", "Peer Addrs", "Client Addrs"}) for _, m := range resp.Members { status := "started" @@ -122,7 +122,6 @@ func (s *simplePrinter) MemberList(resp v3.MemberListResponse) { m.Name, strings.Join(m.PeerURLs, ","), strings.Join(m.ClientURLs, ","), - fmt.Sprint(m.IsLeader), }) } diff --git a/tools/functional-tester/etcd-tester/cluster.go b/tools/functional-tester/etcd-tester/cluster.go index 86e02a231..94a7ac63d 100644 --- a/tools/functional-tester/etcd-tester/cluster.go +++ b/tools/functional-tester/etcd-tester/cluster.go @@ -185,24 +185,27 @@ func (c *cluster) GetLeader() (int, error) { if c.v2Only { return 0, nil } - cli, err := clientv3.New(clientv3.Config{ - Endpoints: c.GRPCURLs, - DialTimeout: 5 * time.Second, - }) - if err != nil { - return 0, err - } - defer cli.Close() - clus := clientv3.NewCluster(cli) - mem, err := clus.MemberLeader(context.Background()) - if err != nil { - return 0, err - } - for i, name := range c.Names { - if name == mem.Name { + + for i, ep := range c.GRPCURLs { + cli, err := clientv3.New(clientv3.Config{ + Endpoints: []string{ep}, + DialTimeout: 5 * time.Second, + }) + if err != nil { + return 0, err + } + defer cli.Close() + + mapi := clientv3.NewMaintenance(cli) + resp, err := mapi.Status(context.Background(), ep) + if err != nil { + return 0, err + } + if resp.Header.MemberId == resp.Leader { return i, nil } } + return 0, fmt.Errorf("no leader found") }