mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdctlv3: member list now supports json
This commit is contained in:
parent
c37cd1f0a1
commit
56d7899c20
@ -16,11 +16,9 @@ package command
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/olekukonko/tablewriter"
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/spf13/cobra"
|
||||
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
||||
)
|
||||
@ -168,24 +166,5 @@ func memberListCommandFunc(cmd *cobra.Command, args []string) {
|
||||
ExitWithError(ExitError, err)
|
||||
}
|
||||
|
||||
table := tablewriter.NewWriter(os.Stdout)
|
||||
table.SetHeader([]string{"ID", "Status", "Name", "Peer Addrs", "Client Addrs", "Is Leader"})
|
||||
|
||||
for _, m := range resp.Members {
|
||||
status := "started"
|
||||
if len(m.Name) == 0 {
|
||||
status = "unstarted"
|
||||
}
|
||||
|
||||
table.Append([]string{
|
||||
fmt.Sprintf("%x", m.ID),
|
||||
status,
|
||||
m.Name,
|
||||
strings.Join(m.PeerURLs, ","),
|
||||
strings.Join(m.ClientURLs, ","),
|
||||
fmt.Sprint(m.IsLeader),
|
||||
})
|
||||
}
|
||||
|
||||
table.Render()
|
||||
display.MemberList(*resp)
|
||||
}
|
||||
|
@ -16,12 +16,15 @@ package command
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
v3 "github.com/coreos/etcd/clientv3"
|
||||
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
||||
spb "github.com/coreos/etcd/storage/storagepb"
|
||||
"github.com/olekukonko/tablewriter"
|
||||
)
|
||||
|
||||
type printer interface {
|
||||
@ -30,6 +33,8 @@ type printer interface {
|
||||
Put(v3.PutResponse)
|
||||
Txn(v3.TxnResponse)
|
||||
Watch(v3.WatchResponse)
|
||||
|
||||
MemberList(v3.MemberListResponse)
|
||||
}
|
||||
|
||||
func NewPrinter(printerType string, isHex bool) printer {
|
||||
@ -91,6 +96,29 @@ func (s *simplePrinter) Watch(resp v3.WatchResponse) {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *simplePrinter) MemberList(resp v3.MemberListResponse) {
|
||||
table := tablewriter.NewWriter(os.Stdout)
|
||||
table.SetHeader([]string{"ID", "Status", "Name", "Peer Addrs", "Client Addrs", "Is Leader"})
|
||||
|
||||
for _, m := range resp.Members {
|
||||
status := "started"
|
||||
if len(m.Name) == 0 {
|
||||
status = "unstarted"
|
||||
}
|
||||
|
||||
table.Append([]string{
|
||||
fmt.Sprintf("%x", m.ID),
|
||||
status,
|
||||
m.Name,
|
||||
strings.Join(m.PeerURLs, ","),
|
||||
strings.Join(m.ClientURLs, ","),
|
||||
fmt.Sprint(m.IsLeader),
|
||||
})
|
||||
}
|
||||
|
||||
table.Render()
|
||||
}
|
||||
|
||||
type jsonPrinter struct{}
|
||||
|
||||
func (p *jsonPrinter) Del(r v3.DeleteResponse) { printJSON(r) }
|
||||
@ -99,9 +127,10 @@ func (p *jsonPrinter) Get(r v3.GetResponse) {
|
||||
printJSON(kv)
|
||||
}
|
||||
}
|
||||
func (p *jsonPrinter) Put(r v3.PutResponse) { printJSON(r) }
|
||||
func (p *jsonPrinter) Txn(r v3.TxnResponse) { printJSON(r) }
|
||||
func (p *jsonPrinter) Watch(r v3.WatchResponse) { printJSON(r) }
|
||||
func (p *jsonPrinter) Put(r v3.PutResponse) { printJSON(r) }
|
||||
func (p *jsonPrinter) Txn(r v3.TxnResponse) { printJSON(r) }
|
||||
func (p *jsonPrinter) Watch(r v3.WatchResponse) { printJSON(r) }
|
||||
func (p *jsonPrinter) MemberList(r v3.MemberListResponse) { printJSON(r) }
|
||||
|
||||
func printJSON(v interface{}) {
|
||||
b, err := json.Marshal(v)
|
||||
@ -121,21 +150,29 @@ type pbMarshal interface {
|
||||
func (p *pbPrinter) Del(r v3.DeleteResponse) {
|
||||
printPB((*pb.DeleteRangeResponse)(&r))
|
||||
}
|
||||
|
||||
func (p *pbPrinter) Get(r v3.GetResponse) {
|
||||
printPB((*pb.RangeResponse)(&r))
|
||||
}
|
||||
|
||||
func (p *pbPrinter) Put(r v3.PutResponse) {
|
||||
printPB((*pb.PutResponse)(&r))
|
||||
}
|
||||
|
||||
func (p *pbPrinter) Txn(r v3.TxnResponse) {
|
||||
printPB((*pb.TxnResponse)(&r))
|
||||
}
|
||||
|
||||
func (p *pbPrinter) Watch(r v3.WatchResponse) {
|
||||
for _, ev := range r.Events {
|
||||
printPB((*spb.Event)(ev))
|
||||
}
|
||||
}
|
||||
|
||||
func (pb *pbPrinter) MemberList(r v3.MemberListResponse) {
|
||||
ExitWithError(ExitBadFeature, errors.New("only support simple or json as output format"))
|
||||
}
|
||||
|
||||
func printPB(m pbMarshal) {
|
||||
b, err := m.Marshal()
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user