From 9a5a3ebc790110126de3bc6b0dd72ae7ce3bcc61 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 27 Jan 2016 10:25:04 -0800 Subject: [PATCH] etcdctlv3: consolidate dial code; use clientv3 --- etcdctlv3/command/compaction_command.go | 14 +----- etcdctlv3/command/delete_range_command.go | 14 +----- etcdctlv3/command/global.go | 17 +++++++ etcdctlv3/command/lease_command.go | 39 ++-------------- etcdctlv3/command/member_command.go | 56 +++-------------------- etcdctlv3/command/put_command.go | 14 +----- etcdctlv3/command/range_command.go | 17 ++----- etcdctlv3/command/txn_command.go | 14 +----- etcdctlv3/command/watch_command.go | 14 +----- 9 files changed, 36 insertions(+), 163 deletions(-) diff --git a/etcdctlv3/command/compaction_command.go b/etcdctlv3/command/compaction_command.go index d2cc26f70..cb6aa8a37 100644 --- a/etcdctlv3/command/compaction_command.go +++ b/etcdctlv3/command/compaction_command.go @@ -20,7 +20,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -44,17 +43,6 @@ func compactionCommandFunc(cmd *cobra.Command, args []string) { ExitWithError(ExitError, err) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - kv := pb.NewKVClient(conn) req := &pb.CompactionRequest{Revision: rev} - - kv.Compact(context.Background(), req) + mustClient(cmd).KV.Compact(context.Background(), req) } diff --git a/etcdctlv3/command/delete_range_command.go b/etcdctlv3/command/delete_range_command.go index b38420fcd..a5d0e8979 100644 --- a/etcdctlv3/command/delete_range_command.go +++ b/etcdctlv3/command/delete_range_command.go @@ -19,7 +19,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -44,19 +43,8 @@ func deleteRangeCommandFunc(cmd *cobra.Command, args []string) { rangeEnd = []byte(args[1]) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - kv := pb.NewKVClient(conn) req := &pb.DeleteRangeRequest{Key: key, RangeEnd: rangeEnd} - - kv.DeleteRange(context.Background(), req) + mustClient(cmd).KV.DeleteRange(context.Background(), req) if rangeEnd != nil { fmt.Printf("range [%s, %s) is deleted\n", string(key), string(rangeEnd)) diff --git a/etcdctlv3/command/global.go b/etcdctlv3/command/global.go index d5bb89977..951adc59b 100644 --- a/etcdctlv3/command/global.go +++ b/etcdctlv3/command/global.go @@ -14,8 +14,25 @@ package command +import ( + "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" + "github.com/coreos/etcd/clientv3" +) + // GlobalFlags are flags that defined globally // and are inherited to all sub-commands. type GlobalFlags struct { Endpoints string } + +func mustClient(cmd *cobra.Command) *clientv3.Client { + endpoint, err := cmd.Flags().GetString("endpoint") + if err != nil { + ExitWithError(ExitError, err) + } + client, err := clientv3.NewFromURL(endpoint) + if err != nil { + ExitWithError(ExitBadConnection, err) + } + return client +} diff --git a/etcdctlv3/command/lease_command.go b/etcdctlv3/command/lease_command.go index e69329218..db740f26a 100644 --- a/etcdctlv3/command/lease_command.go +++ b/etcdctlv3/command/lease_command.go @@ -23,7 +23,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -64,19 +63,8 @@ func leaseCreateCommandFunc(cmd *cobra.Command, args []string) { ExitWithError(ExitBadArgs, fmt.Errorf("bad TTL (%v)", err)) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - lease := pb.NewLeaseClient(conn) - req := &pb.LeaseCreateRequest{TTL: ttl} - resp, err := lease.LeaseCreate(context.Background(), req) + resp, err := mustClient(cmd).Lease.LeaseCreate(context.Background(), req) if err != nil { fmt.Fprintf(os.Stderr, "failed to create lease (%v)\n", err) return @@ -107,19 +95,8 @@ func leaseRevokeCommandFunc(cmd *cobra.Command, args []string) { ExitWithError(ExitBadArgs, fmt.Errorf("bad lease ID arg (%v), expecting ID in Hex", err)) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - lease := pb.NewLeaseClient(conn) - req := &pb.LeaseRevokeRequest{ID: id} - _, err = lease.LeaseRevoke(context.Background(), req) + _, err = mustClient(cmd).Lease.LeaseRevoke(context.Background(), req) if err != nil { fmt.Fprintf(os.Stderr, "failed to revoke lease (%v)\n", err) return @@ -150,17 +127,7 @@ func leaseKeepAliveCommandFunc(cmd *cobra.Command, args []string) { ExitWithError(ExitBadArgs, fmt.Errorf("bad lease ID arg (%v), expecting ID in Hex", err)) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - lease := pb.NewLeaseClient(conn) - kStream, err := lease.LeaseKeepAlive(context.TODO()) + kStream, err := mustClient(cmd).Lease.LeaseKeepAlive(context.TODO()) if err != nil { ExitWithError(ExitBadConnection, err) } diff --git a/etcdctlv3/command/member_command.go b/etcdctlv3/command/member_command.go index 65d5421f6..93c56aee6 100644 --- a/etcdctlv3/command/member_command.go +++ b/etcdctlv3/command/member_command.go @@ -21,7 +21,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -109,18 +108,8 @@ func memberAddCommandFunc(cmd *cobra.Command, args []string) { urls := strings.Split(memberPeerURLs, ",") - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - mc := pb.NewClusterClient(conn) - - resp, err := mc.MemberAdd(context.TODO(), &pb.MemberAddRequest{PeerURLs: urls}) + req := &pb.MemberAddRequest{PeerURLs: urls} + resp, err := mustClient(cmd).Cluster.MemberAdd(context.TODO(), req) if err != nil { ExitWithError(ExitError, err) } @@ -139,18 +128,8 @@ func memberRemoveCommandFunc(cmd *cobra.Command, args []string) { ExitWithError(ExitBadArgs, fmt.Errorf("bad member ID arg (%v), expecting ID in Hex", err)) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - mc := pb.NewClusterClient(conn) - - resp, err := mc.MemberRemove(context.TODO(), &pb.MemberRemoveRequest{ID: uint64(id)}) + req := &pb.MemberRemoveRequest{ID: uint64(id)} + resp, err := mustClient(cmd).Cluster.MemberRemove(context.TODO(), req) if err != nil { ExitWithError(ExitError, err) } @@ -175,18 +154,8 @@ func memberUpdateCommandFunc(cmd *cobra.Command, args []string) { urls := strings.Split(memberPeerURLs, ",") - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - mc := pb.NewClusterClient(conn) - - resp, err := mc.MemberUpdate(context.TODO(), &pb.MemberUpdateRequest{ID: uint64(id), PeerURLs: urls}) + req := &pb.MemberUpdateRequest{ID: uint64(id), PeerURLs: urls} + resp, err := mustClient(cmd).Cluster.MemberUpdate(context.TODO(), req) if err != nil { ExitWithError(ExitError, err) } @@ -196,18 +165,7 @@ func memberUpdateCommandFunc(cmd *cobra.Command, args []string) { // memberListCommandFunc executes the "member list" command. func memberListCommandFunc(cmd *cobra.Command, args []string) { - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - mc := pb.NewClusterClient(conn) - - resp, err := mc.MemberList(context.TODO(), &pb.MemberListRequest{}) + resp, err := mustClient(cmd).Cluster.MemberList(context.TODO(), &pb.MemberListRequest{}) if err != nil { ExitWithError(ExitError, err) } diff --git a/etcdctlv3/command/put_command.go b/etcdctlv3/command/put_command.go index 40c2fe424..327ead24d 100644 --- a/etcdctlv3/command/put_command.go +++ b/etcdctlv3/command/put_command.go @@ -20,7 +20,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -62,18 +61,7 @@ func putCommandFunc(cmd *cobra.Command, args []string) { key := []byte(args[0]) value := []byte(args[1]) - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - kv := pb.NewKVClient(conn) req := &pb.PutRequest{Key: key, Value: value, Lease: id} - - kv.Put(context.Background(), req) + mustClient(cmd).KV.Put(context.Background(), req) fmt.Printf("%s %s\n", key, value) } diff --git a/etcdctlv3/command/range_command.go b/etcdctlv3/command/range_command.go index 94f1acef3..4788b2993 100644 --- a/etcdctlv3/command/range_command.go +++ b/etcdctlv3/command/range_command.go @@ -20,7 +20,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -55,11 +54,6 @@ func rangeCommandFunc(cmd *cobra.Command, args []string) { rangeEnd = []byte(args[1]) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - sortByOrder := pb.RangeRequest_NONE sortOrder := strings.ToUpper(rangeSortOrder) switch { @@ -92,12 +86,6 @@ func rangeCommandFunc(cmd *cobra.Command, args []string) { ExitWithError(ExitBadFeature, fmt.Errorf("bad sort target %v", rangeSortTarget)) } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - kv := pb.NewKVClient(conn) req := &pb.RangeRequest{ Key: key, RangeEnd: rangeEnd, @@ -105,7 +93,10 @@ func rangeCommandFunc(cmd *cobra.Command, args []string) { SortTarget: sortByTarget, Limit: int64(rangeLimit), } - resp, err := kv.Range(context.Background(), req) + resp, err := mustClient(cmd).KV.Range(context.Background(), req) + if err != nil { + ExitWithError(ExitError, err) + } for _, kv := range resp.Kvs { fmt.Printf("%s %s\n", string(kv.Key), string(kv.Value)) } diff --git a/etcdctlv3/command/txn_command.go b/etcdctlv3/command/txn_command.go index dde45576a..dec7b8d82 100644 --- a/etcdctlv3/command/txn_command.go +++ b/etcdctlv3/command/txn_command.go @@ -23,7 +23,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -50,18 +49,7 @@ func txnCommandFunc(cmd *cobra.Command, args []string) { next = next(txn, reader) } - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitError, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - kv := pb.NewKVClient(conn) - - resp, err := kv.Txn(context.Background(), txn) + resp, err := mustClient(cmd).KV.Txn(context.Background(), txn) if err != nil { ExitWithError(ExitError, err) } diff --git a/etcdctlv3/command/watch_command.go b/etcdctlv3/command/watch_command.go index c9ccda689..b376e5cc8 100644 --- a/etcdctlv3/command/watch_command.go +++ b/etcdctlv3/command/watch_command.go @@ -24,7 +24,6 @@ import ( "github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" - "github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" ) @@ -39,18 +38,7 @@ func NewWatchCommand() *cobra.Command { // watchCommandFunc executes the "watch" command. func watchCommandFunc(cmd *cobra.Command, args []string) { - endpoint, err := cmd.Flags().GetString("endpoint") - if err != nil { - ExitWithError(ExitInvalidInput, err) - } - // TODO: enable grpc.WithTransportCredentials(creds) - conn, err := grpc.Dial(endpoint, grpc.WithInsecure()) - if err != nil { - ExitWithError(ExitBadConnection, err) - } - - wAPI := pb.NewWatchClient(conn) - wStream, err := wAPI.Watch(context.TODO()) + wStream, err := mustClient(cmd).Watch.Watch(context.TODO()) if err != nil { ExitWithError(ExitBadConnection, err) }