etcdctl: respect -write-out=json for snapshot status

release-3.0
Anthony Romano 2016-04-13 13:37:32 -07:00
parent 15e865e024
commit b90e30b28e
3 changed files with 27 additions and 22 deletions

View File

@ -53,16 +53,7 @@ type secureCfg struct {
var display printer = &simplePrinter{}
func mustClientFromCmd(cmd *cobra.Command) *clientv3.Client {
flags.SetPflagsFromEnv("ETCDCTL", cmd.InheritedFlags())
endpoints, err := cmd.Flags().GetStringSlice("endpoints")
if err != nil {
ExitWithError(ExitError, err)
}
dialTimeout := dialTimeoutFromCmd(cmd)
sec := secureCfgFromCmd(cmd)
func initDisplayFromCmd(cmd *cobra.Command) {
isHex, err := cmd.Flags().GetBool("hex")
if err != nil {
ExitWithError(ExitError, err)
@ -74,6 +65,19 @@ func mustClientFromCmd(cmd *cobra.Command) *clientv3.Client {
if display = NewPrinter(outputType, isHex); display == nil {
ExitWithError(ExitBadFeature, errors.New("unsupported output format"))
}
}
func mustClientFromCmd(cmd *cobra.Command) *clientv3.Client {
flags.SetPflagsFromEnv("ETCDCTL", cmd.InheritedFlags())
endpoints, err := cmd.Flags().GetStringSlice("endpoints")
if err != nil {
ExitWithError(ExitError, err)
}
dialTimeout := dialTimeoutFromCmd(cmd)
sec := secureCfgFromCmd(cmd)
initDisplayFromCmd(cmd)
return mustClient(endpoints, dialTimeout, sec)
}

View File

@ -153,10 +153,10 @@ func (s *simplePrinter) DBStatus(ds dbstatus) {
table.SetHeader([]string{"hash", "revision", "total keys", "total size"})
table.Append([]string{
fmt.Sprintf("%x", ds.hash),
fmt.Sprint(ds.revision),
fmt.Sprint(ds.totalKey),
humanize.Bytes(uint64(ds.totalSize)),
fmt.Sprintf("%x", ds.Hash),
fmt.Sprint(ds.Revision),
fmt.Sprint(ds.TotalKey),
humanize.Bytes(uint64(ds.TotalSize)),
})
table.Render()

View File

@ -134,6 +134,7 @@ func snapshotStatusCommandFunc(cmd *cobra.Command, args []string) {
err := fmt.Errorf("snapshot status requires exactly one argument")
ExitWithError(ExitBadArgs, err)
}
initDisplayFromCmd(cmd)
ds := dbStatus(args[0])
display.DBStatus(ds)
}
@ -289,10 +290,10 @@ func makeDB(snapdir, dbfile string) {
}
type dbstatus struct {
hash uint32
revision int64
totalKey int
totalSize int64
Hash uint32 `json:"hash"`
Revision int64 `json:"revision"`
TotalKey int `json:"totalKey"`
TotalSize int64 `json:"totalSize"`
}
func dbStatus(p string) dbstatus {
@ -306,7 +307,7 @@ func dbStatus(p string) dbstatus {
h := crc32.New(crc32.MakeTable(crc32.Castagnoli))
err = db.View(func(tx *bolt.Tx) error {
ds.totalSize = tx.Size()
ds.TotalSize = tx.Size()
c := tx.Cursor()
for next, _ := c.First(); next != nil; next, _ = c.Next() {
b := tx.Bucket(next)
@ -320,9 +321,9 @@ func dbStatus(p string) dbstatus {
h.Write(v)
if iskeyb {
rev := bytesToRev(k)
ds.revision = rev.main
ds.Revision = rev.main
}
ds.totalKey++
ds.TotalKey++
return nil
})
}
@ -333,7 +334,7 @@ func dbStatus(p string) dbstatus {
ExitWithError(ExitError, err)
}
ds.hash = h.Sum32()
ds.Hash = h.Sum32()
return ds
}