mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdctl: support query count only of specified prefix
This commit is contained in:
parent
0941cfc11d
commit
aa7b056a77
@ -31,6 +31,7 @@ var (
|
|||||||
getFromKey bool
|
getFromKey bool
|
||||||
getRev int64
|
getRev int64
|
||||||
getKeysOnly bool
|
getKeysOnly bool
|
||||||
|
getCountOnly bool
|
||||||
printValueOnly bool
|
printValueOnly bool
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -50,6 +51,7 @@ func NewGetCommand() *cobra.Command {
|
|||||||
cmd.Flags().BoolVar(&getFromKey, "from-key", false, "Get keys that are greater than or equal to the given key using byte compare")
|
cmd.Flags().BoolVar(&getFromKey, "from-key", false, "Get keys that are greater than or equal to the given key using byte compare")
|
||||||
cmd.Flags().Int64Var(&getRev, "rev", 0, "Specify the kv revision")
|
cmd.Flags().Int64Var(&getRev, "rev", 0, "Specify the kv revision")
|
||||||
cmd.Flags().BoolVar(&getKeysOnly, "keys-only", false, "Get only the keys")
|
cmd.Flags().BoolVar(&getKeysOnly, "keys-only", false, "Get only the keys")
|
||||||
|
cmd.Flags().BoolVar(&getCountOnly, "count-only", false, "Get only the count")
|
||||||
cmd.Flags().BoolVar(&printValueOnly, "print-value-only", false, `Only write values when using the "simple" output format`)
|
cmd.Flags().BoolVar(&printValueOnly, "print-value-only", false, `Only write values when using the "simple" output format`)
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
@ -64,6 +66,12 @@ func getCommandFunc(cmd *cobra.Command, args []string) {
|
|||||||
ExitWithError(ExitError, err)
|
ExitWithError(ExitError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if getCountOnly {
|
||||||
|
if _, fields := display.(*fieldsPrinter); !fields {
|
||||||
|
ExitWithError(ExitBadArgs, fmt.Errorf("--count-only is only for `--write-out=fields`"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if printValueOnly {
|
if printValueOnly {
|
||||||
dp, simple := (display).(*simplePrinter)
|
dp, simple := (display).(*simplePrinter)
|
||||||
if !simple {
|
if !simple {
|
||||||
@ -83,6 +91,10 @@ func getGetOp(args []string) (string, []clientv3.OpOption) {
|
|||||||
ExitWithError(ExitBadArgs, fmt.Errorf("`--prefix` and `--from-key` cannot be set at the same time, choose one"))
|
ExitWithError(ExitBadArgs, fmt.Errorf("`--prefix` and `--from-key` cannot be set at the same time, choose one"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if getKeysOnly && getCountOnly {
|
||||||
|
ExitWithError(ExitBadArgs, fmt.Errorf("`--keys-only` and `--count-only` cannot be set at the same time, choose one"))
|
||||||
|
}
|
||||||
|
|
||||||
opts := []clientv3.OpOption{}
|
opts := []clientv3.OpOption{}
|
||||||
switch getConsistency {
|
switch getConsistency {
|
||||||
case "s":
|
case "s":
|
||||||
@ -159,5 +171,9 @@ func getGetOp(args []string) (string, []clientv3.OpOption) {
|
|||||||
opts = append(opts, clientv3.WithKeysOnly())
|
opts = append(opts, clientv3.WithKeysOnly())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if getCountOnly {
|
||||||
|
opts = append(opts, clientv3.WithCountOnly())
|
||||||
|
}
|
||||||
|
|
||||||
return key, opts
|
return key, opts
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user